regexp_parser 1.7.1 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +157 -1
  3. data/Gemfile +6 -1
  4. data/LICENSE +1 -1
  5. data/README.md +38 -32
  6. data/Rakefile +18 -27
  7. data/lib/regexp_parser/error.rb +4 -0
  8. data/lib/regexp_parser/expression/base.rb +123 -0
  9. data/lib/regexp_parser/expression/classes/anchor.rb +0 -2
  10. data/lib/regexp_parser/expression/classes/{backref.rb → backreference.rb} +5 -0
  11. data/lib/regexp_parser/expression/classes/{set → character_set}/intersection.rb +0 -0
  12. data/lib/regexp_parser/expression/classes/{set → character_set}/range.rb +2 -1
  13. data/lib/regexp_parser/expression/classes/{set.rb → character_set.rb} +0 -0
  14. data/lib/regexp_parser/expression/classes/conditional.rb +11 -1
  15. data/lib/regexp_parser/expression/classes/{escape.rb → escape_sequence.rb} +13 -7
  16. data/lib/regexp_parser/expression/classes/free_space.rb +2 -4
  17. data/lib/regexp_parser/expression/classes/group.rb +28 -3
  18. data/lib/regexp_parser/expression/classes/literal.rb +1 -5
  19. data/lib/regexp_parser/expression/classes/property.rb +1 -3
  20. data/lib/regexp_parser/expression/classes/root.rb +4 -17
  21. data/lib/regexp_parser/expression/classes/type.rb +0 -2
  22. data/lib/regexp_parser/expression/methods/match_length.rb +2 -2
  23. data/lib/regexp_parser/expression/methods/strfregexp.rb +1 -1
  24. data/lib/regexp_parser/expression/methods/traverse.rb +2 -2
  25. data/lib/regexp_parser/expression/quantifier.rb +11 -2
  26. data/lib/regexp_parser/expression/sequence.rb +3 -20
  27. data/lib/regexp_parser/expression/subexpression.rb +1 -2
  28. data/lib/regexp_parser/expression.rb +7 -139
  29. data/lib/regexp_parser/lexer.rb +13 -11
  30. data/lib/regexp_parser/parser.rb +325 -344
  31. data/lib/regexp_parser/scanner/char_type.rl +11 -11
  32. data/lib/regexp_parser/scanner/properties/long.csv +604 -0
  33. data/lib/regexp_parser/scanner/properties/short.csv +242 -0
  34. data/lib/regexp_parser/scanner/property.rl +2 -2
  35. data/lib/regexp_parser/scanner/scanner.rl +235 -255
  36. data/lib/regexp_parser/scanner.rb +1324 -1387
  37. data/lib/regexp_parser/syntax/any.rb +4 -6
  38. data/lib/regexp_parser/syntax/base.rb +13 -15
  39. data/lib/regexp_parser/syntax/token/anchor.rb +15 -0
  40. data/lib/regexp_parser/syntax/{tokens → token}/assertion.rb +2 -2
  41. data/lib/regexp_parser/syntax/token/backreference.rb +30 -0
  42. data/lib/regexp_parser/syntax/{tokens → token}/character_set.rb +2 -2
  43. data/lib/regexp_parser/syntax/{tokens → token}/character_type.rb +3 -3
  44. data/lib/regexp_parser/syntax/{tokens → token}/conditional.rb +3 -3
  45. data/lib/regexp_parser/syntax/token/escape.rb +31 -0
  46. data/lib/regexp_parser/syntax/{tokens → token}/group.rb +7 -7
  47. data/lib/regexp_parser/syntax/{tokens → token}/keep.rb +1 -1
  48. data/lib/regexp_parser/syntax/{tokens → token}/meta.rb +2 -2
  49. data/lib/regexp_parser/syntax/{tokens → token}/posix_class.rb +3 -3
  50. data/lib/regexp_parser/syntax/token/quantifier.rb +35 -0
  51. data/lib/regexp_parser/syntax/token/unicode_property.rb +696 -0
  52. data/lib/regexp_parser/syntax/token.rb +45 -0
  53. data/lib/regexp_parser/syntax/version_lookup.rb +4 -4
  54. data/lib/regexp_parser/syntax/versions/1.8.6.rb +2 -2
  55. data/lib/regexp_parser/syntax/versions/1.9.1.rb +1 -1
  56. data/lib/regexp_parser/syntax/versions/3.1.0.rb +10 -0
  57. data/lib/regexp_parser/syntax.rb +8 -6
  58. data/lib/regexp_parser/token.rb +9 -20
  59. data/lib/regexp_parser/version.rb +1 -1
  60. data/lib/regexp_parser.rb +0 -2
  61. data/regexp_parser.gemspec +20 -22
  62. metadata +34 -165
  63. data/lib/regexp_parser/scanner/properties/long.yml +0 -594
  64. data/lib/regexp_parser/scanner/properties/short.yml +0 -237
  65. data/lib/regexp_parser/syntax/tokens/anchor.rb +0 -15
  66. data/lib/regexp_parser/syntax/tokens/backref.rb +0 -24
  67. data/lib/regexp_parser/syntax/tokens/escape.rb +0 -30
  68. data/lib/regexp_parser/syntax/tokens/quantifier.rb +0 -35
  69. data/lib/regexp_parser/syntax/tokens/unicode_property.rb +0 -675
  70. data/lib/regexp_parser/syntax/tokens.rb +0 -45
  71. data/spec/expression/base_spec.rb +0 -94
  72. data/spec/expression/clone_spec.rb +0 -120
  73. data/spec/expression/conditional_spec.rb +0 -89
  74. data/spec/expression/free_space_spec.rb +0 -27
  75. data/spec/expression/methods/match_length_spec.rb +0 -161
  76. data/spec/expression/methods/match_spec.rb +0 -25
  77. data/spec/expression/methods/strfregexp_spec.rb +0 -224
  78. data/spec/expression/methods/tests_spec.rb +0 -99
  79. data/spec/expression/methods/traverse_spec.rb +0 -161
  80. data/spec/expression/options_spec.rb +0 -128
  81. data/spec/expression/root_spec.rb +0 -9
  82. data/spec/expression/sequence_spec.rb +0 -9
  83. data/spec/expression/subexpression_spec.rb +0 -50
  84. data/spec/expression/to_h_spec.rb +0 -26
  85. data/spec/expression/to_s_spec.rb +0 -100
  86. data/spec/lexer/all_spec.rb +0 -22
  87. data/spec/lexer/conditionals_spec.rb +0 -53
  88. data/spec/lexer/delimiters_spec.rb +0 -68
  89. data/spec/lexer/escapes_spec.rb +0 -14
  90. data/spec/lexer/keep_spec.rb +0 -10
  91. data/spec/lexer/literals_spec.rb +0 -89
  92. data/spec/lexer/nesting_spec.rb +0 -99
  93. data/spec/lexer/refcalls_spec.rb +0 -55
  94. data/spec/parser/all_spec.rb +0 -43
  95. data/spec/parser/alternation_spec.rb +0 -88
  96. data/spec/parser/anchors_spec.rb +0 -17
  97. data/spec/parser/conditionals_spec.rb +0 -179
  98. data/spec/parser/errors_spec.rb +0 -30
  99. data/spec/parser/escapes_spec.rb +0 -121
  100. data/spec/parser/free_space_spec.rb +0 -130
  101. data/spec/parser/groups_spec.rb +0 -108
  102. data/spec/parser/keep_spec.rb +0 -6
  103. data/spec/parser/posix_classes_spec.rb +0 -8
  104. data/spec/parser/properties_spec.rb +0 -115
  105. data/spec/parser/quantifiers_spec.rb +0 -52
  106. data/spec/parser/refcalls_spec.rb +0 -112
  107. data/spec/parser/set/intersections_spec.rb +0 -127
  108. data/spec/parser/set/ranges_spec.rb +0 -111
  109. data/spec/parser/sets_spec.rb +0 -178
  110. data/spec/parser/types_spec.rb +0 -18
  111. data/spec/scanner/all_spec.rb +0 -18
  112. data/spec/scanner/anchors_spec.rb +0 -21
  113. data/spec/scanner/conditionals_spec.rb +0 -128
  114. data/spec/scanner/delimiters_spec.rb +0 -52
  115. data/spec/scanner/errors_spec.rb +0 -67
  116. data/spec/scanner/escapes_spec.rb +0 -53
  117. data/spec/scanner/free_space_spec.rb +0 -133
  118. data/spec/scanner/groups_spec.rb +0 -52
  119. data/spec/scanner/keep_spec.rb +0 -10
  120. data/spec/scanner/literals_spec.rb +0 -49
  121. data/spec/scanner/meta_spec.rb +0 -18
  122. data/spec/scanner/properties_spec.rb +0 -64
  123. data/spec/scanner/quantifiers_spec.rb +0 -20
  124. data/spec/scanner/refcalls_spec.rb +0 -36
  125. data/spec/scanner/sets_spec.rb +0 -102
  126. data/spec/scanner/types_spec.rb +0 -14
  127. data/spec/spec_helper.rb +0 -15
  128. data/spec/support/runner.rb +0 -42
  129. data/spec/support/shared_examples.rb +0 -77
  130. data/spec/support/warning_extractor.rb +0 -60
  131. data/spec/syntax/syntax_spec.rb +0 -48
  132. data/spec/syntax/syntax_token_map_spec.rb +0 -23
  133. data/spec/syntax/versions/1.8.6_spec.rb +0 -17
  134. data/spec/syntax/versions/1.9.1_spec.rb +0 -10
  135. data/spec/syntax/versions/1.9.3_spec.rb +0 -9
  136. data/spec/syntax/versions/2.0.0_spec.rb +0 -13
  137. data/spec/syntax/versions/2.2.0_spec.rb +0 -9
  138. data/spec/syntax/versions/aliases_spec.rb +0 -37
  139. data/spec/token/token_spec.rb +0 -85
@@ -1,19 +1,21 @@
1
1
  # -*- warn-indent:false; -*-
2
2
 
3
- # line 1 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3
+ # line 1 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
4
4
 
5
- # line 676 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
5
+ # line 649 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
6
6
 
7
7
 
8
8
  # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
9
9
  # This file was generated from lib/regexp_parser/scanner/scanner.rl
10
10
 
11
+ require 'regexp_parser/error'
12
+
11
13
  class Regexp::Scanner
12
14
  # General scanner error (catch all)
13
- class ScannerError < StandardError; end
15
+ class ScannerError < Regexp::Parser::Error; end
14
16
 
15
17
  # Base for all scanner validation errors
16
- class ValidationError < StandardError
18
+ class ValidationError < Regexp::Parser::Error
17
19
  def initialize(reason)
18
20
  super reason
19
21
  end
@@ -67,21 +69,16 @@ class Regexp::Scanner
67
69
  #
68
70
  # This method may raise errors if a syntax error is encountered.
69
71
  # --------------------------------------------------------------------------
70
- def self.scan(input_object, &block)
71
- new.scan(input_object, &block)
72
+ def self.scan(input_object, options: nil, &block)
73
+ new.scan(input_object, options: options, &block)
72
74
  end
73
75
 
74
- def scan(input_object, &block)
76
+ def scan(input_object, options: nil, &block)
75
77
  self.literal = nil
76
78
  stack = []
77
79
 
78
- if input_object.is_a?(Regexp)
79
- input = input_object.source
80
- self.free_spacing = (input_object.options & Regexp::EXTENDED != 0)
81
- else
82
- input = input_object
83
- self.free_spacing = false
84
- end
80
+ input = input_object.is_a?(Regexp) ? input_object.source : input_object
81
+ self.free_spacing = free_spacing?(input_object, options)
85
82
  self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
86
83
 
87
84
  data = input.unpack("c*") if input.is_a?(String)
@@ -93,73 +90,77 @@ class Regexp::Scanner
93
90
  self.set_depth = 0
94
91
  self.group_depth = 0
95
92
  self.conditional_stack = []
93
+ self.char_pos = 0
96
94
 
97
95
 
98
- # line 98 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
96
+ # line 96 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
99
97
  class << self
100
98
  attr_accessor :_re_scanner_trans_keys
101
99
  private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
102
100
  end
103
101
  self._re_scanner_trans_keys = [
104
102
  0, 0, -128, -65, -128, -65,
105
- -128, -65, -128, -65, -128,
106
- -65, -128, -65, 10, 10,
107
- 41, 41, 39, 122, 33, 122,
108
- 48, 122, 39, 60, 39,
109
- 122, 48, 57, 39, 57,
110
- 48, 57, 39, 57, 39, 122,
111
- 43, 122, 48, 57, 48,
112
- 62, 48, 57, 43, 62,
113
- 43, 122, 48, 57, 48, 125,
114
- 44, 125, 123, 123, 9,
115
- 122, 9, 125, 9, 122,
116
- -128, -65, -128, -65, 38, 38,
117
- 45, 122, 45, 122, 93,
118
- 93, 94, 120, 97, 120,
119
- 108, 115, 110, 112, 117, 117,
120
- 109, 109, 58, 58, 93,
121
- 93, 104, 104, 97, 97,
122
- 99, 99, 105, 105, 105, 105,
123
- 108, 108, 97, 97, 110,
124
- 110, 107, 107, 110, 110,
125
- 116, 116, 114, 114, 108, 108,
126
- 105, 105, 103, 103, 105,
127
- 105, 116, 116, 114, 114,
128
- 97, 97, 112, 112, 104, 104,
129
- 111, 111, 119, 119, 101,
130
- 101, 114, 114, 114, 117,
131
- 105, 105, 110, 110, 110, 110,
132
- 99, 99, 112, 112, 97,
133
- 97, 99, 99, 101, 101,
134
- 112, 112, 112, 112, 111, 111,
135
- 114, 114, 100, 100, 100,
136
- 100, 65, 122, 61, 61,
137
- 93, 93, 45, 45, 92, 92,
103
+ -128, -65, 41, 41, 39,
104
+ 57, 39, 39, 33, 62,
105
+ 62, 62, 39, 60, 39, 57,
106
+ 39, 39, 48, 57, 39,
107
+ 57, 39, 57, 48, 57,
108
+ 39, 39, 45, 62, 62, 62,
109
+ 48, 57, 48, 62, 43,
110
+ 62, 48, 57, 62, 62,
111
+ 39, 60, 39, 57, 39, 39,
112
+ 48, 57, 39, 57, 39,
113
+ 57, 48, 57, 45, 62,
114
+ 62, 62, 48, 57, 48, 62,
115
+ 43, 62, 48, 57, 48,
116
+ 57, 48, 125, 44, 125,
117
+ 123, 123, 9, 122, 9, 125,
118
+ 9, 122, -128, -65, -128,
119
+ -65, 38, 38, 94, 120,
120
+ 97, 120, 108, 115, 110, 112,
121
+ 117, 117, 109, 109, 58,
122
+ 58, 93, 93, 104, 104,
123
+ 97, 97, 99, 99, 105, 105,
124
+ 105, 105, 108, 108, 97,
125
+ 97, 110, 110, 107, 107,
126
+ 110, 110, 116, 116, 114, 114,
127
+ 108, 108, 105, 105, 103,
128
+ 103, 105, 105, 116, 116,
129
+ 114, 114, 97, 97, 112, 112,
130
+ 104, 104, 111, 111, 119,
131
+ 119, 101, 101, 114, 114,
132
+ 114, 117, 105, 105, 110, 110,
133
+ 110, 110, 99, 99, 112,
134
+ 112, 97, 97, 99, 99,
135
+ 101, 101, 112, 112, 112, 112,
136
+ 111, 111, 114, 114, 100,
137
+ 100, 100, 100, -128, -65,
138
+ -128, -65, 45, 45, 92, 92,
138
139
  92, 92, 45, 45, 92,
139
140
  92, 92, 92, 48, 123,
140
141
  48, 102, 48, 102, 48, 102,
141
142
  48, 102, 9, 125, 9,
142
143
  125, 9, 125, 9, 125,
143
144
  9, 125, 9, 125, 48, 123,
144
- 41, 41, 39, 122, 41,
145
- 57, 48, 122, -128, 127,
146
- -62, -33, -32, -17, -16, -12,
147
- 1, 127, 1, 127, 9,
148
- 32, 33, 126, 10, 126,
149
- 63, 63, 33, 126, 33, 126,
150
- 43, 63, 43, 63, 43,
151
- 63, 65, 122, 44, 57,
152
- 43, 63, 68, 119, 80, 112,
153
- -62, 125, -128, -65, -128,
154
- -65, -128, -65, 38, 38,
155
- 38, 93, 46, 61, 48, 122,
156
- 36, 125, 48, 55, 48,
157
- 55, 77, 77, 45, 45,
158
- 0, 0, 67, 99, 45, 45,
159
- 0, 0, 92, 92, 48,
160
- 102, 39, 60, 39, 122,
161
- 49, 57, 41, 57, 48, 122,
162
- 0
145
+ 39, 39, 41, 41, 41,
146
+ 57, 62, 62, -128, 127,
147
+ -62, -12, 1, 127, 1, 127,
148
+ 9, 32, 33, 126, 10,
149
+ 10, 63, 63, 33, 126,
150
+ 33, 126, 62, 62, 43, 63,
151
+ 43, 63, 43, 63, 65,
152
+ 122, 44, 57, 43, 63,
153
+ 68, 119, 80, 112, -62, 125,
154
+ -128, -65, -128, -65, -128,
155
+ -65, 38, 38, 38, 93,
156
+ 58, 58, 67, 120, -62, 125,
157
+ -128, -65, -128, -65, -128,
158
+ -65, 48, 55, 48, 55,
159
+ 77, 77, 45, 45, 0, 0,
160
+ 67, 99, 45, 45, 0,
161
+ 0, 92, 92, 48, 102,
162
+ 39, 60, 39, 57, 49, 57,
163
+ 41, 57, 45, 62, 0
163
164
  ]
164
165
 
165
166
  class << self
@@ -167,26 +168,27 @@ class << self
167
168
  private :_re_scanner_key_spans, :_re_scanner_key_spans=
168
169
  end
169
170
  self._re_scanner_key_spans = [
170
- 0, 64, 64, 64, 64, 64, 64, 1,
171
- 1, 84, 90, 75, 22, 84, 10, 19,
172
- 10, 19, 84, 80, 10, 15, 10, 20,
173
- 80, 10, 78, 82, 1, 114, 117, 114,
174
- 64, 64, 1, 78, 78, 1, 27, 24,
175
- 8, 3, 1, 1, 1, 1, 1, 1,
171
+ 0, 64, 64, 64, 1, 19, 1, 30,
172
+ 1, 22, 19, 1, 10, 19, 19, 10,
173
+ 1, 18, 1, 10, 15, 20, 10, 1,
174
+ 22, 19, 1, 10, 19, 19, 10, 18,
175
+ 1, 10, 15, 20, 10, 10, 78, 82,
176
+ 1, 114, 117, 114, 64, 64, 1, 27,
177
+ 24, 8, 3, 1, 1, 1, 1, 1,
176
178
  1, 1, 1, 1, 1, 1, 1, 1,
177
179
  1, 1, 1, 1, 1, 1, 1, 1,
178
- 1, 1, 1, 1, 1, 1, 1, 4,
179
180
  1, 1, 1, 1, 1, 1, 1, 1,
180
- 1, 1, 1, 1, 1, 1, 58, 1,
181
- 1, 1, 1, 1, 1, 1, 1, 76,
181
+ 4, 1, 1, 1, 1, 1, 1, 1,
182
+ 1, 1, 1, 1, 1, 1, 1, 64,
183
+ 64, 1, 1, 1, 1, 1, 1, 76,
182
184
  55, 55, 55, 55, 117, 117, 117, 117,
183
- 117, 117, 76, 1, 84, 17, 75, 256,
184
- 30, 16, 5, 127, 127, 24, 94, 117,
185
- 1, 94, 94, 21, 21, 21, 58, 14,
186
- 21, 52, 33, 188, 64, 64, 64, 1,
187
- 56, 16, 75, 90, 8, 8, 1, 1,
188
- 0, 33, 1, 0, 1, 55, 22, 84,
189
- 9, 17, 75
185
+ 117, 117, 76, 1, 1, 17, 1, 256,
186
+ 51, 127, 127, 24, 94, 1, 1, 94,
187
+ 94, 1, 21, 21, 21, 58, 14, 21,
188
+ 52, 33, 188, 64, 64, 64, 1, 56,
189
+ 1, 54, 188, 64, 64, 64, 8, 8,
190
+ 1, 1, 0, 33, 1, 0, 1, 55,
191
+ 22, 19, 9, 17, 18
190
192
  ]
191
193
 
192
194
  class << self
@@ -194,26 +196,27 @@ class << self
194
196
  private :_re_scanner_index_offsets, :_re_scanner_index_offsets=
195
197
  end
196
198
  self._re_scanner_index_offsets = [
197
- 0, 0, 65, 130, 195, 260, 325, 390,
198
- 392, 394, 479, 570, 646, 669, 754, 765,
199
- 785, 796, 816, 901, 982, 993, 1009, 1020,
200
- 1041, 1122, 1133, 1212, 1295, 1297, 1412, 1530,
201
- 1645, 1710, 1775, 1777, 1856, 1935, 1937, 1965,
202
- 1990, 1999, 2003, 2005, 2007, 2009, 2011, 2013,
203
- 2015, 2017, 2019, 2021, 2023, 2025, 2027, 2029,
204
- 2031, 2033, 2035, 2037, 2039, 2041, 2043, 2045,
205
- 2047, 2049, 2051, 2053, 2055, 2057, 2059, 2061,
206
- 2066, 2068, 2070, 2072, 2074, 2076, 2078, 2080,
207
- 2082, 2084, 2086, 2088, 2090, 2092, 2094, 2153,
208
- 2155, 2157, 2159, 2161, 2163, 2165, 2167, 2169,
209
- 2246, 2302, 2358, 2414, 2470, 2588, 2706, 2824,
210
- 2942, 3060, 3178, 3255, 3257, 3342, 3360, 3436,
211
- 3693, 3724, 3741, 3747, 3875, 4003, 4028, 4123,
212
- 4241, 4243, 4338, 4433, 4455, 4477, 4499, 4558,
213
- 4573, 4595, 4648, 4682, 4871, 4936, 5001, 5066,
214
- 5068, 5125, 5142, 5218, 5309, 5318, 5327, 5329,
215
- 5331, 5332, 5366, 5368, 5369, 5371, 5427, 5450,
216
- 5535, 5545, 5563
199
+ 0, 0, 65, 130, 195, 197, 217, 219,
200
+ 250, 252, 275, 295, 297, 308, 328, 348,
201
+ 359, 361, 380, 382, 393, 409, 430, 441,
202
+ 443, 466, 486, 488, 499, 519, 539, 550,
203
+ 569, 571, 582, 598, 619, 630, 641, 720,
204
+ 803, 805, 920, 1038, 1153, 1218, 1283, 1285,
205
+ 1313, 1338, 1347, 1351, 1353, 1355, 1357, 1359,
206
+ 1361, 1363, 1365, 1367, 1369, 1371, 1373, 1375,
207
+ 1377, 1379, 1381, 1383, 1385, 1387, 1389, 1391,
208
+ 1393, 1395, 1397, 1399, 1401, 1403, 1405, 1407,
209
+ 1409, 1414, 1416, 1418, 1420, 1422, 1424, 1426,
210
+ 1428, 1430, 1432, 1434, 1436, 1438, 1440, 1442,
211
+ 1507, 1572, 1574, 1576, 1578, 1580, 1582, 1584,
212
+ 1661, 1717, 1773, 1829, 1885, 2003, 2121, 2239,
213
+ 2357, 2475, 2593, 2670, 2672, 2674, 2692, 2694,
214
+ 2951, 3003, 3131, 3259, 3284, 3379, 3381, 3383,
215
+ 3478, 3573, 3575, 3597, 3619, 3641, 3700, 3715,
216
+ 3737, 3790, 3824, 4013, 4078, 4143, 4208, 4210,
217
+ 4267, 4269, 4324, 4513, 4578, 4643, 4708, 4717,
218
+ 4726, 4728, 4730, 4731, 4765, 4767, 4768, 4770,
219
+ 4826, 4849, 4869, 4879, 4897
217
220
  ]
218
221
 
219
222
  class << self
@@ -245,687 +248,597 @@ self._re_scanner_indicies = [
245
248
  3, 3, 3, 3, 3, 3, 3, 3,
246
249
  3, 3, 3, 3, 3, 3, 3, 3,
247
250
  3, 3, 3, 3, 3, 3, 3, 3,
248
- 3, 3, 0, 4, 4, 4, 4, 4,
249
- 4, 4, 4, 4, 4, 4, 4, 4,
251
+ 3, 3, 0, 6, 5, 8, 7, 7,
252
+ 7, 7, 7, 4, 7, 7, 4, 4,
250
253
  4, 4, 4, 4, 4, 4, 4, 4,
251
- 4, 4, 4, 4, 4, 4, 4, 4,
252
- 4, 4, 4, 4, 4, 4, 4, 4,
253
- 4, 4, 4, 4, 4, 4, 4, 4,
254
- 4, 4, 4, 4, 4, 4, 4, 4,
255
- 4, 4, 4, 4, 4, 4, 4, 4,
256
- 4, 4, 4, 0, 5, 5, 5, 5,
257
- 5, 5, 5, 5, 5, 5, 5, 5,
258
- 5, 5, 5, 5, 5, 5, 5, 5,
259
- 5, 5, 5, 5, 5, 5, 5, 5,
260
- 5, 5, 5, 5, 5, 5, 5, 5,
261
- 5, 5, 5, 5, 5, 5, 5, 5,
262
- 5, 5, 5, 5, 5, 5, 5, 5,
263
- 5, 5, 5, 5, 5, 5, 5, 5,
264
- 5, 5, 5, 5, 0, 6, 6, 6,
265
- 6, 6, 6, 6, 6, 6, 6, 6,
266
- 6, 6, 6, 6, 6, 6, 6, 6,
267
- 6, 6, 6, 6, 6, 6, 6, 6,
268
- 6, 6, 6, 6, 6, 6, 6, 6,
269
- 6, 6, 6, 6, 6, 6, 6, 6,
270
- 6, 6, 6, 6, 6, 6, 6, 6,
271
- 6, 6, 6, 6, 6, 6, 6, 6,
272
- 6, 6, 6, 6, 6, 0, 9, 8,
273
- 12, 11, 13, 10, 10, 10, 10, 10,
274
- 10, 10, 10, 14, 14, 14, 14, 14,
275
- 14, 14, 14, 14, 14, 10, 10, 10,
276
- 10, 10, 10, 10, 14, 14, 14, 14,
277
- 14, 14, 14, 14, 14, 14, 14, 14,
278
- 14, 14, 14, 14, 14, 14, 14, 14,
279
- 14, 14, 14, 14, 14, 14, 10, 10,
280
- 10, 10, 14, 10, 14, 14, 14, 14,
281
- 14, 14, 14, 14, 14, 14, 14, 14,
282
- 14, 14, 14, 14, 14, 14, 14, 14,
283
- 14, 14, 14, 14, 14, 14, 10, 15,
284
- 10, 10, 10, 10, 10, 10, 10, 10,
285
- 10, 10, 10, 10, 10, 10, 16, 16,
286
- 16, 16, 16, 16, 16, 16, 16, 16,
287
- 10, 10, 10, 15, 13, 10, 10, 16,
288
- 16, 16, 16, 16, 16, 16, 16, 16,
289
- 16, 16, 16, 16, 16, 16, 16, 16,
290
- 16, 16, 16, 16, 16, 16, 16, 16,
291
- 16, 10, 10, 10, 10, 16, 10, 16,
292
- 16, 16, 16, 16, 16, 16, 16, 16,
293
- 16, 16, 16, 16, 16, 16, 16, 16,
294
- 16, 16, 16, 16, 16, 16, 16, 16,
295
- 16, 10, 16, 16, 16, 16, 16, 16,
296
- 16, 16, 16, 16, 10, 10, 10, 10,
297
- 13, 10, 10, 16, 16, 16, 16, 16,
298
- 16, 16, 16, 16, 16, 16, 16, 16,
299
- 16, 16, 16, 16, 16, 16, 16, 16,
300
- 16, 16, 16, 16, 16, 10, 10, 10,
301
- 10, 16, 10, 16, 16, 16, 16, 16,
302
- 16, 16, 16, 16, 16, 16, 16, 16,
303
- 16, 16, 16, 16, 16, 16, 16, 16,
304
- 16, 16, 16, 16, 16, 10, 18, 17,
305
- 17, 17, 17, 17, 17, 17, 17, 17,
306
- 17, 17, 17, 17, 17, 17, 17, 17,
307
- 17, 17, 17, 19, 17, 20, 17, 17,
308
- 17, 21, 17, 22, 17, 17, 23, 23,
309
- 23, 23, 23, 23, 23, 23, 23, 23,
310
- 17, 17, 17, 17, 17, 17, 17, 23,
311
- 23, 23, 23, 23, 23, 23, 23, 23,
312
- 23, 23, 23, 23, 23, 23, 23, 23,
313
- 23, 23, 23, 23, 23, 23, 23, 23,
314
- 23, 17, 17, 17, 17, 23, 17, 23,
315
- 23, 23, 23, 23, 23, 23, 23, 23,
316
- 23, 23, 23, 23, 23, 23, 23, 23,
317
- 23, 23, 23, 23, 23, 23, 23, 23,
318
- 23, 17, 24, 24, 24, 24, 24, 24,
319
- 24, 24, 24, 24, 17, 20, 17, 17,
320
- 17, 17, 17, 17, 17, 17, 24, 24,
254
+ 7, 8, 7, 10, 9, 9, 9, 9,
255
+ 9, 9, 9, 9, 9, 9, 9, 4,
256
+ 9, 9, 4, 4, 4, 4, 4, 4,
257
+ 4, 4, 4, 4, 9, 9, 9, 10,
258
+ 8, 9, 8, 9, 12, 11, 11, 11,
259
+ 11, 11, 11, 11, 11, 11, 11, 11,
260
+ 11, 11, 11, 11, 11, 11, 11, 11,
261
+ 11, 13, 11, 15, 14, 14, 14, 14,
262
+ 14, 16, 14, 14, 17, 18, 18, 18,
263
+ 18, 18, 18, 18, 18, 18, 14, 15,
264
+ 14, 19, 18, 18, 18, 18, 18, 18,
265
+ 18, 18, 18, 11, 15, 11, 11, 11,
266
+ 11, 11, 11, 11, 11, 19, 19, 19,
267
+ 19, 19, 19, 19, 19, 19, 19, 11,
268
+ 15, 11, 11, 11, 20, 11, 20, 11,
269
+ 11, 18, 18, 18, 18, 18, 18, 18,
270
+ 18, 18, 18, 11, 19, 19, 19, 19,
271
+ 19, 19, 19, 19, 19, 19, 11, 15,
272
+ 11, 22, 21, 21, 23, 24, 24, 24,
273
+ 24, 24, 24, 24, 24, 24, 21, 21,
274
+ 21, 21, 15, 21, 15, 21, 25, 24,
321
275
  24, 24, 24, 24, 24, 24, 24, 24,
322
- 17, 24, 25, 25, 25, 25, 25, 25,
323
- 25, 25, 25, 17, 20, 17, 17, 17,
324
- 21, 17, 21, 17, 17, 25, 25, 25,
325
- 25, 25, 25, 25, 25, 25, 25, 17,
326
- 20, 17, 17, 17, 21, 17, 21, 17,
327
- 17, 23, 23, 23, 23, 23, 23, 23,
328
- 23, 23, 23, 17, 17, 17, 17, 17,
329
- 17, 17, 23, 23, 23, 23, 23, 23,
330
- 23, 23, 23, 23, 23, 23, 23, 23,
331
- 23, 23, 23, 23, 23, 23, 23, 23,
332
- 23, 23, 23, 23, 17, 17, 17, 17,
333
- 23, 17, 23, 23, 23, 23, 23, 23,
334
- 23, 23, 23, 23, 23, 23, 23, 23,
335
- 23, 23, 23, 23, 23, 23, 23, 23,
336
- 23, 23, 23, 23, 17, 26, 17, 27,
337
- 17, 17, 28, 28, 28, 28, 28, 28,
338
- 28, 28, 28, 28, 17, 17, 17, 17,
339
- 20, 17, 17, 28, 28, 28, 28, 28,
340
- 28, 28, 28, 28, 28, 28, 28, 28,
341
- 28, 28, 28, 28, 28, 28, 28, 28,
342
- 28, 28, 28, 28, 28, 17, 17, 17,
343
- 17, 28, 17, 28, 28, 28, 28, 28,
344
- 28, 28, 28, 28, 28, 28, 28, 28,
345
- 28, 28, 28, 28, 28, 28, 28, 28,
346
- 28, 28, 28, 28, 28, 17, 29, 29,
347
- 29, 29, 29, 29, 29, 29, 29, 29,
348
- 17, 29, 29, 29, 29, 29, 29, 29,
349
- 29, 29, 29, 17, 17, 17, 17, 20,
350
- 17, 29, 30, 30, 30, 30, 30, 30,
351
- 30, 30, 30, 17, 26, 17, 26, 17,
352
- 17, 30, 30, 30, 30, 30, 30, 30,
353
- 30, 30, 30, 17, 17, 17, 17, 20,
354
- 17, 26, 17, 26, 17, 17, 28, 28,
355
- 28, 28, 28, 28, 28, 28, 28, 28,
356
- 17, 17, 17, 17, 20, 17, 17, 28,
357
- 28, 28, 28, 28, 28, 28, 28, 28,
358
- 28, 28, 28, 28, 28, 28, 28, 28,
359
- 28, 28, 28, 28, 28, 28, 28, 28,
360
- 28, 17, 17, 17, 17, 28, 17, 28,
361
- 28, 28, 28, 28, 28, 28, 28, 28,
362
- 28, 28, 28, 28, 28, 28, 28, 28,
363
- 28, 28, 28, 28, 28, 28, 28, 28,
364
- 28, 17, 32, 32, 32, 32, 32, 32,
365
- 32, 32, 32, 32, 31, 32, 32, 32,
366
- 32, 32, 32, 32, 32, 32, 32, 31,
367
- 31, 31, 31, 31, 31, 31, 31, 31,
368
- 31, 31, 31, 31, 31, 31, 31, 31,
369
- 31, 31, 31, 31, 31, 31, 31, 31,
370
- 31, 31, 31, 31, 31, 31, 31, 31,
371
- 31, 31, 31, 31, 31, 31, 31, 31,
372
- 31, 31, 31, 31, 31, 31, 31, 31,
373
- 31, 31, 31, 31, 31, 31, 31, 31,
374
- 31, 31, 31, 31, 31, 31, 31, 31,
375
- 31, 31, 33, 31, 32, 31, 31, 31,
376
- 34, 34, 34, 34, 34, 34, 34, 34,
377
- 34, 34, 31, 31, 31, 31, 31, 31,
378
- 31, 31, 31, 31, 31, 31, 31, 31,
379
- 31, 31, 31, 31, 31, 31, 31, 31,
380
- 31, 31, 31, 31, 31, 31, 31, 31,
381
- 31, 31, 31, 31, 31, 31, 31, 31,
382
- 31, 31, 31, 31, 31, 31, 31, 31,
383
- 31, 31, 31, 31, 31, 31, 31, 31,
384
- 31, 31, 31, 31, 31, 31, 31, 31,
385
- 31, 31, 31, 31, 31, 33, 31, 35,
386
- 36, 37, 37, 37, 37, 37, 36, 36,
387
- 36, 36, 36, 36, 36, 36, 36, 36,
388
- 36, 36, 36, 36, 36, 36, 36, 36,
389
- 37, 36, 36, 36, 36, 36, 36, 36,
390
- 36, 36, 36, 36, 36, 37, 37, 36,
391
- 37, 37, 37, 37, 37, 37, 37, 37,
392
- 37, 37, 36, 36, 36, 37, 36, 36,
393
- 36, 37, 37, 37, 37, 37, 37, 37,
394
- 37, 37, 37, 37, 37, 37, 37, 37,
395
- 37, 37, 37, 37, 37, 37, 37, 37,
396
- 37, 37, 37, 36, 36, 36, 38, 37,
397
- 36, 37, 37, 37, 37, 37, 37, 37,
398
- 37, 37, 37, 37, 37, 37, 37, 37,
399
- 37, 37, 37, 37, 37, 37, 37, 37,
400
- 37, 37, 37, 36, 37, 37, 37, 37,
401
- 37, 36, 36, 36, 36, 36, 36, 36,
402
- 36, 36, 36, 36, 36, 36, 36, 36,
403
- 36, 36, 36, 37, 36, 36, 36, 36,
404
- 36, 36, 36, 36, 36, 36, 36, 36,
405
- 37, 37, 36, 37, 37, 37, 37, 37,
406
- 37, 37, 37, 37, 37, 36, 36, 36,
407
- 37, 36, 36, 36, 37, 37, 37, 37,
408
- 37, 37, 37, 37, 37, 37, 37, 37,
409
- 37, 37, 37, 37, 37, 37, 37, 37,
410
- 37, 37, 37, 37, 37, 37, 36, 36,
411
- 36, 36, 37, 36, 37, 37, 37, 37,
412
- 37, 37, 37, 37, 37, 37, 37, 37,
413
- 37, 37, 37, 37, 37, 37, 37, 37,
414
- 37, 37, 37, 37, 37, 37, 36, 36,
415
- 39, 36, 37, 37, 37, 37, 37, 36,
416
- 36, 36, 36, 36, 36, 36, 36, 36,
417
- 36, 36, 36, 36, 36, 36, 36, 36,
418
- 36, 37, 36, 36, 36, 36, 36, 36,
419
- 36, 36, 36, 36, 36, 36, 37, 37,
420
- 36, 37, 37, 37, 37, 37, 37, 37,
421
- 37, 37, 37, 36, 36, 36, 37, 36,
422
- 36, 36, 37, 37, 37, 37, 37, 37,
423
- 37, 37, 37, 37, 37, 37, 37, 37,
424
- 37, 37, 37, 37, 37, 37, 37, 37,
425
- 37, 37, 37, 37, 36, 36, 36, 36,
426
- 37, 36, 37, 37, 37, 37, 37, 37,
427
- 37, 37, 37, 37, 37, 37, 37, 37,
428
- 37, 37, 37, 37, 37, 37, 37, 37,
429
- 37, 37, 37, 37, 36, 41, 41, 41,
430
- 41, 41, 41, 41, 41, 41, 41, 41,
431
- 41, 41, 41, 41, 41, 41, 41, 41,
432
- 41, 41, 41, 41, 41, 41, 41, 41,
433
- 41, 41, 41, 41, 41, 41, 41, 41,
434
- 41, 41, 41, 41, 41, 41, 41, 41,
435
- 41, 41, 41, 41, 41, 41, 41, 41,
276
+ 11, 25, 25, 25, 25, 25, 25, 25,
277
+ 25, 25, 25, 11, 11, 11, 11, 15,
278
+ 11, 26, 11, 26, 11, 11, 24, 24,
279
+ 24, 24, 24, 24, 24, 24, 24, 24,
280
+ 11, 11, 11, 11, 15, 11, 25, 25,
281
+ 25, 25, 25, 25, 25, 25, 25, 25,
282
+ 11, 15, 11, 27, 11, 11, 11, 11,
283
+ 11, 11, 11, 11, 11, 11, 11, 11,
284
+ 11, 11, 11, 11, 11, 11, 11, 11,
285
+ 28, 11, 30, 29, 29, 29, 29, 29,
286
+ 31, 29, 29, 11, 32, 32, 32, 32,
287
+ 32, 32, 32, 32, 32, 29, 30, 29,
288
+ 33, 32, 32, 32, 32, 32, 32, 32,
289
+ 32, 32, 11, 30, 11, 11, 11, 11,
290
+ 11, 11, 11, 11, 33, 33, 33, 33,
291
+ 33, 33, 33, 33, 33, 33, 11, 30,
292
+ 11, 11, 11, 34, 11, 34, 11, 11,
293
+ 32, 32, 32, 32, 32, 32, 32, 32,
294
+ 32, 32, 11, 33, 33, 33, 33, 33,
295
+ 33, 33, 33, 33, 33, 11, 36, 35,
296
+ 35, 11, 37, 37, 37, 37, 37, 37,
297
+ 37, 37, 37, 35, 35, 35, 35, 30,
298
+ 35, 30, 35, 38, 37, 37, 37, 37,
299
+ 37, 37, 37, 37, 37, 11, 38, 38,
300
+ 38, 38, 38, 38, 38, 38, 38, 38,
301
+ 11, 11, 11, 11, 30, 11, 39, 11,
302
+ 39, 11, 11, 37, 37, 37, 37, 37,
303
+ 37, 37, 37, 37, 37, 11, 11, 11,
304
+ 11, 30, 11, 38, 38, 38, 38, 38,
305
+ 38, 38, 38, 38, 38, 11, 41, 41,
436
306
  41, 41, 41, 41, 41, 41, 41, 41,
437
- 41, 41, 41, 41, 41, 40, 42, 42,
438
- 42, 42, 42, 42, 42, 42, 42, 42,
439
- 42, 42, 42, 42, 42, 42, 42, 42,
440
- 42, 42, 42, 42, 42, 42, 42, 42,
441
- 42, 42, 42, 42, 42, 42, 42, 42,
442
- 42, 42, 42, 42, 42, 42, 42, 42,
443
- 42, 42, 42, 42, 42, 42, 42, 42,
444
- 42, 42, 42, 42, 42, 42, 42, 42,
445
- 42, 42, 42, 42, 42, 42, 40, 44,
446
- 43, 47, 46, 46, 46, 46, 46, 46,
307
+ 40, 41, 41, 41, 41, 41, 41, 41,
308
+ 41, 41, 41, 40, 40, 40, 40, 40,
309
+ 40, 40, 40, 40, 40, 40, 40, 40,
310
+ 40, 40, 40, 40, 40, 40, 40, 40,
311
+ 40, 40, 40, 40, 40, 40, 40, 40,
312
+ 40, 40, 40, 40, 40, 40, 40, 40,
313
+ 40, 40, 40, 40, 40, 40, 40, 40,
314
+ 40, 40, 40, 40, 40, 40, 40, 40,
315
+ 40, 40, 40, 40, 40, 40, 40, 40,
316
+ 40, 40, 40, 40, 40, 40, 42, 40,
317
+ 41, 40, 40, 40, 43, 43, 43, 43,
318
+ 43, 43, 43, 43, 43, 43, 40, 40,
319
+ 40, 40, 40, 40, 40, 40, 40, 40,
320
+ 40, 40, 40, 40, 40, 40, 40, 40,
321
+ 40, 40, 40, 40, 40, 40, 40, 40,
322
+ 40, 40, 40, 40, 40, 40, 40, 40,
323
+ 40, 40, 40, 40, 40, 40, 40, 40,
324
+ 40, 40, 40, 40, 40, 40, 40, 40,
325
+ 40, 40, 40, 40, 40, 40, 40, 40,
326
+ 40, 40, 40, 40, 40, 40, 40, 40,
327
+ 40, 42, 40, 44, 45, 46, 46, 46,
328
+ 46, 46, 45, 45, 45, 45, 45, 45,
329
+ 45, 45, 45, 45, 45, 45, 45, 45,
330
+ 45, 45, 45, 45, 46, 45, 45, 45,
331
+ 45, 45, 45, 45, 45, 45, 45, 45,
332
+ 45, 46, 46, 45, 46, 46, 46, 46,
333
+ 46, 46, 46, 46, 46, 46, 45, 45,
334
+ 45, 46, 45, 45, 45, 46, 46, 46,
447
335
  46, 46, 46, 46, 46, 46, 46, 46,
448
- 46, 46, 46, 46, 46, 47, 47, 47,
449
- 47, 47, 47, 47, 47, 47, 47, 47,
450
- 47, 47, 47, 47, 47, 47, 47, 47,
451
- 47, 47, 47, 47, 47, 47, 47, 46,
452
- 46, 46, 46, 46, 46, 47, 47, 47,
453
- 47, 47, 47, 47, 47, 47, 47, 47,
454
- 47, 47, 47, 47, 47, 47, 47, 47,
455
- 47, 47, 47, 47, 47, 47, 47, 46,
456
- 47, 48, 46, 46, 46, 46, 46, 46,
457
336
  46, 46, 46, 46, 46, 46, 46, 46,
458
- 46, 46, 46, 46, 47, 47, 47, 47,
459
- 47, 47, 47, 47, 47, 47, 47, 47,
460
- 47, 47, 47, 47, 47, 47, 47, 47,
461
- 47, 47, 47, 47, 47, 47, 46, 46,
462
- 46, 46, 46, 46, 47, 47, 47, 47,
463
- 47, 47, 47, 47, 47, 47, 47, 47,
464
- 47, 47, 47, 47, 47, 47, 47, 47,
465
- 47, 47, 47, 47, 47, 47, 46, 49,
466
- 46, 50, 46, 46, 51, 52, 53, 54,
467
- 46, 46, 55, 46, 46, 46, 46, 56,
468
- 46, 46, 46, 57, 46, 46, 58, 46,
469
- 59, 46, 60, 61, 46, 51, 52, 53,
470
- 54, 46, 46, 55, 46, 46, 46, 46,
471
- 56, 46, 46, 46, 57, 46, 46, 58,
472
- 46, 59, 46, 60, 61, 46, 62, 46,
473
- 46, 46, 46, 46, 46, 63, 46, 64,
474
- 46, 65, 46, 66, 46, 67, 46, 68,
475
- 46, 69, 46, 70, 46, 67, 46, 71,
476
- 46, 72, 46, 67, 46, 73, 46, 74,
477
- 46, 75, 46, 67, 46, 76, 46, 77,
478
- 46, 78, 46, 67, 46, 79, 46, 80,
479
- 46, 81, 46, 67, 46, 82, 46, 83,
480
- 46, 84, 46, 67, 46, 85, 46, 86,
481
- 46, 87, 46, 67, 46, 88, 46, 46,
482
- 89, 46, 90, 46, 81, 46, 91, 46,
483
- 81, 46, 92, 46, 93, 46, 94, 46,
484
- 67, 46, 95, 46, 86, 46, 96, 46,
485
- 97, 46, 67, 46, 54, 46, 98, 98,
486
- 98, 98, 98, 98, 98, 98, 98, 98,
487
- 98, 98, 98, 98, 98, 98, 98, 98,
488
- 98, 98, 98, 98, 98, 98, 98, 98,
489
- 46, 46, 46, 46, 46, 46, 98, 98,
490
- 98, 98, 98, 98, 98, 98, 98, 98,
491
- 98, 98, 98, 98, 98, 98, 98, 98,
492
- 98, 98, 98, 98, 98, 98, 98, 98,
493
- 46, 99, 46, 100, 46, 101, 36, 103,
494
- 102, 105, 102, 106, 36, 108, 107, 110,
495
- 107, 111, 111, 111, 111, 111, 111, 111,
496
- 111, 111, 111, 36, 36, 36, 36, 36,
497
- 36, 36, 111, 111, 111, 111, 111, 111,
498
- 36, 36, 36, 36, 36, 36, 36, 36,
499
- 36, 36, 36, 36, 36, 36, 36, 36,
500
- 36, 36, 36, 36, 36, 36, 36, 36,
501
- 36, 36, 111, 111, 111, 111, 111, 111,
502
- 36, 36, 36, 36, 36, 36, 36, 36,
503
- 36, 36, 36, 36, 36, 36, 36, 36,
504
- 36, 36, 36, 36, 112, 36, 113, 113,
505
- 113, 113, 113, 113, 113, 113, 113, 113,
506
- 36, 36, 36, 36, 36, 36, 36, 113,
507
- 113, 113, 113, 113, 113, 36, 36, 36,
508
- 36, 36, 36, 36, 36, 36, 36, 36,
509
- 36, 36, 36, 36, 36, 36, 36, 36,
510
- 36, 36, 36, 36, 36, 36, 36, 113,
511
- 113, 113, 113, 113, 113, 36, 114, 114,
512
- 114, 114, 114, 114, 114, 114, 114, 114,
513
- 36, 36, 36, 36, 36, 36, 36, 114,
514
- 114, 114, 114, 114, 114, 36, 36, 36,
515
- 36, 36, 36, 36, 36, 36, 36, 36,
516
- 36, 36, 36, 36, 36, 36, 36, 36,
517
- 36, 36, 36, 36, 36, 36, 36, 114,
518
- 114, 114, 114, 114, 114, 36, 115, 115,
519
- 115, 115, 115, 115, 115, 115, 115, 115,
520
- 36, 36, 36, 36, 36, 36, 36, 115,
521
- 115, 115, 115, 115, 115, 36, 36, 36,
522
- 36, 36, 36, 36, 36, 36, 36, 36,
523
- 36, 36, 36, 36, 36, 36, 36, 36,
524
- 36, 36, 36, 36, 36, 36, 36, 115,
525
- 115, 115, 115, 115, 115, 36, 116, 116,
526
- 116, 116, 116, 116, 116, 116, 116, 116,
527
- 36, 36, 36, 36, 36, 36, 36, 116,
528
- 116, 116, 116, 116, 116, 36, 36, 36,
529
- 36, 36, 36, 36, 36, 36, 36, 36,
530
- 36, 36, 36, 36, 36, 36, 36, 36,
531
- 36, 36, 36, 36, 36, 36, 36, 116,
532
- 116, 116, 116, 116, 116, 36, 112, 112,
533
- 112, 112, 112, 36, 36, 36, 36, 36,
534
- 36, 36, 36, 36, 36, 36, 36, 36,
535
- 36, 36, 36, 36, 36, 112, 36, 36,
536
- 36, 36, 36, 36, 36, 36, 36, 36,
537
- 36, 36, 36, 36, 36, 117, 117, 117,
538
- 117, 117, 117, 117, 117, 117, 117, 36,
539
- 36, 36, 36, 36, 36, 36, 117, 117,
540
- 117, 117, 117, 117, 36, 36, 36, 36,
541
- 36, 36, 36, 36, 36, 36, 36, 36,
542
- 36, 36, 36, 36, 36, 36, 36, 36,
543
- 36, 36, 36, 36, 36, 36, 117, 117,
544
- 117, 117, 117, 117, 36, 36, 36, 36,
545
- 36, 36, 36, 36, 36, 36, 36, 36,
546
- 36, 36, 36, 36, 36, 36, 36, 36,
547
- 36, 36, 115, 36, 112, 112, 112, 112,
548
- 112, 36, 36, 36, 36, 36, 36, 36,
549
- 36, 36, 36, 36, 36, 36, 36, 36,
550
- 36, 36, 36, 112, 36, 36, 36, 36,
551
- 36, 36, 36, 36, 36, 36, 36, 36,
552
- 36, 36, 36, 118, 118, 118, 118, 118,
553
- 118, 118, 118, 118, 118, 36, 36, 36,
554
- 36, 36, 36, 36, 118, 118, 118, 118,
555
- 118, 118, 36, 36, 36, 36, 36, 36,
556
- 36, 36, 36, 36, 36, 36, 36, 36,
557
- 36, 36, 36, 36, 36, 36, 36, 36,
558
- 36, 36, 36, 36, 118, 118, 118, 118,
559
- 118, 118, 36, 36, 36, 36, 36, 36,
560
- 36, 36, 36, 36, 36, 36, 36, 36,
561
- 36, 36, 36, 36, 36, 36, 36, 36,
562
- 115, 36, 112, 112, 112, 112, 112, 36,
563
- 36, 36, 36, 36, 36, 36, 36, 36,
564
- 36, 36, 36, 36, 36, 36, 36, 36,
565
- 36, 112, 36, 36, 36, 36, 36, 36,
566
- 36, 36, 36, 36, 36, 36, 36, 36,
567
- 36, 119, 119, 119, 119, 119, 119, 119,
568
- 119, 119, 119, 36, 36, 36, 36, 36,
569
- 36, 36, 119, 119, 119, 119, 119, 119,
570
- 36, 36, 36, 36, 36, 36, 36, 36,
571
- 36, 36, 36, 36, 36, 36, 36, 36,
572
- 36, 36, 36, 36, 36, 36, 36, 36,
573
- 36, 36, 119, 119, 119, 119, 119, 119,
574
- 36, 36, 36, 36, 36, 36, 36, 36,
575
- 36, 36, 36, 36, 36, 36, 36, 36,
576
- 36, 36, 36, 36, 36, 36, 115, 36,
577
- 112, 112, 112, 112, 112, 36, 36, 36,
578
- 36, 36, 36, 36, 36, 36, 36, 36,
579
- 36, 36, 36, 36, 36, 36, 36, 112,
580
- 36, 36, 36, 36, 36, 36, 36, 36,
581
- 36, 36, 36, 36, 36, 36, 36, 120,
582
- 120, 120, 120, 120, 120, 120, 120, 120,
583
- 120, 36, 36, 36, 36, 36, 36, 36,
584
- 120, 120, 120, 120, 120, 120, 36, 36,
585
- 36, 36, 36, 36, 36, 36, 36, 36,
586
- 36, 36, 36, 36, 36, 36, 36, 36,
587
- 36, 36, 36, 36, 36, 36, 36, 36,
588
- 120, 120, 120, 120, 120, 120, 36, 36,
589
- 36, 36, 36, 36, 36, 36, 36, 36,
590
- 36, 36, 36, 36, 36, 36, 36, 36,
591
- 36, 36, 36, 36, 115, 36, 112, 112,
592
- 112, 112, 112, 36, 36, 36, 36, 36,
593
- 36, 36, 36, 36, 36, 36, 36, 36,
594
- 36, 36, 36, 36, 36, 112, 36, 36,
595
- 36, 36, 36, 36, 36, 36, 36, 36,
596
- 36, 36, 36, 36, 36, 121, 121, 121,
597
- 121, 121, 121, 121, 121, 121, 121, 36,
598
- 36, 36, 36, 36, 36, 36, 121, 121,
599
- 121, 121, 121, 121, 36, 36, 36, 36,
600
- 36, 36, 36, 36, 36, 36, 36, 36,
601
- 36, 36, 36, 36, 36, 36, 36, 36,
602
- 36, 36, 36, 36, 36, 36, 121, 121,
603
- 121, 121, 121, 121, 36, 36, 36, 36,
604
- 36, 36, 36, 36, 36, 36, 36, 36,
605
- 36, 36, 36, 36, 36, 36, 36, 36,
606
- 36, 36, 115, 36, 112, 112, 112, 112,
607
- 112, 36, 36, 36, 36, 36, 36, 36,
608
- 36, 36, 36, 36, 36, 36, 36, 36,
609
- 36, 36, 36, 112, 36, 36, 36, 36,
610
- 36, 36, 36, 36, 36, 36, 36, 36,
611
- 36, 36, 36, 36, 36, 36, 36, 36,
612
- 36, 36, 36, 36, 36, 36, 36, 36,
613
- 36, 36, 36, 36, 36, 36, 36, 36,
614
- 36, 36, 36, 36, 36, 36, 36, 36,
615
- 36, 36, 36, 36, 36, 36, 36, 36,
616
- 36, 36, 36, 36, 36, 36, 36, 36,
617
- 36, 36, 36, 36, 36, 36, 36, 36,
618
- 36, 36, 36, 36, 36, 36, 36, 36,
619
- 36, 36, 36, 36, 36, 36, 36, 36,
620
- 36, 36, 36, 36, 36, 36, 36, 36,
621
- 115, 36, 123, 123, 123, 123, 123, 123,
622
- 123, 123, 123, 123, 122, 122, 122, 122,
623
- 122, 122, 122, 123, 123, 123, 123, 123,
624
- 123, 122, 122, 122, 122, 122, 122, 122,
625
- 122, 122, 122, 122, 122, 122, 122, 122,
626
- 122, 122, 122, 122, 122, 122, 122, 122,
627
- 122, 122, 122, 123, 123, 123, 123, 123,
628
- 123, 122, 122, 122, 122, 122, 122, 122,
629
- 122, 122, 122, 122, 122, 122, 122, 122,
630
- 122, 122, 122, 122, 122, 36, 122, 125,
631
- 124, 126, 124, 124, 124, 124, 124, 124,
632
- 124, 124, 127, 127, 127, 127, 127, 127,
633
- 127, 127, 127, 127, 124, 124, 124, 124,
634
- 124, 124, 124, 127, 127, 127, 127, 127,
635
- 127, 127, 127, 127, 127, 127, 127, 127,
636
- 127, 127, 127, 127, 127, 127, 127, 127,
637
- 127, 127, 127, 127, 127, 124, 124, 124,
638
- 124, 127, 124, 127, 127, 127, 127, 127,
639
- 127, 127, 127, 127, 127, 127, 127, 127,
640
- 127, 127, 127, 127, 127, 127, 127, 127,
641
- 127, 127, 127, 127, 127, 124, 125, 124,
642
- 124, 124, 124, 124, 124, 128, 128, 128,
643
- 128, 128, 128, 128, 128, 128, 128, 124,
644
- 129, 129, 129, 129, 129, 129, 129, 129,
645
- 129, 129, 124, 124, 124, 124, 126, 124,
646
- 124, 129, 129, 129, 129, 129, 129, 129,
647
- 129, 129, 129, 129, 129, 129, 129, 129,
648
- 129, 129, 129, 129, 129, 129, 129, 129,
649
- 129, 129, 129, 124, 124, 124, 124, 129,
650
- 124, 129, 129, 129, 129, 129, 129, 129,
651
- 129, 129, 129, 129, 129, 129, 129, 129,
652
- 129, 129, 129, 129, 129, 129, 129, 129,
653
- 129, 129, 129, 124, 36, 36, 36, 36,
654
- 36, 36, 36, 36, 36, 36, 36, 36,
655
- 36, 36, 36, 36, 36, 36, 36, 36,
656
- 36, 36, 36, 36, 36, 36, 36, 36,
657
- 36, 36, 36, 36, 36, 36, 36, 36,
658
- 36, 36, 36, 36, 36, 36, 36, 36,
659
- 36, 36, 36, 36, 36, 36, 36, 36,
660
- 36, 36, 36, 36, 36, 36, 36, 36,
661
- 36, 36, 36, 36, 36, 36, 130, 130,
662
- 130, 130, 130, 130, 130, 130, 130, 130,
663
- 130, 130, 130, 130, 130, 130, 130, 130,
664
- 130, 130, 130, 130, 130, 130, 130, 130,
665
- 130, 130, 130, 130, 131, 131, 131, 131,
666
- 131, 131, 131, 131, 131, 131, 131, 131,
667
- 131, 131, 131, 131, 132, 132, 132, 132,
668
- 132, 36, 36, 36, 36, 36, 36, 36,
669
- 36, 36, 36, 36, 36, 133, 133, 133,
670
- 133, 133, 133, 133, 133, 134, 134, 134,
671
- 134, 134, 133, 133, 133, 133, 133, 133,
672
- 133, 133, 133, 133, 133, 133, 133, 133,
673
- 133, 133, 133, 133, 135, 136, 136, 137,
674
- 138, 136, 136, 136, 139, 140, 141, 142,
675
- 136, 136, 143, 136, 136, 136, 136, 136,
676
- 136, 136, 136, 136, 136, 136, 136, 136,
677
- 136, 136, 136, 144, 136, 136, 136, 136,
678
- 136, 136, 136, 136, 136, 136, 136, 136,
679
- 136, 136, 136, 136, 136, 136, 136, 136,
680
- 136, 136, 136, 136, 136, 136, 136, 145,
681
- 146, 147, 148, 136, 136, 136, 136, 136,
682
- 136, 136, 136, 136, 136, 136, 136, 136,
683
- 136, 136, 136, 136, 136, 136, 136, 136,
684
- 136, 136, 136, 136, 136, 136, 136, 149,
685
- 150, 147, 136, 133, 136, 130, 130, 130,
686
- 130, 130, 130, 130, 130, 130, 130, 130,
687
- 130, 130, 130, 130, 130, 130, 130, 130,
688
- 130, 130, 130, 130, 130, 130, 130, 130,
689
- 130, 130, 130, 151, 131, 131, 131, 131,
690
- 131, 131, 131, 131, 131, 131, 131, 131,
691
- 131, 131, 131, 131, 151, 132, 132, 132,
692
- 132, 132, 151, 133, 133, 133, 133, 133,
693
- 133, 133, 133, 133, 133, 133, 133, 133,
694
- 133, 133, 133, 133, 133, 133, 133, 133,
695
- 133, 133, 133, 133, 133, 133, 133, 133,
696
- 133, 133, 151, 151, 151, 151, 151, 151,
697
- 151, 151, 151, 151, 151, 151, 151, 151,
698
- 151, 151, 151, 151, 151, 151, 151, 151,
699
- 151, 151, 151, 151, 151, 151, 151, 151,
700
- 151, 151, 151, 151, 151, 151, 151, 151,
701
- 151, 151, 151, 151, 151, 151, 151, 151,
702
- 151, 151, 151, 151, 151, 151, 151, 151,
703
- 151, 151, 151, 151, 151, 151, 151, 151,
704
- 151, 151, 151, 151, 151, 151, 151, 151,
705
- 151, 151, 151, 151, 151, 151, 151, 151,
706
- 151, 151, 151, 151, 151, 151, 151, 151,
707
- 151, 151, 151, 151, 151, 151, 151, 151,
708
- 151, 133, 151, 133, 133, 133, 133, 133,
709
- 133, 133, 133, 134, 134, 134, 134, 134,
710
- 133, 133, 133, 133, 133, 133, 133, 133,
711
- 133, 133, 133, 133, 133, 133, 133, 133,
712
- 133, 133, 135, 152, 152, 152, 152, 152,
713
- 152, 152, 152, 152, 152, 152, 152, 152,
714
- 152, 152, 152, 152, 152, 152, 152, 152,
715
- 152, 152, 152, 152, 152, 152, 152, 152,
716
- 152, 152, 152, 152, 152, 152, 152, 152,
717
- 152, 152, 152, 152, 152, 152, 152, 152,
718
- 152, 152, 152, 152, 152, 152, 152, 152,
719
- 152, 152, 152, 152, 152, 152, 152, 152,
720
- 152, 152, 152, 152, 152, 152, 152, 152,
721
- 152, 152, 152, 152, 152, 152, 152, 152,
722
- 152, 152, 152, 152, 152, 152, 152, 152,
723
- 152, 152, 152, 152, 152, 152, 152, 152,
724
- 152, 133, 152, 135, 135, 135, 135, 135,
725
- 152, 152, 152, 152, 152, 152, 152, 152,
726
- 152, 152, 152, 152, 152, 152, 152, 152,
727
- 152, 152, 135, 152, 136, 136, 136, 151,
728
- 136, 136, 136, 151, 151, 151, 151, 136,
729
- 136, 151, 136, 136, 136, 136, 136, 136,
730
- 136, 136, 136, 136, 136, 136, 136, 136,
731
- 136, 136, 151, 136, 136, 136, 136, 136,
732
- 136, 136, 136, 136, 136, 136, 136, 136,
733
- 136, 136, 136, 136, 136, 136, 136, 136,
734
- 136, 136, 136, 136, 136, 136, 151, 151,
735
- 151, 151, 136, 136, 136, 136, 136, 136,
736
- 136, 136, 136, 136, 136, 136, 136, 136,
737
- 136, 136, 136, 136, 136, 136, 136, 136,
738
- 136, 136, 136, 136, 136, 136, 151, 151,
739
- 151, 136, 151, 9, 8, 8, 8, 8,
740
- 8, 8, 8, 8, 8, 8, 8, 8,
741
- 8, 8, 8, 8, 8, 8, 8, 8,
742
- 8, 8, 137, 137, 137, 8, 137, 137,
743
- 137, 8, 8, 8, 8, 137, 137, 8,
744
- 137, 137, 137, 137, 137, 137, 137, 137,
337
+ 46, 46, 46, 46, 46, 46, 46, 45,
338
+ 45, 45, 47, 46, 45, 46, 46, 46,
339
+ 46, 46, 46, 46, 46, 46, 46, 46,
340
+ 46, 46, 46, 46, 46, 46, 46, 46,
341
+ 46, 46, 46, 46, 46, 46, 46, 45,
342
+ 46, 46, 46, 46, 46, 45, 45, 45,
343
+ 45, 45, 45, 45, 45, 45, 45, 45,
344
+ 45, 45, 45, 45, 45, 45, 45, 46,
345
+ 45, 45, 45, 45, 45, 45, 45, 45,
346
+ 45, 45, 45, 45, 46, 46, 45, 46,
347
+ 46, 46, 46, 46, 46, 46, 46, 46,
348
+ 46, 45, 45, 45, 46, 45, 45, 45,
349
+ 46, 46, 46, 46, 46, 46, 46, 46,
350
+ 46, 46, 46, 46, 46, 46, 46, 46,
351
+ 46, 46, 46, 46, 46, 46, 46, 46,
352
+ 46, 46, 45, 45, 45, 45, 46, 45,
353
+ 46, 46, 46, 46, 46, 46, 46, 46,
354
+ 46, 46, 46, 46, 46, 46, 46, 46,
355
+ 46, 46, 46, 46, 46, 46, 46, 46,
356
+ 46, 46, 45, 45, 48, 45, 46, 46,
357
+ 46, 46, 46, 45, 45, 45, 45, 45,
358
+ 45, 45, 45, 45, 45, 45, 45, 45,
359
+ 45, 45, 45, 45, 45, 46, 45, 45,
360
+ 45, 45, 45, 45, 45, 45, 45, 45,
361
+ 45, 45, 46, 46, 45, 46, 46, 46,
362
+ 46, 46, 46, 46, 46, 46, 46, 45,
363
+ 45, 45, 46, 45, 45, 45, 46, 46,
364
+ 46, 46, 46, 46, 46, 46, 46, 46,
365
+ 46, 46, 46, 46, 46, 46, 46, 46,
366
+ 46, 46, 46, 46, 46, 46, 46, 46,
367
+ 45, 45, 45, 45, 46, 45, 46, 46,
368
+ 46, 46, 46, 46, 46, 46, 46, 46,
369
+ 46, 46, 46, 46, 46, 46, 46, 46,
370
+ 46, 46, 46, 46, 46, 46, 46, 46,
371
+ 45, 50, 50, 50, 50, 50, 50, 50,
372
+ 50, 50, 50, 50, 50, 50, 50, 50,
373
+ 50, 50, 50, 50, 50, 50, 50, 50,
374
+ 50, 50, 50, 50, 50, 50, 50, 50,
375
+ 50, 50, 50, 50, 50, 50, 50, 50,
376
+ 50, 50, 50, 50, 50, 50, 50, 50,
377
+ 50, 50, 50, 50, 50, 50, 50, 50,
378
+ 50, 50, 50, 50, 50, 50, 50, 50,
379
+ 50, 49, 51, 51, 51, 51, 51, 51,
380
+ 51, 51, 51, 51, 51, 51, 51, 51,
381
+ 51, 51, 51, 51, 51, 51, 51, 51,
382
+ 51, 51, 51, 51, 51, 51, 51, 51,
383
+ 51, 51, 51, 51, 51, 51, 51, 51,
384
+ 51, 51, 51, 51, 51, 51, 51, 51,
385
+ 51, 51, 51, 51, 51, 51, 51, 51,
386
+ 51, 51, 51, 51, 51, 51, 51, 51,
387
+ 51, 51, 49, 53, 52, 56, 55, 55,
388
+ 57, 58, 59, 60, 55, 55, 61, 55,
389
+ 55, 55, 55, 62, 55, 55, 55, 63,
390
+ 55, 55, 64, 55, 65, 55, 66, 67,
391
+ 55, 57, 58, 59, 60, 55, 55, 61,
392
+ 55, 55, 55, 55, 62, 55, 55, 55,
393
+ 63, 55, 55, 64, 55, 65, 55, 66,
394
+ 67, 55, 68, 55, 55, 55, 55, 55,
395
+ 55, 69, 55, 70, 55, 71, 55, 72,
396
+ 55, 73, 55, 74, 55, 75, 55, 76,
397
+ 55, 73, 55, 77, 55, 78, 55, 73,
398
+ 55, 79, 55, 80, 55, 81, 55, 73,
399
+ 55, 82, 55, 83, 55, 84, 55, 73,
400
+ 55, 85, 55, 86, 55, 87, 55, 73,
401
+ 55, 88, 55, 89, 55, 90, 55, 73,
402
+ 55, 91, 55, 92, 55, 93, 55, 73,
403
+ 55, 94, 55, 55, 95, 55, 96, 55,
404
+ 87, 55, 97, 55, 87, 55, 98, 55,
405
+ 99, 55, 100, 55, 73, 55, 101, 55,
406
+ 92, 55, 102, 55, 103, 55, 73, 55,
407
+ 60, 55, 105, 105, 105, 105, 105, 105,
408
+ 105, 105, 105, 105, 105, 105, 105, 105,
409
+ 105, 105, 105, 105, 105, 105, 105, 105,
410
+ 105, 105, 105, 105, 105, 105, 105, 105,
411
+ 105, 105, 105, 105, 105, 105, 105, 105,
412
+ 105, 105, 105, 105, 105, 105, 105, 105,
413
+ 105, 105, 105, 105, 105, 105, 105, 105,
414
+ 105, 105, 105, 105, 105, 105, 105, 105,
415
+ 105, 105, 104, 106, 106, 106, 106, 106,
416
+ 106, 106, 106, 106, 106, 106, 106, 106,
417
+ 106, 106, 106, 106, 106, 106, 106, 106,
418
+ 106, 106, 106, 106, 106, 106, 106, 106,
419
+ 106, 106, 106, 106, 106, 106, 106, 106,
420
+ 106, 106, 106, 106, 106, 106, 106, 106,
421
+ 106, 106, 106, 106, 106, 106, 106, 106,
422
+ 106, 106, 106, 106, 106, 106, 106, 106,
423
+ 106, 106, 106, 104, 107, 45, 109, 108,
424
+ 111, 108, 112, 45, 114, 113, 116, 113,
425
+ 117, 117, 117, 117, 117, 117, 117, 117,
426
+ 117, 117, 45, 45, 45, 45, 45, 45,
427
+ 45, 117, 117, 117, 117, 117, 117, 45,
428
+ 45, 45, 45, 45, 45, 45, 45, 45,
429
+ 45, 45, 45, 45, 45, 45, 45, 45,
430
+ 45, 45, 45, 45, 45, 45, 45, 45,
431
+ 45, 117, 117, 117, 117, 117, 117, 45,
432
+ 45, 45, 45, 45, 45, 45, 45, 45,
433
+ 45, 45, 45, 45, 45, 45, 45, 45,
434
+ 45, 45, 45, 118, 45, 119, 119, 119,
435
+ 119, 119, 119, 119, 119, 119, 119, 45,
436
+ 45, 45, 45, 45, 45, 45, 119, 119,
437
+ 119, 119, 119, 119, 45, 45, 45, 45,
438
+ 45, 45, 45, 45, 45, 45, 45, 45,
439
+ 45, 45, 45, 45, 45, 45, 45, 45,
440
+ 45, 45, 45, 45, 45, 45, 119, 119,
441
+ 119, 119, 119, 119, 45, 120, 120, 120,
442
+ 120, 120, 120, 120, 120, 120, 120, 45,
443
+ 45, 45, 45, 45, 45, 45, 120, 120,
444
+ 120, 120, 120, 120, 45, 45, 45, 45,
445
+ 45, 45, 45, 45, 45, 45, 45, 45,
446
+ 45, 45, 45, 45, 45, 45, 45, 45,
447
+ 45, 45, 45, 45, 45, 45, 120, 120,
448
+ 120, 120, 120, 120, 45, 121, 121, 121,
449
+ 121, 121, 121, 121, 121, 121, 121, 45,
450
+ 45, 45, 45, 45, 45, 45, 121, 121,
451
+ 121, 121, 121, 121, 45, 45, 45, 45,
452
+ 45, 45, 45, 45, 45, 45, 45, 45,
453
+ 45, 45, 45, 45, 45, 45, 45, 45,
454
+ 45, 45, 45, 45, 45, 45, 121, 121,
455
+ 121, 121, 121, 121, 45, 122, 122, 122,
456
+ 122, 122, 122, 122, 122, 122, 122, 45,
457
+ 45, 45, 45, 45, 45, 45, 122, 122,
458
+ 122, 122, 122, 122, 45, 45, 45, 45,
459
+ 45, 45, 45, 45, 45, 45, 45, 45,
460
+ 45, 45, 45, 45, 45, 45, 45, 45,
461
+ 45, 45, 45, 45, 45, 45, 122, 122,
462
+ 122, 122, 122, 122, 45, 118, 118, 118,
463
+ 118, 118, 45, 45, 45, 45, 45, 45,
464
+ 45, 45, 45, 45, 45, 45, 45, 45,
465
+ 45, 45, 45, 45, 118, 45, 45, 45,
466
+ 45, 45, 45, 45, 45, 45, 45, 45,
467
+ 45, 45, 45, 45, 123, 123, 123, 123,
468
+ 123, 123, 123, 123, 123, 123, 45, 45,
469
+ 45, 45, 45, 45, 45, 123, 123, 123,
470
+ 123, 123, 123, 45, 45, 45, 45, 45,
471
+ 45, 45, 45, 45, 45, 45, 45, 45,
472
+ 45, 45, 45, 45, 45, 45, 45, 45,
473
+ 45, 45, 45, 45, 45, 123, 123, 123,
474
+ 123, 123, 123, 45, 45, 45, 45, 45,
475
+ 45, 45, 45, 45, 45, 45, 45, 45,
476
+ 45, 45, 45, 45, 45, 45, 45, 45,
477
+ 45, 121, 45, 118, 118, 118, 118, 118,
478
+ 45, 45, 45, 45, 45, 45, 45, 45,
479
+ 45, 45, 45, 45, 45, 45, 45, 45,
480
+ 45, 45, 118, 45, 45, 45, 45, 45,
481
+ 45, 45, 45, 45, 45, 45, 45, 45,
482
+ 45, 45, 124, 124, 124, 124, 124, 124,
483
+ 124, 124, 124, 124, 45, 45, 45, 45,
484
+ 45, 45, 45, 124, 124, 124, 124, 124,
485
+ 124, 45, 45, 45, 45, 45, 45, 45,
486
+ 45, 45, 45, 45, 45, 45, 45, 45,
487
+ 45, 45, 45, 45, 45, 45, 45, 45,
488
+ 45, 45, 45, 124, 124, 124, 124, 124,
489
+ 124, 45, 45, 45, 45, 45, 45, 45,
490
+ 45, 45, 45, 45, 45, 45, 45, 45,
491
+ 45, 45, 45, 45, 45, 45, 45, 121,
492
+ 45, 118, 118, 118, 118, 118, 45, 45,
493
+ 45, 45, 45, 45, 45, 45, 45, 45,
494
+ 45, 45, 45, 45, 45, 45, 45, 45,
495
+ 118, 45, 45, 45, 45, 45, 45, 45,
496
+ 45, 45, 45, 45, 45, 45, 45, 45,
497
+ 125, 125, 125, 125, 125, 125, 125, 125,
498
+ 125, 125, 45, 45, 45, 45, 45, 45,
499
+ 45, 125, 125, 125, 125, 125, 125, 45,
500
+ 45, 45, 45, 45, 45, 45, 45, 45,
501
+ 45, 45, 45, 45, 45, 45, 45, 45,
502
+ 45, 45, 45, 45, 45, 45, 45, 45,
503
+ 45, 125, 125, 125, 125, 125, 125, 45,
504
+ 45, 45, 45, 45, 45, 45, 45, 45,
505
+ 45, 45, 45, 45, 45, 45, 45, 45,
506
+ 45, 45, 45, 45, 45, 121, 45, 118,
507
+ 118, 118, 118, 118, 45, 45, 45, 45,
508
+ 45, 45, 45, 45, 45, 45, 45, 45,
509
+ 45, 45, 45, 45, 45, 45, 118, 45,
510
+ 45, 45, 45, 45, 45, 45, 45, 45,
511
+ 45, 45, 45, 45, 45, 45, 126, 126,
512
+ 126, 126, 126, 126, 126, 126, 126, 126,
513
+ 45, 45, 45, 45, 45, 45, 45, 126,
514
+ 126, 126, 126, 126, 126, 45, 45, 45,
515
+ 45, 45, 45, 45, 45, 45, 45, 45,
516
+ 45, 45, 45, 45, 45, 45, 45, 45,
517
+ 45, 45, 45, 45, 45, 45, 45, 126,
518
+ 126, 126, 126, 126, 126, 45, 45, 45,
519
+ 45, 45, 45, 45, 45, 45, 45, 45,
520
+ 45, 45, 45, 45, 45, 45, 45, 45,
521
+ 45, 45, 45, 121, 45, 118, 118, 118,
522
+ 118, 118, 45, 45, 45, 45, 45, 45,
523
+ 45, 45, 45, 45, 45, 45, 45, 45,
524
+ 45, 45, 45, 45, 118, 45, 45, 45,
525
+ 45, 45, 45, 45, 45, 45, 45, 45,
526
+ 45, 45, 45, 45, 127, 127, 127, 127,
527
+ 127, 127, 127, 127, 127, 127, 45, 45,
528
+ 45, 45, 45, 45, 45, 127, 127, 127,
529
+ 127, 127, 127, 45, 45, 45, 45, 45,
530
+ 45, 45, 45, 45, 45, 45, 45, 45,
531
+ 45, 45, 45, 45, 45, 45, 45, 45,
532
+ 45, 45, 45, 45, 45, 127, 127, 127,
533
+ 127, 127, 127, 45, 45, 45, 45, 45,
534
+ 45, 45, 45, 45, 45, 45, 45, 45,
535
+ 45, 45, 45, 45, 45, 45, 45, 45,
536
+ 45, 121, 45, 118, 118, 118, 118, 118,
537
+ 45, 45, 45, 45, 45, 45, 45, 45,
538
+ 45, 45, 45, 45, 45, 45, 45, 45,
539
+ 45, 45, 118, 45, 45, 45, 45, 45,
540
+ 45, 45, 45, 45, 45, 45, 45, 45,
541
+ 45, 45, 45, 45, 45, 45, 45, 45,
542
+ 45, 45, 45, 45, 45, 45, 45, 45,
543
+ 45, 45, 45, 45, 45, 45, 45, 45,
544
+ 45, 45, 45, 45, 45, 45, 45, 45,
545
+ 45, 45, 45, 45, 45, 45, 45, 45,
546
+ 45, 45, 45, 45, 45, 45, 45, 45,
547
+ 45, 45, 45, 45, 45, 45, 45, 45,
548
+ 45, 45, 45, 45, 45, 45, 45, 45,
549
+ 45, 45, 45, 45, 45, 45, 45, 45,
550
+ 45, 45, 45, 45, 45, 45, 45, 121,
551
+ 45, 129, 129, 129, 129, 129, 129, 129,
552
+ 129, 129, 129, 128, 128, 128, 128, 128,
553
+ 128, 128, 129, 129, 129, 129, 129, 129,
554
+ 128, 128, 128, 128, 128, 128, 128, 128,
555
+ 128, 128, 128, 128, 128, 128, 128, 128,
556
+ 128, 128, 128, 128, 128, 128, 128, 128,
557
+ 128, 128, 129, 129, 129, 129, 129, 129,
558
+ 128, 128, 128, 128, 128, 128, 128, 128,
559
+ 128, 128, 128, 128, 128, 128, 128, 128,
560
+ 128, 128, 128, 128, 45, 128, 132, 131,
561
+ 133, 130, 133, 130, 130, 130, 130, 130,
562
+ 130, 134, 134, 134, 134, 134, 134, 134,
563
+ 134, 134, 134, 130, 132, 135, 45, 45,
564
+ 45, 45, 45, 45, 45, 45, 45, 45,
565
+ 45, 45, 45, 45, 45, 45, 45, 45,
566
+ 45, 45, 45, 45, 45, 45, 45, 45,
567
+ 45, 45, 45, 45, 45, 45, 45, 45,
568
+ 45, 45, 45, 45, 45, 45, 45, 45,
569
+ 45, 45, 45, 45, 45, 45, 45, 45,
570
+ 45, 45, 45, 45, 45, 45, 45, 45,
571
+ 45, 45, 45, 45, 45, 45, 45, 45,
572
+ 2, 2, 2, 2, 2, 2, 2, 2,
573
+ 2, 2, 2, 2, 2, 2, 2, 2,
574
+ 2, 2, 2, 2, 2, 2, 2, 2,
575
+ 2, 2, 2, 2, 2, 2, 3, 3,
576
+ 3, 3, 3, 3, 3, 3, 3, 3,
577
+ 3, 3, 3, 3, 3, 3, 136, 136,
578
+ 136, 136, 136, 45, 45, 45, 45, 45,
579
+ 45, 45, 45, 45, 45, 45, 45, 137,
580
+ 137, 137, 137, 137, 137, 137, 137, 138,
581
+ 138, 138, 138, 138, 137, 137, 137, 137,
745
582
  137, 137, 137, 137, 137, 137, 137, 137,
746
- 8, 137, 137, 137, 137, 137, 137, 137,
583
+ 137, 137, 137, 137, 137, 137, 139, 140,
584
+ 140, 141, 142, 140, 140, 140, 143, 144,
585
+ 145, 146, 140, 140, 147, 140, 140, 140,
586
+ 140, 140, 140, 140, 140, 140, 140, 140,
587
+ 140, 140, 140, 140, 140, 148, 140, 140,
588
+ 140, 140, 140, 140, 140, 140, 140, 140,
589
+ 140, 140, 140, 140, 140, 140, 140, 140,
590
+ 140, 140, 140, 140, 140, 140, 140, 140,
591
+ 140, 149, 150, 151, 152, 140, 140, 140,
592
+ 140, 140, 140, 140, 140, 140, 140, 140,
593
+ 140, 140, 140, 140, 140, 140, 140, 140,
594
+ 140, 140, 140, 140, 140, 140, 140, 140,
595
+ 140, 153, 154, 151, 140, 137, 140, 2,
596
+ 2, 2, 2, 2, 2, 2, 2, 2,
597
+ 2, 2, 2, 2, 2, 2, 2, 2,
598
+ 2, 2, 2, 2, 2, 2, 2, 2,
599
+ 2, 2, 2, 2, 2, 3, 3, 3,
600
+ 3, 3, 3, 3, 3, 3, 3, 3,
601
+ 3, 3, 3, 3, 3, 136, 136, 136,
602
+ 136, 136, 155, 137, 137, 137, 137, 137,
747
603
  137, 137, 137, 137, 137, 137, 137, 137,
748
604
  137, 137, 137, 137, 137, 137, 137, 137,
749
- 137, 137, 137, 137, 8, 8, 8, 8,
750
605
  137, 137, 137, 137, 137, 137, 137, 137,
606
+ 137, 137, 155, 155, 155, 155, 155, 155,
607
+ 155, 155, 155, 155, 155, 155, 155, 155,
608
+ 155, 155, 155, 155, 155, 155, 155, 155,
609
+ 155, 155, 155, 155, 155, 155, 155, 155,
610
+ 155, 155, 155, 155, 155, 155, 155, 155,
611
+ 155, 155, 155, 155, 155, 155, 155, 155,
612
+ 155, 155, 155, 155, 155, 155, 155, 155,
613
+ 155, 155, 155, 155, 155, 155, 155, 155,
614
+ 155, 155, 155, 155, 155, 155, 155, 155,
615
+ 155, 155, 155, 155, 155, 155, 155, 155,
616
+ 155, 155, 155, 155, 155, 155, 155, 155,
617
+ 155, 155, 155, 155, 155, 155, 155, 155,
618
+ 155, 137, 155, 137, 137, 137, 137, 137,
619
+ 137, 137, 137, 138, 138, 138, 138, 138,
751
620
  137, 137, 137, 137, 137, 137, 137, 137,
752
621
  137, 137, 137, 137, 137, 137, 137, 137,
753
- 137, 137, 137, 137, 8, 8, 8, 137,
754
- 8, 154, 153, 15, 156, 11, 156, 156,
755
- 156, 14, 157, 155, 156, 156, 156, 156,
756
- 156, 156, 156, 156, 156, 156, 156, 156,
757
- 156, 156, 156, 156, 13, 156, 158, 15,
758
- 13, 156, 156, 156, 156, 156, 156, 156,
759
- 156, 156, 156, 156, 156, 156, 156, 156,
622
+ 137, 137, 139, 156, 156, 156, 156, 156,
760
623
  156, 156, 156, 156, 156, 156, 156, 156,
761
624
  156, 156, 156, 156, 156, 156, 156, 156,
762
625
  156, 156, 156, 156, 156, 156, 156, 156,
763
626
  156, 156, 156, 156, 156, 156, 156, 156,
764
627
  156, 156, 156, 156, 156, 156, 156, 156,
765
628
  156, 156, 156, 156, 156, 156, 156, 156,
766
- 13, 156, 155, 156, 155, 156, 156, 156,
767
- 155, 155, 155, 156, 156, 156, 156, 156,
768
629
  156, 156, 156, 156, 156, 156, 156, 156,
769
- 156, 156, 156, 159, 156, 155, 155, 155,
770
630
  156, 156, 156, 156, 156, 156, 156, 156,
771
631
  156, 156, 156, 156, 156, 156, 156, 156,
772
632
  156, 156, 156, 156, 156, 156, 156, 156,
773
633
  156, 156, 156, 156, 156, 156, 156, 156,
634
+ 156, 137, 156, 139, 139, 139, 139, 139,
774
635
  156, 156, 156, 156, 156, 156, 156, 156,
775
636
  156, 156, 156, 156, 156, 156, 156, 156,
776
- 156, 156, 156, 156, 156, 156, 156, 156,
777
- 156, 156, 156, 156, 156, 156, 156, 155,
778
- 156, 161, 160, 160, 160, 160, 160, 160,
779
- 160, 160, 160, 160, 160, 160, 160, 160,
780
- 160, 160, 160, 160, 160, 161, 160, 163,
637
+ 156, 156, 139, 156, 140, 140, 155, 155,
638
+ 140, 140, 140, 155, 155, 155, 155, 140,
639
+ 140, 155, 140, 140, 140, 140, 140, 140,
640
+ 140, 140, 140, 140, 140, 140, 140, 140,
641
+ 140, 140, 155, 140, 140, 140, 140, 140,
642
+ 140, 140, 140, 140, 140, 140, 140, 140,
643
+ 140, 140, 140, 140, 140, 140, 140, 140,
644
+ 140, 140, 140, 140, 140, 140, 155, 155,
645
+ 155, 155, 140, 140, 140, 140, 140, 140,
646
+ 140, 140, 140, 140, 140, 140, 140, 140,
647
+ 140, 140, 140, 140, 140, 140, 140, 140,
648
+ 140, 140, 140, 140, 140, 140, 155, 155,
649
+ 155, 140, 155, 158, 141, 160, 159, 163,
650
+ 162, 5, 162, 162, 162, 164, 165, 161,
781
651
  162, 162, 162, 162, 162, 162, 162, 162,
782
652
  162, 162, 162, 162, 162, 162, 162, 162,
783
- 162, 162, 162, 163, 162, 165, 164, 164,
784
- 164, 164, 164, 164, 164, 164, 164, 164,
785
- 164, 164, 164, 164, 164, 164, 164, 164,
786
- 164, 165, 164, 167, 167, 166, 166, 166,
787
- 166, 167, 166, 166, 166, 168, 166, 166,
788
- 166, 166, 166, 166, 166, 166, 166, 166,
789
- 166, 166, 166, 166, 167, 166, 166, 166,
790
- 166, 166, 166, 166, 167, 166, 166, 166,
791
- 166, 169, 166, 166, 166, 169, 166, 166,
792
- 166, 166, 166, 166, 166, 166, 166, 166,
793
- 166, 166, 166, 166, 167, 166, 171, 170,
794
- 170, 170, 34, 34, 34, 34, 34, 34,
795
- 34, 34, 34, 34, 170, 173, 172, 172,
796
- 172, 172, 172, 172, 172, 172, 172, 172,
797
- 172, 172, 172, 172, 172, 172, 172, 172,
798
- 172, 173, 172, 174, 36, 36, 36, 174,
799
- 36, 36, 36, 36, 36, 36, 36, 36,
800
- 36, 174, 174, 36, 36, 36, 174, 174,
801
- 36, 36, 36, 36, 36, 36, 36, 36,
802
- 36, 36, 36, 174, 36, 36, 36, 174,
803
- 36, 36, 36, 36, 36, 36, 36, 36,
804
- 36, 36, 174, 36, 36, 36, 174, 36,
805
- 175, 36, 36, 36, 36, 36, 36, 36,
806
- 36, 36, 36, 36, 36, 36, 36, 36,
807
- 36, 36, 36, 36, 36, 36, 36, 36,
808
- 36, 36, 36, 36, 36, 36, 36, 36,
809
- 175, 36, 176, 176, 176, 176, 176, 176,
810
- 176, 176, 176, 176, 176, 176, 176, 176,
811
- 176, 176, 176, 176, 176, 176, 176, 176,
812
- 176, 176, 176, 176, 176, 176, 176, 176,
813
- 177, 177, 177, 177, 177, 177, 177, 177,
814
- 177, 177, 177, 177, 177, 177, 177, 177,
815
- 178, 178, 178, 178, 178, 41, 41, 41,
816
- 41, 41, 41, 41, 41, 41, 41, 41,
817
- 41, 41, 41, 41, 41, 41, 41, 41,
818
- 41, 41, 41, 41, 41, 41, 41, 41,
819
- 41, 41, 41, 41, 41, 41, 41, 41,
820
- 41, 41, 41, 41, 41, 41, 41, 41,
821
- 41, 41, 41, 41, 179, 41, 180, 41,
822
- 179, 179, 179, 179, 41, 181, 179, 41,
823
- 41, 41, 41, 41, 41, 41, 41, 41,
824
- 41, 41, 41, 41, 41, 41, 41, 179,
825
- 41, 41, 41, 41, 41, 41, 41, 41,
826
- 41, 41, 41, 41, 41, 41, 41, 41,
827
- 41, 41, 41, 41, 41, 41, 41, 41,
828
- 41, 41, 41, 182, 183, 184, 185, 41,
829
- 41, 41, 41, 41, 41, 41, 41, 41,
830
- 41, 41, 41, 41, 41, 41, 41, 41,
831
- 41, 41, 41, 41, 41, 41, 41, 41,
832
- 41, 41, 41, 179, 179, 179, 41, 41,
833
- 41, 41, 41, 41, 41, 41, 41, 41,
834
- 41, 41, 41, 41, 41, 41, 41, 41,
835
- 41, 41, 41, 41, 41, 41, 41, 41,
836
- 41, 41, 41, 41, 41, 41, 41, 41,
837
- 41, 41, 41, 41, 41, 41, 41, 41,
838
- 41, 41, 41, 41, 41, 41, 41, 41,
839
- 41, 41, 41, 41, 41, 41, 41, 41,
840
- 41, 41, 41, 41, 41, 41, 41, 186,
841
- 42, 42, 42, 42, 42, 42, 42, 42,
842
- 42, 42, 42, 42, 42, 42, 42, 42,
843
- 42, 42, 42, 42, 42, 42, 42, 42,
844
- 42, 42, 42, 42, 42, 42, 42, 42,
845
- 42, 42, 42, 42, 42, 42, 42, 42,
846
- 42, 42, 42, 42, 42, 42, 42, 42,
847
- 42, 42, 42, 42, 42, 42, 42, 42,
848
- 42, 42, 42, 42, 42, 42, 42, 42,
849
- 186, 187, 187, 187, 187, 187, 187, 187,
850
- 187, 187, 187, 187, 187, 187, 187, 187,
851
- 187, 187, 187, 187, 187, 187, 187, 187,
852
- 187, 187, 187, 187, 187, 187, 187, 187,
853
- 187, 187, 187, 187, 187, 187, 187, 187,
854
- 187, 187, 187, 187, 187, 187, 187, 187,
855
- 187, 187, 187, 187, 187, 187, 187, 187,
653
+ 8, 162, 166, 163, 8, 162, 162, 162,
654
+ 162, 162, 162, 162, 162, 162, 162, 162,
655
+ 162, 162, 162, 162, 162, 162, 162, 162,
656
+ 162, 162, 162, 162, 162, 162, 162, 162,
657
+ 162, 162, 162, 162, 162, 162, 162, 162,
658
+ 162, 162, 162, 162, 162, 162, 162, 162,
659
+ 162, 162, 162, 162, 162, 162, 162, 162,
660
+ 162, 162, 162, 162, 162, 162, 162, 162,
661
+ 162, 162, 162, 162, 8, 162, 161, 162,
662
+ 161, 162, 162, 162, 161, 161, 161, 162,
663
+ 162, 162, 162, 162, 162, 162, 162, 162,
664
+ 162, 162, 162, 162, 162, 162, 162, 167,
665
+ 162, 161, 161, 161, 162, 162, 162, 162,
666
+ 162, 162, 162, 162, 162, 162, 162, 162,
667
+ 162, 162, 162, 162, 162, 162, 162, 162,
668
+ 162, 162, 162, 162, 162, 162, 162, 162,
669
+ 162, 162, 162, 162, 162, 162, 162, 162,
670
+ 162, 162, 162, 162, 162, 162, 162, 162,
671
+ 162, 162, 162, 162, 162, 162, 162, 162,
672
+ 162, 162, 162, 162, 162, 162, 162, 162,
673
+ 162, 162, 162, 161, 162, 8, 9, 170,
674
+ 169, 169, 169, 169, 169, 169, 169, 169,
675
+ 169, 169, 169, 169, 169, 169, 169, 169,
676
+ 169, 169, 169, 170, 169, 172, 171, 171,
677
+ 171, 171, 171, 171, 171, 171, 171, 171,
678
+ 171, 171, 171, 171, 171, 171, 171, 171,
679
+ 171, 172, 171, 174, 173, 173, 173, 173,
680
+ 173, 173, 173, 173, 173, 173, 173, 173,
681
+ 173, 173, 173, 173, 173, 173, 173, 174,
682
+ 173, 176, 176, 175, 175, 175, 175, 176,
683
+ 175, 175, 175, 177, 175, 175, 175, 175,
684
+ 175, 175, 175, 175, 175, 175, 175, 175,
685
+ 175, 175, 176, 175, 175, 175, 175, 175,
686
+ 175, 175, 176, 175, 175, 175, 175, 178,
687
+ 175, 175, 175, 179, 175, 175, 175, 175,
688
+ 175, 175, 175, 175, 175, 175, 175, 175,
689
+ 175, 175, 176, 175, 181, 180, 180, 180,
690
+ 43, 43, 43, 43, 43, 43, 43, 43,
691
+ 43, 43, 180, 183, 182, 182, 182, 182,
692
+ 182, 182, 182, 182, 182, 182, 182, 182,
693
+ 182, 182, 182, 182, 182, 182, 182, 183,
694
+ 182, 184, 45, 45, 45, 184, 45, 45,
695
+ 45, 45, 45, 45, 45, 45, 45, 184,
696
+ 184, 45, 45, 45, 184, 184, 45, 45,
697
+ 45, 45, 45, 45, 45, 45, 45, 45,
698
+ 45, 184, 45, 45, 45, 184, 45, 45,
699
+ 45, 45, 45, 45, 45, 45, 45, 45,
700
+ 184, 45, 45, 45, 184, 45, 185, 45,
701
+ 45, 45, 45, 45, 45, 45, 45, 45,
702
+ 45, 45, 45, 45, 45, 45, 45, 45,
703
+ 45, 45, 45, 45, 45, 45, 45, 45,
704
+ 45, 45, 45, 45, 45, 45, 185, 45,
705
+ 186, 186, 186, 186, 186, 186, 186, 186,
706
+ 186, 186, 186, 186, 186, 186, 186, 186,
707
+ 186, 186, 186, 186, 186, 186, 186, 186,
708
+ 186, 186, 186, 186, 186, 186, 187, 187,
856
709
  187, 187, 187, 187, 187, 187, 187, 187,
857
- 187, 186, 188, 186, 190, 189, 189, 189,
858
- 189, 189, 189, 189, 189, 189, 189, 189,
859
- 189, 189, 189, 189, 189, 189, 189, 189,
860
- 189, 189, 189, 189, 189, 189, 189, 189,
861
- 189, 189, 189, 189, 189, 189, 189, 189,
862
- 189, 189, 189, 189, 189, 189, 189, 189,
863
- 189, 189, 189, 189, 189, 189, 189, 189,
864
- 189, 189, 189, 191, 189, 194, 193, 193,
865
- 193, 193, 193, 193, 193, 193, 193, 193,
866
- 193, 195, 193, 193, 196, 193, 198, 198,
867
- 198, 198, 198, 198, 198, 198, 198, 198,
868
- 197, 197, 197, 197, 197, 197, 197, 198,
869
- 198, 198, 197, 197, 197, 198, 197, 197,
870
- 197, 198, 197, 198, 197, 197, 197, 197,
871
- 198, 197, 197, 197, 197, 197, 198, 197,
872
- 198, 197, 197, 197, 197, 197, 197, 197,
873
- 197, 198, 197, 197, 197, 198, 197, 197,
874
- 197, 198, 197, 197, 197, 197, 197, 197,
710
+ 187, 187, 187, 187, 187, 187, 188, 188,
711
+ 188, 188, 188, 50, 50, 50, 50, 50,
712
+ 50, 50, 50, 50, 50, 50, 50, 50,
713
+ 50, 50, 50, 50, 50, 50, 50, 50,
714
+ 50, 50, 50, 50, 50, 50, 50, 50,
715
+ 50, 50, 50, 50, 50, 50, 50, 50,
716
+ 50, 50, 50, 50, 50, 50, 50, 50,
717
+ 50, 50, 189, 50, 190, 50, 189, 189,
718
+ 189, 189, 50, 191, 189, 50, 50, 50,
719
+ 50, 50, 50, 50, 50, 50, 50, 50,
720
+ 50, 50, 50, 50, 50, 189, 50, 50,
721
+ 50, 50, 50, 50, 50, 50, 50, 50,
722
+ 50, 50, 50, 50, 50, 50, 50, 50,
723
+ 50, 50, 50, 50, 50, 50, 50, 50,
724
+ 50, 192, 193, 194, 195, 50, 50, 50,
725
+ 50, 50, 50, 50, 50, 50, 50, 50,
726
+ 50, 50, 50, 50, 50, 50, 50, 50,
727
+ 50, 50, 50, 50, 50, 50, 50, 50,
728
+ 50, 189, 189, 189, 50, 50, 50, 50,
729
+ 50, 50, 50, 50, 50, 50, 50, 50,
730
+ 50, 50, 50, 50, 50, 50, 50, 50,
731
+ 50, 50, 50, 50, 50, 50, 50, 50,
732
+ 50, 50, 50, 50, 50, 50, 50, 50,
733
+ 50, 50, 50, 50, 50, 50, 50, 50,
734
+ 50, 50, 50, 50, 50, 50, 50, 50,
735
+ 50, 50, 50, 50, 50, 50, 50, 50,
736
+ 50, 50, 50, 50, 50, 196, 51, 51,
737
+ 51, 51, 51, 51, 51, 51, 51, 51,
738
+ 51, 51, 51, 51, 51, 51, 51, 51,
739
+ 51, 51, 51, 51, 51, 51, 51, 51,
740
+ 51, 51, 51, 51, 51, 51, 51, 51,
741
+ 51, 51, 51, 51, 51, 51, 51, 51,
742
+ 51, 51, 51, 51, 51, 51, 51, 51,
743
+ 51, 51, 51, 51, 51, 51, 51, 51,
744
+ 51, 51, 51, 51, 51, 51, 196, 197,
875
745
  197, 197, 197, 197, 197, 197, 197, 197,
876
- 198, 197, 200, 199, 199, 199, 200, 200,
877
- 200, 200, 199, 199, 200, 199, 201, 202,
878
- 202, 202, 202, 202, 202, 202, 203, 203,
879
- 199, 199, 199, 199, 199, 200, 199, 36,
880
- 36, 204, 205, 199, 199, 36, 205, 199,
881
- 199, 36, 199, 206, 199, 199, 207, 199,
882
- 205, 205, 199, 199, 199, 205, 205, 199,
883
- 36, 200, 200, 200, 200, 199, 199, 208,
884
- 208, 101, 205, 208, 208, 36, 205, 199,
885
- 199, 36, 199, 199, 208, 199, 207, 199,
886
- 208, 205, 208, 209, 208, 205, 210, 199,
887
- 36, 200, 200, 200, 199, 212, 212, 212,
888
- 212, 212, 212, 212, 212, 211, 214, 214,
889
- 214, 214, 214, 214, 214, 214, 213, 216,
890
- 102, 218, 217, 102, 220, 107, 107, 107,
891
- 107, 107, 107, 107, 107, 107, 107, 107,
892
- 107, 107, 107, 107, 107, 107, 107, 107,
893
- 107, 107, 107, 107, 107, 107, 107, 107,
894
- 107, 107, 107, 107, 221, 107, 223, 222,
895
- 107, 110, 107, 226, 226, 226, 226, 226,
896
- 226, 226, 226, 226, 226, 225, 225, 225,
897
- 225, 225, 225, 225, 226, 226, 226, 226,
898
- 226, 226, 225, 225, 225, 225, 225, 225,
899
- 225, 225, 225, 225, 225, 225, 225, 225,
900
- 225, 225, 225, 225, 225, 225, 225, 225,
901
- 225, 225, 225, 225, 226, 226, 226, 226,
902
- 226, 226, 225, 228, 227, 227, 227, 227,
903
- 227, 229, 227, 227, 227, 230, 230, 230,
904
- 230, 230, 230, 230, 230, 230, 227, 227,
905
- 231, 227, 126, 232, 232, 232, 232, 232,
906
- 232, 232, 232, 127, 127, 127, 127, 127,
907
- 127, 127, 127, 127, 127, 232, 232, 232,
908
- 232, 232, 232, 232, 127, 127, 127, 127,
909
- 127, 127, 127, 127, 127, 127, 127, 127,
910
- 127, 127, 127, 127, 127, 127, 127, 127,
911
- 127, 127, 127, 127, 127, 127, 232, 232,
912
- 232, 232, 127, 232, 127, 127, 127, 127,
913
- 127, 127, 127, 127, 127, 127, 127, 127,
914
- 127, 127, 127, 127, 127, 127, 127, 127,
915
- 127, 127, 127, 127, 127, 127, 232, 128,
916
- 128, 128, 128, 128, 128, 128, 128, 128,
917
- 232, 125, 232, 232, 232, 232, 232, 232,
918
- 128, 128, 128, 128, 128, 128, 128, 128,
919
- 128, 128, 232, 129, 129, 129, 129, 129,
920
- 129, 129, 129, 129, 129, 232, 232, 232,
921
- 232, 126, 232, 232, 129, 129, 129, 129,
922
- 129, 129, 129, 129, 129, 129, 129, 129,
923
- 129, 129, 129, 129, 129, 129, 129, 129,
924
- 129, 129, 129, 129, 129, 129, 232, 232,
925
- 232, 232, 129, 232, 129, 129, 129, 129,
926
- 129, 129, 129, 129, 129, 129, 129, 129,
927
- 129, 129, 129, 129, 129, 129, 129, 129,
928
- 129, 129, 129, 129, 129, 129, 232, 0
746
+ 197, 197, 197, 197, 197, 197, 197, 197,
747
+ 197, 197, 197, 197, 197, 197, 197, 197,
748
+ 197, 197, 197, 197, 197, 197, 197, 197,
749
+ 197, 197, 197, 197, 197, 197, 197, 197,
750
+ 197, 197, 197, 197, 197, 197, 197, 197,
751
+ 197, 197, 197, 197, 197, 197, 197, 197,
752
+ 197, 197, 197, 197, 197, 197, 197, 196,
753
+ 198, 196, 200, 199, 199, 199, 199, 199,
754
+ 199, 199, 199, 199, 199, 199, 199, 199,
755
+ 199, 199, 199, 199, 199, 199, 199, 199,
756
+ 199, 199, 199, 199, 199, 199, 199, 199,
757
+ 199, 199, 199, 199, 199, 199, 199, 199,
758
+ 199, 199, 199, 199, 199, 199, 199, 199,
759
+ 199, 199, 199, 199, 199, 199, 199, 199,
760
+ 199, 201, 199, 204, 203, 206, 206, 205,
761
+ 205, 205, 206, 205, 205, 205, 205, 206,
762
+ 205, 205, 206, 205, 205, 206, 205, 205,
763
+ 205, 206, 205, 205, 205, 206, 206, 206,
764
+ 205, 205, 205, 206, 206, 206, 206, 206,
765
+ 206, 205, 206, 205, 205, 205, 205, 205,
766
+ 206, 205, 206, 205, 206, 206, 206, 206,
767
+ 206, 206, 206, 205, 207, 207, 207, 207,
768
+ 207, 207, 207, 207, 207, 207, 207, 207,
769
+ 207, 207, 207, 207, 207, 207, 207, 207,
770
+ 207, 207, 207, 207, 207, 207, 207, 207,
771
+ 207, 207, 208, 208, 208, 208, 208, 208,
772
+ 208, 208, 208, 208, 208, 208, 208, 208,
773
+ 208, 208, 209, 209, 209, 209, 209, 105,
774
+ 105, 105, 105, 105, 105, 105, 105, 105,
775
+ 105, 105, 105, 105, 105, 105, 105, 105,
776
+ 105, 105, 105, 105, 105, 105, 105, 105,
777
+ 105, 105, 105, 105, 105, 105, 105, 105,
778
+ 105, 105, 105, 105, 105, 105, 105, 105,
779
+ 105, 105, 105, 105, 105, 105, 210, 105,
780
+ 105, 105, 210, 210, 210, 210, 105, 105,
781
+ 210, 105, 211, 212, 212, 212, 212, 212,
782
+ 212, 212, 213, 213, 105, 105, 105, 105,
783
+ 105, 210, 105, 45, 45, 214, 215, 105,
784
+ 105, 45, 215, 105, 105, 45, 105, 216,
785
+ 105, 105, 217, 105, 215, 215, 105, 105,
786
+ 105, 215, 215, 105, 45, 210, 210, 210,
787
+ 210, 105, 105, 218, 218, 107, 215, 218,
788
+ 218, 105, 215, 105, 105, 105, 105, 105,
789
+ 218, 105, 217, 105, 218, 215, 218, 219,
790
+ 218, 215, 220, 105, 45, 210, 210, 210,
791
+ 105, 105, 105, 105, 105, 105, 105, 105,
792
+ 105, 105, 105, 105, 105, 105, 105, 105,
793
+ 105, 105, 105, 105, 105, 105, 105, 105,
794
+ 105, 105, 105, 105, 105, 105, 105, 105,
795
+ 105, 105, 105, 105, 105, 105, 105, 105,
796
+ 105, 105, 105, 105, 105, 105, 105, 105,
797
+ 105, 105, 105, 105, 105, 105, 105, 105,
798
+ 105, 105, 105, 105, 105, 105, 105, 105,
799
+ 105, 221, 106, 106, 106, 106, 106, 106,
800
+ 106, 106, 106, 106, 106, 106, 106, 106,
801
+ 106, 106, 106, 106, 106, 106, 106, 106,
802
+ 106, 106, 106, 106, 106, 106, 106, 106,
803
+ 106, 106, 106, 106, 106, 106, 106, 106,
804
+ 106, 106, 106, 106, 106, 106, 106, 106,
805
+ 106, 106, 106, 106, 106, 106, 106, 106,
806
+ 106, 106, 106, 106, 106, 106, 106, 106,
807
+ 106, 106, 221, 222, 222, 222, 222, 222,
808
+ 222, 222, 222, 222, 222, 222, 222, 222,
809
+ 222, 222, 222, 222, 222, 222, 222, 222,
810
+ 222, 222, 222, 222, 222, 222, 222, 222,
811
+ 222, 222, 222, 222, 222, 222, 222, 222,
812
+ 222, 222, 222, 222, 222, 222, 222, 222,
813
+ 222, 222, 222, 222, 222, 222, 222, 222,
814
+ 222, 222, 222, 222, 222, 222, 222, 222,
815
+ 222, 222, 222, 221, 224, 224, 224, 224,
816
+ 224, 224, 224, 224, 223, 226, 226, 226,
817
+ 226, 226, 226, 226, 226, 225, 228, 108,
818
+ 230, 229, 108, 232, 113, 113, 113, 113,
819
+ 113, 113, 113, 113, 113, 113, 113, 113,
820
+ 113, 113, 113, 113, 113, 113, 113, 113,
821
+ 113, 113, 113, 113, 113, 113, 113, 113,
822
+ 113, 113, 113, 233, 113, 235, 234, 113,
823
+ 116, 113, 237, 237, 237, 237, 237, 237,
824
+ 237, 237, 237, 237, 236, 236, 236, 236,
825
+ 236, 236, 236, 237, 237, 237, 237, 237,
826
+ 237, 236, 236, 236, 236, 236, 236, 236,
827
+ 236, 236, 236, 236, 236, 236, 236, 236,
828
+ 236, 236, 236, 236, 236, 236, 236, 236,
829
+ 236, 236, 236, 237, 237, 237, 237, 237,
830
+ 237, 236, 239, 238, 238, 238, 238, 238,
831
+ 240, 238, 238, 238, 241, 241, 241, 241,
832
+ 241, 241, 241, 241, 241, 238, 238, 242,
833
+ 238, 132, 131, 131, 131, 131, 131, 243,
834
+ 131, 131, 243, 243, 243, 243, 243, 243,
835
+ 243, 243, 243, 243, 131, 134, 134, 134,
836
+ 134, 134, 134, 134, 134, 134, 243, 133,
837
+ 243, 243, 243, 243, 243, 243, 134, 134,
838
+ 134, 134, 134, 134, 134, 134, 134, 134,
839
+ 243, 243, 135, 135, 243, 243, 243, 243,
840
+ 243, 243, 243, 243, 243, 243, 135, 135,
841
+ 135, 135, 132, 135, 0
929
842
  ]
930
843
 
931
844
  class << self
@@ -933,36 +846,37 @@ class << self
933
846
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
934
847
  end
935
848
  self._re_scanner_trans_targs = [
936
- 111, 112, 3, 113, 5, 6, 114, 111,
937
- 7, 111, 111, 8, 111, 111, 9, 111,
938
- 11, 111, 13, 19, 111, 14, 16, 18,
939
- 15, 17, 20, 22, 24, 21, 23, 111,
940
- 26, 128, 27, 29, 0, 30, 31, 130,
941
- 131, 131, 32, 131, 131, 131, 131, 36,
942
- 37, 131, 39, 40, 51, 55, 59, 63,
943
- 67, 71, 76, 80, 82, 85, 41, 48,
944
- 42, 46, 43, 44, 45, 131, 47, 49,
945
- 50, 52, 53, 54, 56, 57, 58, 60,
946
- 61, 62, 64, 65, 66, 68, 69, 70,
947
- 72, 74, 73, 75, 77, 78, 79, 81,
948
- 83, 84, 87, 88, 131, 90, 139, 142,
949
- 139, 144, 93, 139, 145, 139, 147, 96,
950
- 99, 97, 98, 139, 100, 101, 102, 103,
951
- 104, 105, 139, 149, 150, 150, 107, 108,
952
- 109, 110, 1, 2, 4, 115, 116, 117,
953
- 118, 119, 111, 120, 111, 123, 124, 111,
954
- 125, 111, 126, 111, 111, 127, 111, 111,
955
- 111, 111, 121, 111, 122, 111, 10, 111,
956
- 111, 111, 111, 111, 111, 111, 111, 111,
957
- 111, 12, 111, 25, 111, 111, 129, 28,
958
- 132, 133, 134, 131, 135, 136, 137, 131,
959
- 131, 131, 131, 33, 131, 131, 34, 131,
960
- 131, 131, 35, 38, 86, 138, 138, 139,
961
- 139, 140, 140, 139, 89, 139, 92, 139,
962
- 139, 95, 106, 139, 141, 139, 139, 139,
963
- 143, 139, 91, 139, 146, 148, 139, 94,
964
- 139, 139, 139, 150, 151, 152, 153, 154,
965
- 150
849
+ 119, 120, 1, 2, 119, 4, 119, 6,
850
+ 119, 8, 129, 119, 10, 17, 11, 119,
851
+ 12, 16, 14, 13, 15, 18, 19, 23,
852
+ 21, 20, 22, 25, 31, 26, 119, 27,
853
+ 29, 28, 30, 32, 33, 35, 34, 36,
854
+ 119, 38, 135, 39, 41, 0, 42, 43,
855
+ 137, 138, 138, 44, 138, 138, 138, 138,
856
+ 48, 49, 60, 64, 68, 72, 76, 80,
857
+ 85, 89, 91, 94, 50, 57, 51, 55,
858
+ 52, 53, 54, 138, 56, 58, 59, 61,
859
+ 62, 63, 65, 66, 67, 69, 70, 71,
860
+ 73, 74, 75, 77, 78, 79, 81, 83,
861
+ 82, 84, 86, 87, 88, 90, 92, 93,
862
+ 146, 146, 95, 98, 146, 152, 146, 154,
863
+ 101, 146, 155, 146, 157, 104, 107, 105,
864
+ 106, 146, 108, 109, 110, 111, 112, 113,
865
+ 146, 159, 160, 115, 116, 160, 117, 118,
866
+ 3, 121, 122, 123, 124, 125, 119, 126,
867
+ 119, 130, 131, 119, 132, 119, 133, 119,
868
+ 119, 134, 119, 119, 119, 119, 119, 119,
869
+ 127, 119, 128, 119, 5, 119, 7, 119,
870
+ 119, 119, 119, 119, 119, 119, 119, 119,
871
+ 119, 119, 9, 24, 119, 37, 119, 119,
872
+ 136, 40, 139, 140, 141, 138, 142, 143,
873
+ 144, 138, 138, 138, 138, 45, 138, 138,
874
+ 46, 138, 138, 138, 47, 145, 145, 147,
875
+ 148, 149, 146, 150, 150, 146, 97, 146,
876
+ 100, 146, 146, 103, 114, 146, 96, 146,
877
+ 151, 146, 146, 146, 153, 146, 99, 146,
878
+ 156, 158, 146, 102, 146, 146, 160, 161,
879
+ 162, 163, 164, 160
966
880
  ]
967
881
 
968
882
  class << self
@@ -970,36 +884,37 @@ class << self
970
884
  private :_re_scanner_trans_actions, :_re_scanner_trans_actions=
971
885
  end
972
886
  self._re_scanner_trans_actions = [
973
- 1, 2, 0, 2, 0, 0, 2, 3,
974
- 0, 4, 5, 6, 7, 8, 0, 9,
975
- 0, 10, 0, 0, 11, 0, 0, 0,
976
- 0, 0, 0, 0, 0, 0, 0, 12,
977
- 0, 0, 0, 0, 0, 0, 0, 14,
978
- 15, 16, 0, 17, 18, 19, 20, 0,
979
- 0, 21, 0, 0, 0, 0, 0, 0,
887
+ 1, 2, 0, 0, 3, 4, 5, 0,
888
+ 6, 0, 7, 8, 0, 0, 0, 9,
889
+ 0, 0, 0, 0, 0, 0, 0, 0,
890
+ 0, 0, 0, 0, 0, 0, 10, 0,
891
+ 0, 0, 0, 0, 0, 0, 0, 0,
892
+ 11, 0, 0, 0, 0, 0, 0, 0,
893
+ 13, 14, 15, 0, 16, 17, 18, 19,
980
894
  0, 0, 0, 0, 0, 0, 0, 0,
981
- 0, 0, 0, 0, 0, 22, 0, 0,
982
895
  0, 0, 0, 0, 0, 0, 0, 0,
896
+ 0, 0, 0, 20, 0, 0, 0, 0,
983
897
  0, 0, 0, 0, 0, 0, 0, 0,
984
898
  0, 0, 0, 0, 0, 0, 0, 0,
985
- 0, 0, 0, 0, 23, 0, 25, 0,
986
- 26, 0, 0, 27, 0, 28, 0, 0,
987
- 0, 0, 0, 29, 0, 0, 0, 0,
988
- 0, 0, 30, 0, 31, 32, 0, 0,
989
899
  0, 0, 0, 0, 0, 0, 0, 0,
990
- 0, 35, 36, 37, 38, 0, 0, 39,
991
- 0, 40, 35, 41, 42, 35, 43, 44,
992
- 45, 46, 47, 48, 0, 49, 0, 50,
993
- 51, 52, 53, 54, 55, 56, 57, 58,
994
- 59, 0, 60, 0, 61, 62, 64, 0,
995
- 0, 35, 35, 65, 0, 35, 66, 67,
996
- 68, 69, 70, 0, 71, 72, 0, 73,
997
- 74, 75, 0, 0, 0, 76, 77, 78,
998
- 79, 80, 81, 82, 0, 83, 0, 84,
999
- 85, 0, 0, 86, 0, 87, 88, 89,
1000
- 35, 90, 0, 91, 35, 0, 92, 0,
1001
- 93, 94, 95, 96, 35, 35, 35, 35,
1002
- 97
900
+ 21, 22, 0, 0, 24, 0, 25, 0,
901
+ 0, 26, 0, 27, 0, 0, 0, 0,
902
+ 0, 28, 0, 0, 0, 0, 0, 0,
903
+ 29, 0, 30, 0, 0, 31, 0, 0,
904
+ 0, 0, 0, 0, 0, 0, 34, 35,
905
+ 36, 0, 0, 37, 0, 38, 39, 40,
906
+ 41, 39, 42, 43, 44, 45, 46, 47,
907
+ 48, 49, 0, 50, 0, 51, 0, 52,
908
+ 53, 54, 55, 56, 57, 58, 59, 60,
909
+ 61, 62, 0, 0, 63, 0, 64, 65,
910
+ 67, 0, 0, 39, 39, 68, 0, 39,
911
+ 69, 70, 71, 72, 73, 0, 74, 75,
912
+ 0, 76, 77, 78, 0, 79, 80, 0,
913
+ 39, 39, 81, 82, 83, 84, 0, 85,
914
+ 0, 86, 87, 0, 0, 88, 0, 89,
915
+ 0, 90, 91, 92, 39, 93, 0, 94,
916
+ 39, 0, 95, 0, 96, 97, 98, 39,
917
+ 39, 39, 39, 99
1003
918
  ]
1004
919
 
1005
920
  class << self
@@ -1020,13 +935,14 @@ self._re_scanner_to_state_actions = [
1020
935
  0, 0, 0, 0, 0, 0, 0, 0,
1021
936
  0, 0, 0, 0, 0, 0, 0, 0,
1022
937
  0, 0, 0, 0, 0, 0, 0, 0,
1023
- 0, 0, 0, 0, 0, 0, 0, 33,
938
+ 0, 0, 0, 0, 0, 0, 0, 0,
939
+ 0, 0, 0, 0, 0, 0, 0, 32,
1024
940
  0, 0, 0, 0, 0, 0, 0, 0,
1025
941
  0, 0, 0, 0, 0, 0, 0, 0,
1026
- 0, 63, 63, 63, 0, 0, 0, 0,
1027
- 0, 0, 63, 63, 0, 0, 0, 0,
1028
- 0, 0, 0, 0, 0, 0, 63, 0,
1029
- 0, 0, 0
942
+ 66, 66, 66, 0, 0, 0, 0, 0,
943
+ 0, 66, 66, 0, 0, 0, 0, 0,
944
+ 0, 0, 0, 0, 0, 0, 0, 0,
945
+ 66, 0, 0, 0, 0
1030
946
  ]
1031
947
 
1032
948
  class << self
@@ -1047,13 +963,14 @@ self._re_scanner_from_state_actions = [
1047
963
  0, 0, 0, 0, 0, 0, 0, 0,
1048
964
  0, 0, 0, 0, 0, 0, 0, 0,
1049
965
  0, 0, 0, 0, 0, 0, 0, 0,
1050
- 0, 0, 0, 0, 0, 0, 0, 34,
1051
966
  0, 0, 0, 0, 0, 0, 0, 0,
967
+ 0, 0, 0, 0, 0, 0, 0, 33,
968
+ 0, 0, 0, 0, 0, 0, 0, 0,
969
+ 0, 0, 0, 0, 0, 0, 0, 0,
970
+ 33, 33, 33, 0, 0, 0, 0, 0,
971
+ 0, 33, 33, 0, 0, 0, 0, 0,
1052
972
  0, 0, 0, 0, 0, 0, 0, 0,
1053
- 0, 34, 34, 34, 0, 0, 0, 0,
1054
- 0, 0, 34, 34, 0, 0, 0, 0,
1055
- 0, 0, 0, 0, 0, 0, 34, 0,
1056
- 0, 0, 0
973
+ 33, 0, 0, 0, 0
1057
974
  ]
1058
975
 
1059
976
  class << self
@@ -1064,23 +981,24 @@ self._re_scanner_eof_actions = [
1064
981
  0, 0, 0, 0, 0, 0, 0, 0,
1065
982
  0, 0, 0, 0, 0, 0, 0, 0,
1066
983
  0, 0, 0, 0, 0, 0, 0, 0,
1067
- 0, 0, 0, 0, 13, 13, 13, 13,
1068
984
  0, 0, 0, 0, 0, 0, 0, 0,
1069
985
  0, 0, 0, 0, 0, 0, 0, 0,
986
+ 12, 12, 12, 12, 0, 0, 0, 0,
1070
987
  0, 0, 0, 0, 0, 0, 0, 0,
1071
988
  0, 0, 0, 0, 0, 0, 0, 0,
1072
989
  0, 0, 0, 0, 0, 0, 0, 0,
1073
990
  0, 0, 0, 0, 0, 0, 0, 0,
1074
991
  0, 0, 0, 0, 0, 0, 0, 0,
1075
- 0, 24, 24, 0, 24, 24, 0, 24,
1076
- 24, 24, 24, 24, 24, 24, 24, 24,
1077
- 24, 24, 24, 0, 0, 0, 0, 0,
1078
992
  0, 0, 0, 0, 0, 0, 0, 0,
993
+ 0, 23, 23, 0, 23, 23, 0, 23,
994
+ 23, 23, 23, 23, 23, 23, 23, 23,
995
+ 23, 23, 23, 0, 0, 0, 0, 0,
1079
996
  0, 0, 0, 0, 0, 0, 0, 0,
1080
- 0, 0, 0, 24, 0, 0, 0, 0,
1081
- 0, 0, 0, 24, 0, 0, 0, 0,
1082
997
  0, 0, 0, 0, 0, 0, 0, 0,
1083
- 0, 0, 0
998
+ 0, 0, 23, 0, 0, 0, 0, 0,
999
+ 0, 0, 23, 0, 0, 0, 0, 0,
1000
+ 0, 0, 0, 0, 0, 0, 0, 0,
1001
+ 0, 0, 0, 0, 0
1084
1002
  ]
1085
1003
 
1086
1004
  class << self
@@ -1088,36 +1006,37 @@ class << self
1088
1006
  private :_re_scanner_eof_trans, :_re_scanner_eof_trans=
1089
1007
  end
1090
1008
  self._re_scanner_eof_trans = [
1091
- 0, 1, 1, 1, 1, 1, 1, 8,
1092
- 11, 11, 11, 11, 18, 18, 18, 18,
1093
- 18, 18, 18, 18, 18, 18, 18, 18,
1094
- 18, 32, 32, 32, 0, 0, 0, 0,
1095
- 41, 41, 44, 46, 46, 46, 46, 46,
1096
- 46, 46, 46, 46, 46, 46, 46, 46,
1097
- 46, 46, 46, 46, 46, 46, 46, 46,
1098
- 46, 46, 46, 46, 46, 46, 46, 46,
1099
- 46, 46, 46, 46, 46, 46, 46, 46,
1100
- 46, 46, 46, 46, 46, 46, 46, 46,
1101
- 46, 46, 46, 46, 46, 46, 46, 46,
1102
- 46, 0, 0, 105, 0, 0, 110, 0,
1009
+ 0, 1, 1, 1, 5, 5, 5, 5,
1010
+ 1, 12, 12, 12, 12, 12, 12, 12,
1011
+ 12, 12, 12, 12, 12, 12, 12, 12,
1012
+ 12, 12, 12, 12, 12, 12, 12, 12,
1013
+ 12, 12, 12, 12, 12, 41, 41, 41,
1014
+ 0, 0, 0, 0, 50, 50, 53, 55,
1015
+ 55, 55, 55, 55, 55, 55, 55, 55,
1016
+ 55, 55, 55, 55, 55, 55, 55, 55,
1017
+ 55, 55, 55, 55, 55, 55, 55, 55,
1018
+ 55, 55, 55, 55, 55, 55, 55, 55,
1019
+ 55, 55, 55, 55, 55, 55, 55, 55,
1020
+ 55, 55, 55, 55, 55, 55, 55, 105,
1021
+ 105, 0, 0, 111, 0, 0, 116, 0,
1103
1022
  0, 0, 0, 0, 0, 0, 0, 0,
1104
- 0, 0, 0, 125, 125, 125, 125, 0,
1105
- 152, 152, 152, 152, 153, 153, 152, 152,
1106
- 154, 156, 156, 161, 163, 165, 167, 171,
1107
- 173, 0, 0, 0, 187, 187, 187, 187,
1108
- 190, 193, 0, 0, 212, 214, 216, 216,
1109
- 216, 220, 220, 220, 220, 225, 0, 233,
1110
- 233, 233, 233
1023
+ 0, 0, 0, 131, 131, 131, 131, 0,
1024
+ 156, 156, 157, 157, 156, 158, 160, 162,
1025
+ 162, 169, 170, 172, 174, 176, 181, 183,
1026
+ 0, 0, 0, 197, 197, 197, 197, 200,
1027
+ 203, 0, 0, 222, 222, 222, 224, 226,
1028
+ 228, 228, 228, 232, 232, 232, 232, 237,
1029
+ 0, 244, 244, 244, 244
1111
1030
  ]
1112
1031
 
1113
1032
  class << self
1114
1033
  attr_accessor :re_scanner_start
1115
1034
  end
1116
- self.re_scanner_start = 111;
1035
+ self.re_scanner_start = 119;
1117
1036
  class << self
1118
1037
  attr_accessor :re_scanner_first_final
1119
1038
  end
1120
- self.re_scanner_first_final = 111;
1039
+ self.re_scanner_first_final = 119;
1121
1040
  class << self
1122
1041
  attr_accessor :re_scanner_error
1123
1042
  end
@@ -1126,36 +1045,36 @@ self.re_scanner_error = 0;
1126
1045
  class << self
1127
1046
  attr_accessor :re_scanner_en_char_type
1128
1047
  end
1129
- self.re_scanner_en_char_type = 129;
1048
+ self.re_scanner_en_char_type = 136;
1130
1049
  class << self
1131
1050
  attr_accessor :re_scanner_en_unicode_property
1132
1051
  end
1133
- self.re_scanner_en_unicode_property = 130;
1052
+ self.re_scanner_en_unicode_property = 137;
1134
1053
  class << self
1135
1054
  attr_accessor :re_scanner_en_character_set
1136
1055
  end
1137
- self.re_scanner_en_character_set = 131;
1056
+ self.re_scanner_en_character_set = 138;
1138
1057
  class << self
1139
1058
  attr_accessor :re_scanner_en_set_escape_sequence
1140
1059
  end
1141
- self.re_scanner_en_set_escape_sequence = 138;
1060
+ self.re_scanner_en_set_escape_sequence = 145;
1142
1061
  class << self
1143
1062
  attr_accessor :re_scanner_en_escape_sequence
1144
1063
  end
1145
- self.re_scanner_en_escape_sequence = 139;
1064
+ self.re_scanner_en_escape_sequence = 146;
1146
1065
  class << self
1147
1066
  attr_accessor :re_scanner_en_conditional_expression
1148
1067
  end
1149
- self.re_scanner_en_conditional_expression = 150;
1068
+ self.re_scanner_en_conditional_expression = 160;
1150
1069
  class << self
1151
1070
  attr_accessor :re_scanner_en_main
1152
1071
  end
1153
- self.re_scanner_en_main = 111;
1072
+ self.re_scanner_en_main = 119;
1154
1073
 
1155
1074
 
1156
- # line 768 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1075
+ # line 739 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1157
1076
 
1158
- # line 1158 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1077
+ # line 1077 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1159
1078
  begin
1160
1079
  p ||= 0
1161
1080
  pe ||= data.length
@@ -1166,9 +1085,9 @@ begin
1166
1085
  act = 0
1167
1086
  end
1168
1087
 
1169
- # line 769 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1088
+ # line 740 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1170
1089
 
1171
- # line 1171 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1090
+ # line 1090 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1172
1091
  begin
1173
1092
  testEof = false
1174
1093
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1191,12 +1110,12 @@ begin
1191
1110
  end
1192
1111
  if _goto_level <= _resume
1193
1112
  case _re_scanner_from_state_actions[cs]
1194
- when 34 then
1113
+ when 33 then
1195
1114
  # line 1 "NONE"
1196
1115
  begin
1197
1116
  ts = p
1198
1117
  end
1199
- # line 1199 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
1118
+ # line 1118 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1200
1119
  end
1201
1120
  _keys = cs << 1
1202
1121
  _inds = _re_scanner_index_offsets[cs]
@@ -1215,35 +1134,35 @@ ts = p
1215
1134
  cs = _re_scanner_trans_targs[_trans]
1216
1135
  if _re_scanner_trans_actions[_trans] != 0
1217
1136
  case _re_scanner_trans_actions[_trans]
1218
- when 37 then
1219
- # line 149 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1137
+ when 35 then
1138
+ # line 159 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1220
1139
  begin
1221
1140
  self.group_depth = group_depth + 1 end
1222
- when 6 then
1223
- # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1141
+ when 4 then
1142
+ # line 160 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1224
1143
  begin
1225
1144
  self.group_depth = group_depth - 1 end
1226
- when 35 then
1145
+ when 39 then
1227
1146
  # line 1 "NONE"
1228
1147
  begin
1229
1148
  te = p+1
1230
1149
  end
1231
- when 64 then
1232
- # line 12 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/char_type.rl"
1150
+ when 67 then
1151
+ # line 12 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/char_type.rl"
1233
1152
  begin
1234
1153
  te = p+1
1235
1154
  begin
1236
- case text = text(data, ts, te, 1).first
1237
- when '\d'; emit(:type, :digit, text, ts - 1, te)
1238
- when '\D'; emit(:type, :nondigit, text, ts - 1, te)
1239
- when '\h'; emit(:type, :hex, text, ts - 1, te)
1240
- when '\H'; emit(:type, :nonhex, text, ts - 1, te)
1241
- when '\s'; emit(:type, :space, text, ts - 1, te)
1242
- when '\S'; emit(:type, :nonspace, text, ts - 1, te)
1243
- when '\w'; emit(:type, :word, text, ts - 1, te)
1244
- when '\W'; emit(:type, :nonword, text, ts - 1, te)
1245
- when '\R'; emit(:type, :linebreak, text, ts - 1, te)
1246
- when '\X'; emit(:type, :xgrapheme, text, ts - 1, te)
1155
+ case text = copy(data, ts-1, te)
1156
+ when '\d'; emit(:type, :digit, text)
1157
+ when '\D'; emit(:type, :nondigit, text)
1158
+ when '\h'; emit(:type, :hex, text)
1159
+ when '\H'; emit(:type, :nonhex, text)
1160
+ when '\s'; emit(:type, :space, text)
1161
+ when '\S'; emit(:type, :nonspace, text)
1162
+ when '\w'; emit(:type, :word, text)
1163
+ when '\W'; emit(:type, :nonword, text)
1164
+ when '\R'; emit(:type, :linebreak, text)
1165
+ when '\X'; emit(:type, :xgrapheme, text)
1247
1166
  end
1248
1167
  begin
1249
1168
  top -= 1
@@ -1254,12 +1173,12 @@ te = p+1
1254
1173
 
1255
1174
  end
1256
1175
  end
1257
- when 14 then
1258
- # line 16 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/property.rl"
1176
+ when 13 then
1177
+ # line 16 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
1259
1178
  begin
1260
1179
  te = p+1
1261
1180
  begin
1262
- text = text(data, ts, te, 1).first
1181
+ text = copy(data, ts-1, te)
1263
1182
  type = (text[1] == 'P') ^ (text[3] == '^') ? :nonproperty : :property
1264
1183
 
1265
1184
  name = data[ts+2..te-2].pack('c*').gsub(/[\^\s_\-]/, '').downcase
@@ -1267,7 +1186,7 @@ te = p+1
1267
1186
  token = self.class.short_prop_map[name] || self.class.long_prop_map[name]
1268
1187
  raise UnknownUnicodePropertyError.new(name) unless token
1269
1188
 
1270
- self.emit(type, token.to_sym, text, ts-1, te)
1189
+ self.emit(type, token.to_sym, text)
1271
1190
 
1272
1191
  begin
1273
1192
  top -= 1
@@ -1278,188 +1197,185 @@ te = p+1
1278
1197
 
1279
1198
  end
1280
1199
  end
1281
- when 18 then
1282
- # line 177 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1200
+ when 17 then
1201
+ # line 187 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1283
1202
  begin
1284
1203
  te = p+1
1285
1204
  begin # special case, emits two tokens
1286
- emit(:literal, :literal, '-', ts, te)
1287
- emit(:set, :intersection, '&&', ts, te)
1205
+ emit(:literal, :literal, '-')
1206
+ emit(:set, :intersection, '&&')
1288
1207
  end
1289
1208
  end
1290
- when 69 then
1291
- # line 182 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1209
+ when 72 then
1210
+ # line 192 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1292
1211
  begin
1293
1212
  te = p+1
1294
1213
  begin
1295
- text = text(data, ts, te).first
1214
+ text = copy(data, ts, te)
1296
1215
  if tokens.last[1] == :open
1297
- emit(:set, :negate, text, ts, te)
1216
+ emit(:set, :negate, text)
1298
1217
  else
1299
- emit(:literal, :literal, text, ts, te)
1218
+ emit(:literal, :literal, text)
1300
1219
  end
1301
1220
  end
1302
1221
  end
1303
- when 71 then
1304
- # line 203 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1222
+ when 74 then
1223
+ # line 213 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1305
1224
  begin
1306
1225
  te = p+1
1307
1226
  begin
1308
- emit(:set, :intersection, *text(data, ts, te))
1227
+ emit(:set, :intersection, copy(data, ts, te))
1309
1228
  end
1310
1229
  end
1311
- when 67 then
1312
- # line 207 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1230
+ when 70 then
1231
+ # line 217 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1313
1232
  begin
1314
1233
  te = p+1
1315
1234
  begin
1316
1235
  begin
1317
1236
  stack[top] = cs
1318
1237
  top+= 1
1319
- cs = 138
1238
+ cs = 145
1320
1239
  _goto_level = _again
1321
1240
  next
1322
1241
  end
1323
1242
 
1324
1243
  end
1325
1244
  end
1326
- when 65 then
1327
- # line 237 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1245
+ when 68 then
1246
+ # line 247 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1328
1247
  begin
1329
1248
  te = p+1
1330
1249
  begin
1331
- emit(:literal, :literal, *text(data, ts, te))
1250
+ emit(:literal, :literal, copy(data, ts, te))
1332
1251
  end
1333
1252
  end
1334
- when 16 then
1335
- # line 245 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1253
+ when 15 then
1254
+ # line 251 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1336
1255
  begin
1337
1256
  te = p+1
1338
1257
  begin
1339
- char, *rest = *text(data, ts, te)
1340
- char.force_encoding('utf-8') if char.respond_to?(:force_encoding)
1341
- emit(:literal, :literal, char, *rest)
1258
+ text = copy(data, ts, te)
1259
+ emit(:literal, :literal, text)
1342
1260
  end
1343
1261
  end
1344
- when 72 then
1345
- # line 191 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1262
+ when 75 then
1263
+ # line 201 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1346
1264
  begin
1347
1265
  te = p
1348
1266
  p = p - 1; begin
1349
- text = text(data, ts, te).first
1267
+ text = copy(data, ts, te)
1350
1268
  # ranges cant start with a subset or intersection/negation/range operator
1351
1269
  if tokens.last[0] == :set
1352
- emit(:literal, :literal, text, ts, te)
1270
+ emit(:literal, :literal, text)
1353
1271
  else
1354
- emit(:set, :range, text, ts, te)
1272
+ emit(:set, :range, text)
1355
1273
  end
1356
1274
  end
1357
1275
  end
1358
- when 75 then
1359
- # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1276
+ when 78 then
1277
+ # line 221 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1360
1278
  begin
1361
1279
  te = p
1362
1280
  p = p - 1; begin
1363
- emit(:set, :open, *text(data, ts, te))
1281
+ emit(:set, :open, copy(data, ts, te))
1364
1282
  begin
1365
1283
  stack[top] = cs
1366
1284
  top+= 1
1367
- cs = 131
1285
+ cs = 138
1368
1286
  _goto_level = _again
1369
1287
  next
1370
1288
  end
1371
1289
 
1372
1290
  end
1373
1291
  end
1374
- when 70 then
1375
- # line 245 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1292
+ when 73 then
1293
+ # line 251 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1376
1294
  begin
1377
1295
  te = p
1378
1296
  p = p - 1; begin
1379
- char, *rest = *text(data, ts, te)
1380
- char.force_encoding('utf-8') if char.respond_to?(:force_encoding)
1381
- emit(:literal, :literal, char, *rest)
1297
+ text = copy(data, ts, te)
1298
+ emit(:literal, :literal, text)
1382
1299
  end
1383
1300
  end
1384
- when 17 then
1385
- # line 191 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1301
+ when 16 then
1302
+ # line 201 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1386
1303
  begin
1387
1304
  begin p = ((te))-1; end
1388
1305
  begin
1389
- text = text(data, ts, te).first
1306
+ text = copy(data, ts, te)
1390
1307
  # ranges cant start with a subset or intersection/negation/range operator
1391
1308
  if tokens.last[0] == :set
1392
- emit(:literal, :literal, text, ts, te)
1309
+ emit(:literal, :literal, text)
1393
1310
  else
1394
- emit(:set, :range, text, ts, te)
1311
+ emit(:set, :range, text)
1395
1312
  end
1396
1313
  end
1397
1314
  end
1398
- when 20 then
1399
- # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1315
+ when 19 then
1316
+ # line 221 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1400
1317
  begin
1401
1318
  begin p = ((te))-1; end
1402
1319
  begin
1403
- emit(:set, :open, *text(data, ts, te))
1320
+ emit(:set, :open, copy(data, ts, te))
1404
1321
  begin
1405
1322
  stack[top] = cs
1406
1323
  top+= 1
1407
- cs = 131
1324
+ cs = 138
1408
1325
  _goto_level = _again
1409
1326
  next
1410
1327
  end
1411
1328
 
1412
1329
  end
1413
1330
  end
1414
- when 15 then
1415
- # line 245 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1331
+ when 14 then
1332
+ # line 251 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1416
1333
  begin
1417
1334
  begin p = ((te))-1; end
1418
1335
  begin
1419
- char, *rest = *text(data, ts, te)
1420
- char.force_encoding('utf-8') if char.respond_to?(:force_encoding)
1421
- emit(:literal, :literal, char, *rest)
1336
+ text = copy(data, ts, te)
1337
+ emit(:literal, :literal, text)
1422
1338
  end
1423
1339
  end
1424
- when 77 then
1425
- # line 255 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1340
+ when 80 then
1341
+ # line 260 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1426
1342
  begin
1427
1343
  te = p+1
1428
1344
  begin
1429
- emit(:escape, :literal, *text(data, ts, te, 1))
1345
+ p = p - 1;
1346
+ cs = 138;
1430
1347
  begin
1431
- top -= 1
1432
- cs = stack[top]
1348
+ stack[top] = cs
1349
+ top+= 1
1350
+ cs = 146
1433
1351
  _goto_level = _again
1434
1352
  next
1435
1353
  end
1436
1354
 
1437
1355
  end
1438
1356
  end
1439
- when 76 then
1440
- # line 260 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1357
+ when 79 then
1358
+ # line 266 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1441
1359
  begin
1442
1360
  te = p+1
1443
1361
  begin
1444
- p = p - 1;
1445
- cs = 131;
1362
+ emit(:escape, :literal, copy(data, ts-1, te))
1446
1363
  begin
1447
- stack[top] = cs
1448
- top+= 1
1449
- cs = 139
1364
+ top -= 1
1365
+ cs = stack[top]
1450
1366
  _goto_level = _again
1451
1367
  next
1452
1368
  end
1453
1369
 
1454
1370
  end
1455
1371
  end
1456
- when 82 then
1457
- # line 271 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1372
+ when 84 then
1373
+ # line 276 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1458
1374
  begin
1459
1375
  te = p+1
1460
1376
  begin
1461
- text = text(data, ts, te, 1).first
1462
- emit(:backref, :number, text, ts-1, te)
1377
+ text = copy(data, ts-1, te)
1378
+ emit(:backref, :number, text)
1463
1379
  begin
1464
1380
  top -= 1
1465
1381
  cs = stack[top]
@@ -1469,12 +1385,12 @@ te = p+1
1469
1385
 
1470
1386
  end
1471
1387
  end
1472
- when 88 then
1473
- # line 277 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1388
+ when 91 then
1389
+ # line 282 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1474
1390
  begin
1475
1391
  te = p+1
1476
1392
  begin
1477
- emit(:escape, :octal, *text(data, ts, te, 1))
1393
+ emit(:escape, :octal, copy(data, ts-1, te))
1478
1394
  begin
1479
1395
  top -= 1
1480
1396
  cs = stack[top]
@@ -1484,27 +1400,27 @@ te = p+1
1484
1400
 
1485
1401
  end
1486
1402
  end
1487
- when 79 then
1488
- # line 282 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1403
+ when 81 then
1404
+ # line 287 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1489
1405
  begin
1490
1406
  te = p+1
1491
1407
  begin
1492
- case text = text(data, ts, te, 1).first
1493
- when '\.'; emit(:escape, :dot, text, ts-1, te)
1494
- when '\|'; emit(:escape, :alternation, text, ts-1, te)
1495
- when '\^'; emit(:escape, :bol, text, ts-1, te)
1496
- when '\$'; emit(:escape, :eol, text, ts-1, te)
1497
- when '\?'; emit(:escape, :zero_or_one, text, ts-1, te)
1498
- when '\*'; emit(:escape, :zero_or_more, text, ts-1, te)
1499
- when '\+'; emit(:escape, :one_or_more, text, ts-1, te)
1500
- when '\('; emit(:escape, :group_open, text, ts-1, te)
1501
- when '\)'; emit(:escape, :group_close, text, ts-1, te)
1502
- when '\{'; emit(:escape, :interval_open, text, ts-1, te)
1503
- when '\}'; emit(:escape, :interval_close, text, ts-1, te)
1504
- when '\['; emit(:escape, :set_open, text, ts-1, te)
1505
- when '\]'; emit(:escape, :set_close, text, ts-1, te)
1408
+ case text = copy(data, ts-1, te)
1409
+ when '\.'; emit(:escape, :dot, text)
1410
+ when '\|'; emit(:escape, :alternation, text)
1411
+ when '\^'; emit(:escape, :bol, text)
1412
+ when '\$'; emit(:escape, :eol, text)
1413
+ when '\?'; emit(:escape, :zero_or_one, text)
1414
+ when '\*'; emit(:escape, :zero_or_more, text)
1415
+ when '\+'; emit(:escape, :one_or_more, text)
1416
+ when '\('; emit(:escape, :group_open, text)
1417
+ when '\)'; emit(:escape, :group_close, text)
1418
+ when '\{'; emit(:escape, :interval_open, text)
1419
+ when '\}'; emit(:escape, :interval_close, text)
1420
+ when '\['; emit(:escape, :set_open, text)
1421
+ when '\]'; emit(:escape, :set_close, text)
1506
1422
  when "\\\\";
1507
- emit(:escape, :backslash, text, ts-1, te)
1423
+ emit(:escape, :backslash, text)
1508
1424
  end
1509
1425
  begin
1510
1426
  top -= 1
@@ -1515,22 +1431,22 @@ te = p+1
1515
1431
 
1516
1432
  end
1517
1433
  end
1518
- when 85 then
1519
- # line 303 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1434
+ when 87 then
1435
+ # line 308 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1520
1436
  begin
1521
1437
  te = p+1
1522
1438
  begin
1523
1439
  # \b is emitted as backspace only when inside a character set, otherwise
1524
1440
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
1525
- case text = text(data, ts, te, 1).first
1526
- when '\a'; emit(:escape, :bell, text, ts-1, te)
1527
- when '\b'; emit(:escape, :backspace, text, ts-1, te)
1528
- when '\e'; emit(:escape, :escape, text, ts-1, te)
1529
- when '\f'; emit(:escape, :form_feed, text, ts-1, te)
1530
- when '\n'; emit(:escape, :newline, text, ts-1, te)
1531
- when '\r'; emit(:escape, :carriage, text, ts-1, te)
1532
- when '\t'; emit(:escape, :tab, text, ts-1, te)
1533
- when '\v'; emit(:escape, :vertical_tab, text, ts-1, te)
1441
+ case text = copy(data, ts-1, te)
1442
+ when '\a'; emit(:escape, :bell, text)
1443
+ when '\b'; emit(:escape, :backspace, text)
1444
+ when '\e'; emit(:escape, :escape, text)
1445
+ when '\f'; emit(:escape, :form_feed, text)
1446
+ when '\n'; emit(:escape, :newline, text)
1447
+ when '\r'; emit(:escape, :carriage, text)
1448
+ when '\t'; emit(:escape, :tab, text)
1449
+ when '\v'; emit(:escape, :vertical_tab, text)
1534
1450
  end
1535
1451
  begin
1536
1452
  top -= 1
@@ -1541,16 +1457,16 @@ te = p+1
1541
1457
 
1542
1458
  end
1543
1459
  end
1544
- when 29 then
1545
- # line 319 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1460
+ when 28 then
1461
+ # line 324 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1546
1462
  begin
1547
1463
  te = p+1
1548
1464
  begin
1549
- text = text(data, ts, te, 1).first
1465
+ text = copy(data, ts-1, te)
1550
1466
  if text[2].chr == '{'
1551
- emit(:escape, :codepoint_list, text, ts-1, te)
1467
+ emit(:escape, :codepoint_list, text)
1552
1468
  else
1553
- emit(:escape, :codepoint, text, ts-1, te)
1469
+ emit(:escape, :codepoint, text)
1554
1470
  end
1555
1471
  begin
1556
1472
  top -= 1
@@ -1561,12 +1477,12 @@ te = p+1
1561
1477
 
1562
1478
  end
1563
1479
  end
1564
- when 95 then
1565
- # line 329 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1480
+ when 97 then
1481
+ # line 334 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1566
1482
  begin
1567
1483
  te = p+1
1568
1484
  begin
1569
- emit(:escape, :hex, *text(data, ts, te, 1))
1485
+ emit(:escape, :hex, copy(data, ts-1, te))
1570
1486
  begin
1571
1487
  top -= 1
1572
1488
  cs = stack[top]
@@ -1576,8 +1492,8 @@ te = p+1
1576
1492
 
1577
1493
  end
1578
1494
  end
1579
- when 25 then
1580
- # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1495
+ when 24 then
1496
+ # line 343 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1581
1497
  begin
1582
1498
  te = p+1
1583
1499
  begin
@@ -1591,8 +1507,8 @@ te = p+1
1591
1507
 
1592
1508
  end
1593
1509
  end
1594
- when 27 then
1595
- # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1510
+ when 26 then
1511
+ # line 348 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1596
1512
  begin
1597
1513
  te = p+1
1598
1514
  begin
@@ -1606,46 +1522,46 @@ te = p+1
1606
1522
 
1607
1523
  end
1608
1524
  end
1609
- when 83 then
1610
- # line 348 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1525
+ when 85 then
1526
+ # line 353 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1611
1527
  begin
1612
1528
  te = p+1
1613
1529
  begin
1614
1530
  p = p - 1;
1615
- cs = ((in_set? ? 131 : 111));
1531
+ cs = ((in_set? ? 138 : 119));
1616
1532
  begin
1617
1533
  stack[top] = cs
1618
1534
  top+= 1
1619
- cs = 129
1535
+ cs = 136
1620
1536
  _goto_level = _again
1621
1537
  next
1622
1538
  end
1623
1539
 
1624
1540
  end
1625
1541
  end
1626
- when 84 then
1627
- # line 354 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1542
+ when 86 then
1543
+ # line 359 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1628
1544
  begin
1629
1545
  te = p+1
1630
1546
  begin
1631
1547
  p = p - 1;
1632
- cs = ((in_set? ? 131 : 111));
1548
+ cs = ((in_set? ? 138 : 119));
1633
1549
  begin
1634
1550
  stack[top] = cs
1635
1551
  top+= 1
1636
- cs = 130
1552
+ cs = 137
1637
1553
  _goto_level = _again
1638
1554
  next
1639
1555
  end
1640
1556
 
1641
1557
  end
1642
1558
  end
1643
- when 78 then
1644
- # line 360 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1559
+ when 22 then
1560
+ # line 365 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1645
1561
  begin
1646
1562
  te = p+1
1647
1563
  begin
1648
- emit(:escape, :literal, *text(data, ts, te, 1))
1564
+ emit(:escape, :literal, copy(data, ts-1, te))
1649
1565
  begin
1650
1566
  top -= 1
1651
1567
  cs = stack[top]
@@ -1655,12 +1571,12 @@ te = p+1
1655
1571
 
1656
1572
  end
1657
1573
  end
1658
- when 87 then
1659
- # line 277 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1574
+ when 90 then
1575
+ # line 282 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1660
1576
  begin
1661
1577
  te = p
1662
1578
  p = p - 1; begin
1663
- emit(:escape, :octal, *text(data, ts, te, 1))
1579
+ emit(:escape, :octal, copy(data, ts-1, te))
1664
1580
  begin
1665
1581
  top -= 1
1666
1582
  cs = stack[top]
@@ -1670,12 +1586,12 @@ p = p - 1; begin
1670
1586
 
1671
1587
  end
1672
1588
  end
1673
- when 94 then
1674
- # line 329 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1589
+ when 96 then
1590
+ # line 334 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1675
1591
  begin
1676
1592
  te = p
1677
1593
  p = p - 1; begin
1678
- emit(:escape, :hex, *text(data, ts, te, 1))
1594
+ emit(:escape, :hex, copy(data, ts-1, te))
1679
1595
  begin
1680
1596
  top -= 1
1681
1597
  cs = stack[top]
@@ -1685,8 +1601,8 @@ p = p - 1; begin
1685
1601
 
1686
1602
  end
1687
1603
  end
1688
- when 90 then
1689
- # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1604
+ when 93 then
1605
+ # line 343 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1690
1606
  begin
1691
1607
  te = p
1692
1608
  p = p - 1; begin
@@ -1700,8 +1616,8 @@ p = p - 1; begin
1700
1616
 
1701
1617
  end
1702
1618
  end
1703
- when 92 then
1704
- # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1619
+ when 95 then
1620
+ # line 348 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1705
1621
  begin
1706
1622
  te = p
1707
1623
  p = p - 1; begin
@@ -1715,15 +1631,45 @@ p = p - 1; begin
1715
1631
 
1716
1632
  end
1717
1633
  end
1718
- when 86 then
1634
+ when 88 then
1635
+ # line 365 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1636
+ begin
1637
+ te = p
1638
+ p = p - 1; begin
1639
+ emit(:escape, :literal, copy(data, ts-1, te))
1640
+ begin
1641
+ top -= 1
1642
+ cs = stack[top]
1643
+ _goto_level = _again
1644
+ next
1645
+ end
1646
+
1647
+ end
1648
+ end
1649
+ when 21 then
1650
+ # line 365 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1651
+ begin
1652
+ begin p = ((te))-1; end
1653
+ begin
1654
+ emit(:escape, :literal, copy(data, ts-1, te))
1655
+ begin
1656
+ top -= 1
1657
+ cs = stack[top]
1658
+ _goto_level = _again
1659
+ next
1660
+ end
1661
+
1662
+ end
1663
+ end
1664
+ when 89 then
1719
1665
  # line 1 "NONE"
1720
1666
  begin
1721
1667
  case act
1722
- when 18 then
1668
+ when 16 then
1723
1669
  begin begin p = ((te))-1; end
1724
1670
 
1725
- text = text(data, ts, te, 1).first
1726
- emit(:backref, :number, text, ts-1, te)
1671
+ text = copy(data, ts-1, te)
1672
+ emit(:backref, :number, text)
1727
1673
  begin
1728
1674
  top -= 1
1729
1675
  cs = stack[top]
@@ -1732,10 +1678,10 @@ p = p - 1; begin
1732
1678
  end
1733
1679
 
1734
1680
  end
1735
- when 19 then
1681
+ when 17 then
1736
1682
  begin begin p = ((te))-1; end
1737
1683
 
1738
- emit(:escape, :octal, *text(data, ts, te, 1))
1684
+ emit(:escape, :octal, copy(data, ts-1, te))
1739
1685
  begin
1740
1686
  top -= 1
1741
1687
  cs = stack[top]
@@ -1746,18 +1692,18 @@ p = p - 1; begin
1746
1692
  end
1747
1693
  end
1748
1694
  end
1749
- when 32 then
1750
- # line 370 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1695
+ when 31 then
1696
+ # line 375 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1751
1697
  begin
1752
1698
  te = p+1
1753
1699
  begin
1754
- text = text(data, ts, te-1).first
1755
- emit(:conditional, :condition, text, ts, te-1)
1756
- emit(:conditional, :condition_close, ')', te-1, te)
1700
+ text = copy(data, ts, te-1)
1701
+ emit(:conditional, :condition, text)
1702
+ emit(:conditional, :condition_close, ')')
1757
1703
  end
1758
1704
  end
1759
- when 96 then
1760
- # line 376 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1705
+ when 98 then
1706
+ # line 381 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1761
1707
  begin
1762
1708
  te = p+1
1763
1709
  begin
@@ -1765,15 +1711,15 @@ te = p+1
1765
1711
  begin
1766
1712
  stack[top] = cs
1767
1713
  top+= 1
1768
- cs = 111
1714
+ cs = 119
1769
1715
  _goto_level = _again
1770
1716
  next
1771
1717
  end
1772
1718
 
1773
1719
  end
1774
1720
  end
1775
- when 97 then
1776
- # line 376 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1721
+ when 99 then
1722
+ # line 381 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1777
1723
  begin
1778
1724
  te = p
1779
1725
  p = p - 1; begin
@@ -1781,15 +1727,15 @@ p = p - 1; begin
1781
1727
  begin
1782
1728
  stack[top] = cs
1783
1729
  top+= 1
1784
- cs = 111
1730
+ cs = 119
1785
1731
  _goto_level = _again
1786
1732
  next
1787
1733
  end
1788
1734
 
1789
1735
  end
1790
1736
  end
1791
- when 31 then
1792
- # line 376 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1737
+ when 30 then
1738
+ # line 381 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1793
1739
  begin
1794
1740
  begin p = ((te))-1; end
1795
1741
  begin
@@ -1797,352 +1743,340 @@ p = p - 1; begin
1797
1743
  begin
1798
1744
  stack[top] = cs
1799
1745
  top+= 1
1800
- cs = 111
1746
+ cs = 119
1801
1747
  _goto_level = _again
1802
1748
  next
1803
1749
  end
1804
1750
 
1805
1751
  end
1806
1752
  end
1807
- when 39 then
1808
- # line 389 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1753
+ when 37 then
1754
+ # line 394 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1809
1755
  begin
1810
1756
  te = p+1
1811
1757
  begin
1812
- emit(:meta, :dot, *text(data, ts, te))
1758
+ emit(:meta, :dot, copy(data, ts, te))
1813
1759
  end
1814
1760
  end
1815
- when 43 then
1816
- # line 393 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1761
+ when 42 then
1762
+ # line 398 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1817
1763
  begin
1818
1764
  te = p+1
1819
1765
  begin
1820
1766
  if conditional_stack.last == group_depth
1821
- emit(:conditional, :separator, *text(data, ts, te))
1767
+ emit(:conditional, :separator, copy(data, ts, te))
1822
1768
  else
1823
- emit(:meta, :alternation, *text(data, ts, te))
1769
+ emit(:meta, :alternation, copy(data, ts, te))
1824
1770
  end
1825
1771
  end
1826
1772
  end
1827
- when 42 then
1828
- # line 403 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1773
+ when 41 then
1774
+ # line 408 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1829
1775
  begin
1830
1776
  te = p+1
1831
1777
  begin
1832
- emit(:anchor, :bol, *text(data, ts, te))
1778
+ emit(:anchor, :bol, copy(data, ts, te))
1833
1779
  end
1834
1780
  end
1835
- when 36 then
1836
- # line 407 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1781
+ when 34 then
1782
+ # line 412 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1837
1783
  begin
1838
1784
  te = p+1
1839
1785
  begin
1840
- emit(:anchor, :eol, *text(data, ts, te))
1786
+ emit(:anchor, :eol, copy(data, ts, te))
1841
1787
  end
1842
1788
  end
1843
- when 59 then
1844
- # line 411 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1789
+ when 62 then
1790
+ # line 416 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1845
1791
  begin
1846
1792
  te = p+1
1847
1793
  begin
1848
- emit(:keep, :mark, *text(data, ts, te))
1794
+ emit(:keep, :mark, copy(data, ts, te))
1849
1795
  end
1850
1796
  end
1851
- when 58 then
1852
- # line 415 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1797
+ when 61 then
1798
+ # line 420 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1853
1799
  begin
1854
1800
  te = p+1
1855
1801
  begin
1856
- case text = text(data, ts, te).first
1857
- when '\\A'; emit(:anchor, :bos, text, ts, te)
1858
- when '\\z'; emit(:anchor, :eos, text, ts, te)
1859
- when '\\Z'; emit(:anchor, :eos_ob_eol, text, ts, te)
1860
- when '\\b'; emit(:anchor, :word_boundary, text, ts, te)
1861
- when '\\B'; emit(:anchor, :nonword_boundary, text, ts, te)
1862
- when '\\G'; emit(:anchor, :match_start, text, ts, te)
1802
+ case text = copy(data, ts, te)
1803
+ when '\\A'; emit(:anchor, :bos, text)
1804
+ when '\\z'; emit(:anchor, :eos, text)
1805
+ when '\\Z'; emit(:anchor, :eos_ob_eol, text)
1806
+ when '\\b'; emit(:anchor, :word_boundary, text)
1807
+ when '\\B'; emit(:anchor, :nonword_boundary, text)
1808
+ when '\\G'; emit(:anchor, :match_start, text)
1863
1809
  end
1864
1810
  end
1865
1811
  end
1866
- when 41 then
1867
- # line 426 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1812
+ when 40 then
1813
+ # line 431 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1868
1814
  begin
1869
1815
  te = p+1
1870
1816
  begin
1871
1817
  append_literal(data, ts, te)
1872
1818
  end
1873
1819
  end
1874
- when 49 then
1875
- # line 441 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1820
+ when 51 then
1821
+ # line 446 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1876
1822
  begin
1877
1823
  te = p+1
1878
1824
  begin
1879
- text = text(data, ts, te).first
1825
+ text = copy(data, ts, te)
1880
1826
 
1881
1827
  conditional_stack << group_depth
1882
1828
 
1883
- emit(:conditional, :open, text[0..-2], ts, te-1)
1884
- emit(:conditional, :condition_open, '(', te-1, te)
1829
+ emit(:conditional, :open, text[0..-2])
1830
+ emit(:conditional, :condition_open, '(')
1885
1831
  begin
1886
1832
  stack[top] = cs
1887
1833
  top+= 1
1888
- cs = 150
1834
+ cs = 160
1889
1835
  _goto_level = _again
1890
1836
  next
1891
1837
  end
1892
1838
 
1893
1839
  end
1894
1840
  end
1895
- when 50 then
1896
- # line 472 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1841
+ when 52 then
1842
+ # line 477 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1897
1843
  begin
1898
1844
  te = p+1
1899
1845
  begin
1900
- text = text(data, ts, te).first
1846
+ text = copy(data, ts, te)
1901
1847
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1902
1848
  raise InvalidGroupOption.new($1 || "-#{$2}", text)
1903
1849
  end
1904
- emit_options(text, ts, te)
1850
+ emit_options(text)
1905
1851
  end
1906
1852
  end
1907
- when 9 then
1908
- # line 486 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1853
+ when 50 then
1854
+ # line 491 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1909
1855
  begin
1910
1856
  te = p+1
1911
1857
  begin
1912
- case text = text(data, ts, te).first
1913
- when '(?='; emit(:assertion, :lookahead, text, ts, te)
1914
- when '(?!'; emit(:assertion, :nlookahead, text, ts, te)
1915
- when '(?<='; emit(:assertion, :lookbehind, text, ts, te)
1916
- when '(?<!'; emit(:assertion, :nlookbehind, text, ts, te)
1858
+ case text = copy(data, ts, te)
1859
+ when '(?='; emit(:assertion, :lookahead, text)
1860
+ when '(?!'; emit(:assertion, :nlookahead, text)
1861
+ when '(?<='; emit(:assertion, :lookbehind, text)
1862
+ when '(?<!'; emit(:assertion, :nlookbehind, text)
1917
1863
  end
1918
1864
  end
1919
1865
  end
1920
- when 8 then
1921
- # line 503 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1866
+ when 6 then
1867
+ # line 508 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1922
1868
  begin
1923
1869
  te = p+1
1924
1870
  begin
1925
- case text = text(data, ts, te).first
1926
- when '(?:'; emit(:group, :passive, text, ts, te)
1927
- when '(?>'; emit(:group, :atomic, text, ts, te)
1928
- when '(?~'; emit(:group, :absence, text, ts, te)
1871
+ case text = copy(data, ts, te)
1872
+ when '(?:'; emit(:group, :passive, text)
1873
+ when '(?>'; emit(:group, :atomic, text)
1874
+ when '(?~'; emit(:group, :absence, text)
1929
1875
 
1930
1876
  when /^\(\?(?:<>|'')/
1931
1877
  validation_error(:group, 'named group', 'name is empty')
1932
1878
 
1933
- when /^\(\?<\w*>/
1934
- emit(:group, :named_ab, text, ts, te)
1879
+ when /^\(\?<[^>]+>/
1880
+ emit(:group, :named_ab, text)
1935
1881
 
1936
- when /^\(\?'\w*'/
1937
- emit(:group, :named_sq, text, ts, te)
1882
+ when /^\(\?'[^']+'/
1883
+ emit(:group, :named_sq, text)
1938
1884
 
1939
1885
  end
1940
1886
  end
1941
1887
  end
1942
- when 11 then
1943
- # line 544 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1888
+ when 10 then
1889
+ # line 549 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1944
1890
  begin
1945
1891
  te = p+1
1946
1892
  begin
1947
- case text = text(data, ts, te).first
1948
- when /^\\([gk])(<>|'')/ # angle brackets
1949
- validation_error(:backref, 'ref/call', 'ref ID is empty')
1950
-
1951
- when /^\\([gk])<[^\d+-]\w*>/ # angle-brackets
1952
- if $1 == 'k'
1953
- emit(:backref, :name_ref_ab, text, ts, te)
1954
- else
1955
- emit(:backref, :name_call_ab, text, ts, te)
1956
- end
1957
-
1958
- when /^\\([gk])'[^\d+-]\w*'/ #single quotes
1959
- if $1 == 'k'
1960
- emit(:backref, :name_ref_sq, text, ts, te)
1961
- else
1962
- emit(:backref, :name_call_sq, text, ts, te)
1963
- end
1964
-
1965
- when /^\\([gk])<\d+>/ # angle-brackets
1966
- if $1 == 'k'
1967
- emit(:backref, :number_ref_ab, text, ts, te)
1968
- else
1969
- emit(:backref, :number_call_ab, text, ts, te)
1970
- end
1971
-
1972
- when /^\\([gk])'\d+'/ # single quotes
1973
- if $1 == 'k'
1974
- emit(:backref, :number_ref_sq, text, ts, te)
1975
- else
1976
- emit(:backref, :number_call_sq, text, ts, te)
1977
- end
1978
-
1979
- when /^\\(?:g<\+|g<-|(k)<-)\d+>/ # angle-brackets
1980
- if $1 == 'k'
1981
- emit(:backref, :number_rel_ref_ab, text, ts, te)
1982
- else
1983
- emit(:backref, :number_rel_call_ab, text, ts, te)
1984
- end
1985
-
1986
- when /^\\(?:g'\+|g'-|(k)'-)\d+'/ # single quotes
1987
- if $1 == 'k'
1988
- emit(:backref, :number_rel_ref_sq, text, ts, te)
1989
- else
1990
- emit(:backref, :number_rel_call_sq, text, ts, te)
1991
- end
1992
-
1993
- when /^\\k<[^\d+\-]\w*[+\-]\d+>/ # angle-brackets
1994
- emit(:backref, :name_recursion_ref_ab, text, ts, te)
1995
-
1996
- when /^\\k'[^\d+\-]\w*[+\-]\d+'/ # single-quotes
1997
- emit(:backref, :name_recursion_ref_sq, text, ts, te)
1998
-
1999
- when /^\\([gk])<[+\-]?\d+[+\-]\d+>/ # angle-brackets
2000
- emit(:backref, :number_recursion_ref_ab, text, ts, te)
2001
-
2002
- when /^\\([gk])'[+\-]?\d+[+\-]\d+'/ # single-quotes
2003
- emit(:backref, :number_recursion_ref_sq, text, ts, te)
2004
-
1893
+ case text = copy(data, ts, te)
1894
+ when /^\\k(<>|'')/
1895
+ validation_error(:backref, 'backreference', 'ref ID is empty')
1896
+ when /^\\k(.)[^\p{digit}\-][^+\-]*\D$/
1897
+ emit(:backref, $1 == '<' ? :name_ref_ab : :name_ref_sq, text)
1898
+ when /^\\k(.)\d+\D$/
1899
+ emit(:backref, $1 == '<' ? :number_ref_ab : :number_ref_sq, text)
1900
+ when /^\\k(.)-\d+\D$/
1901
+ emit(:backref, $1 == '<' ? :number_rel_ref_ab : :number_rel_ref_sq, text)
1902
+ when /^\\k(.)[^\p{digit}\-].*[+\-]\d+\D$/
1903
+ emit(:backref, $1 == '<' ? :name_recursion_ref_ab : :name_recursion_ref_sq, text)
1904
+ when /^\\k(.)-?\d+[+\-]\d+\D$/
1905
+ emit(:backref, $1 == '<' ? :number_recursion_ref_ab : :number_recursion_ref_sq, text)
2005
1906
  end
2006
1907
  end
2007
1908
  end
2008
- when 56 then
2009
- # line 609 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1909
+ when 9 then
1910
+ # line 568 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2010
1911
  begin
2011
1912
  te = p+1
2012
1913
  begin
2013
- case text = text(data, ts, te).first
2014
- when '?' ; emit(:quantifier, :zero_or_one, text, ts, te)
2015
- when '??'; emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2016
- when '?+'; emit(:quantifier, :zero_or_one_possessive, text, ts, te)
1914
+ case text = copy(data, ts, te)
1915
+ when /^\\g(<>|'')/
1916
+ validation_error(:backref, 'subexpression call', 'ref ID is empty')
1917
+ when /^\\g(.)[^\p{digit}+\->][^+\-]*/
1918
+ emit(:backref, $1 == '<' ? :name_call_ab : :name_call_sq, text)
1919
+ when /^\\g(.)\d+\D$/
1920
+ emit(:backref, $1 == '<' ? :number_call_ab : :number_call_sq, text)
1921
+ when /^\\g(.)[+-]\d+/
1922
+ emit(:backref, $1 == '<' ? :number_rel_call_ab : :number_rel_call_sq, text)
2017
1923
  end
2018
1924
  end
2019
1925
  end
2020
- when 52 then
2021
- # line 617 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1926
+ when 59 then
1927
+ # line 584 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2022
1928
  begin
2023
1929
  te = p+1
2024
1930
  begin
2025
- case text = text(data, ts, te).first
2026
- when '*' ; emit(:quantifier, :zero_or_more, text, ts, te)
2027
- when '*?'; emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2028
- when '*+'; emit(:quantifier, :zero_or_more_possessive, text, ts, te)
1931
+ case text = copy(data, ts, te)
1932
+ when '?' ; emit(:quantifier, :zero_or_one, text)
1933
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
1934
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
2029
1935
  end
2030
1936
  end
2031
1937
  end
2032
- when 54 then
2033
- # line 625 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1938
+ when 55 then
1939
+ # line 592 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2034
1940
  begin
2035
1941
  te = p+1
2036
1942
  begin
2037
- case text = text(data, ts, te).first
2038
- when '+' ; emit(:quantifier, :one_or_more, text, ts, te)
2039
- when '+?'; emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2040
- when '++'; emit(:quantifier, :one_or_more_possessive, text, ts, te)
1943
+ case text = copy(data, ts, te)
1944
+ when '*' ; emit(:quantifier, :zero_or_more, text)
1945
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
1946
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
2041
1947
  end
2042
1948
  end
2043
1949
  end
2044
- when 62 then
2045
- # line 633 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1950
+ when 57 then
1951
+ # line 600 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2046
1952
  begin
2047
1953
  te = p+1
2048
1954
  begin
2049
- emit(:quantifier, :interval, *text(data, ts, te))
1955
+ case text = copy(data, ts, te)
1956
+ when '+' ; emit(:quantifier, :one_or_more, text)
1957
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
1958
+ when '++'; emit(:quantifier, :one_or_more_possessive, text)
1959
+ end
2050
1960
  end
2051
1961
  end
2052
- when 4 then
2053
- # line 648 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1962
+ when 65 then
1963
+ # line 608 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1964
+ begin
1965
+ te = p+1
1966
+ begin
1967
+ emit(:quantifier, :interval, copy(data, ts, te))
1968
+ end
1969
+ end
1970
+ when 46 then
1971
+ # line 623 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2054
1972
  begin
2055
1973
  te = p+1
2056
1974
  begin
2057
1975
  if free_spacing
2058
- emit(:free_space, :comment, *text(data, ts, te))
1976
+ emit(:free_space, :comment, copy(data, ts, te))
2059
1977
  else
2060
- append_literal(data, ts, te)
1978
+ # consume only the pound sign (#) and backtrack to do regular scanning
1979
+ append_literal(data, ts, ts + 1)
1980
+ begin p = (( ts + 1))-1; end
1981
+
2061
1982
  end
2062
1983
  end
2063
1984
  end
2064
- when 48 then
2065
- # line 472 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1985
+ when 49 then
1986
+ # line 477 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2066
1987
  begin
2067
1988
  te = p
2068
1989
  p = p - 1; begin
2069
- text = text(data, ts, te).first
1990
+ text = copy(data, ts, te)
2070
1991
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2071
1992
  raise InvalidGroupOption.new($1 || "-#{$2}", text)
2072
1993
  end
2073
- emit_options(text, ts, te)
1994
+ emit_options(text)
2074
1995
  end
2075
1996
  end
2076
- when 46 then
2077
- # line 521 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1997
+ when 53 then
1998
+ # line 491 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2078
1999
  begin
2079
2000
  te = p
2080
2001
  p = p - 1; begin
2081
- text = text(data, ts, te).first
2082
- emit(:group, :capture, text, ts, te)
2002
+ case text = copy(data, ts, te)
2003
+ when '(?='; emit(:assertion, :lookahead, text)
2004
+ when '(?!'; emit(:assertion, :nlookahead, text)
2005
+ when '(?<='; emit(:assertion, :lookbehind, text)
2006
+ when '(?<!'; emit(:assertion, :nlookbehind, text)
2007
+ end
2083
2008
  end
2084
2009
  end
2085
- when 55 then
2086
- # line 609 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2010
+ when 47 then
2011
+ # line 526 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2012
+ begin
2013
+ te = p
2014
+ p = p - 1; begin
2015
+ text = copy(data, ts, te)
2016
+ emit(:group, :capture, text)
2017
+ end
2018
+ end
2019
+ when 58 then
2020
+ # line 584 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2087
2021
  begin
2088
2022
  te = p
2089
2023
  p = p - 1; begin
2090
- case text = text(data, ts, te).first
2091
- when '?' ; emit(:quantifier, :zero_or_one, text, ts, te)
2092
- when '??'; emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2093
- when '?+'; emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2024
+ case text = copy(data, ts, te)
2025
+ when '?' ; emit(:quantifier, :zero_or_one, text)
2026
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
2027
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
2094
2028
  end
2095
2029
  end
2096
2030
  end
2097
- when 51 then
2098
- # line 617 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2031
+ when 54 then
2032
+ # line 592 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2099
2033
  begin
2100
2034
  te = p
2101
2035
  p = p - 1; begin
2102
- case text = text(data, ts, te).first
2103
- when '*' ; emit(:quantifier, :zero_or_more, text, ts, te)
2104
- when '*?'; emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2105
- when '*+'; emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2036
+ case text = copy(data, ts, te)
2037
+ when '*' ; emit(:quantifier, :zero_or_more, text)
2038
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
2039
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
2106
2040
  end
2107
2041
  end
2108
2042
  end
2109
- when 53 then
2110
- # line 625 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2043
+ when 56 then
2044
+ # line 600 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2111
2045
  begin
2112
2046
  te = p
2113
2047
  p = p - 1; begin
2114
- case text = text(data, ts, te).first
2115
- when '+' ; emit(:quantifier, :one_or_more, text, ts, te)
2116
- when '+?'; emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2117
- when '++'; emit(:quantifier, :one_or_more_possessive, text, ts, te)
2048
+ case text = copy(data, ts, te)
2049
+ when '+' ; emit(:quantifier, :one_or_more, text)
2050
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
2051
+ when '++'; emit(:quantifier, :one_or_more_possessive, text)
2118
2052
  end
2119
2053
  end
2120
2054
  end
2121
- when 61 then
2122
- # line 633 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2055
+ when 64 then
2056
+ # line 608 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2123
2057
  begin
2124
2058
  te = p
2125
2059
  p = p - 1; begin
2126
- emit(:quantifier, :interval, *text(data, ts, te))
2060
+ emit(:quantifier, :interval, copy(data, ts, te))
2127
2061
  end
2128
2062
  end
2129
- when 60 then
2130
- # line 638 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2063
+ when 63 then
2064
+ # line 613 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2131
2065
  begin
2132
2066
  te = p
2133
2067
  p = p - 1; begin
2134
2068
  append_literal(data, ts, te)
2135
2069
  end
2136
2070
  end
2137
- when 57 then
2138
- # line 644 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2071
+ when 60 then
2072
+ # line 619 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2139
2073
  begin
2140
2074
  te = p
2141
2075
  p = p - 1; begin
2142
2076
  begin
2143
2077
  stack[top] = cs
2144
2078
  top+= 1
2145
- cs = 139
2079
+ cs = 146
2146
2080
  _goto_level = _again
2147
2081
  next
2148
2082
  end
@@ -2150,66 +2084,73 @@ p = p - 1; begin
2150
2084
  end
2151
2085
  end
2152
2086
  when 45 then
2153
- # line 656 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2087
+ # line 623 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2154
2088
  begin
2155
2089
  te = p
2156
2090
  p = p - 1; begin
2157
2091
  if free_spacing
2158
- emit(:free_space, :whitespace, *text(data, ts, te))
2092
+ emit(:free_space, :comment, copy(data, ts, te))
2159
2093
  else
2160
- append_literal(data, ts, te)
2094
+ # consume only the pound sign (#) and backtrack to do regular scanning
2095
+ append_literal(data, ts, ts + 1)
2096
+ begin p = (( ts + 1))-1; end
2097
+
2161
2098
  end
2162
2099
  end
2163
2100
  end
2164
2101
  when 44 then
2165
- # line 671 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2102
+ # line 633 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2103
+ begin
2104
+ te = p
2105
+ p = p - 1; begin
2106
+ if free_spacing
2107
+ emit(:free_space, :whitespace, copy(data, ts, te))
2108
+ else
2109
+ append_literal(data, ts, te)
2110
+ end
2111
+ end
2112
+ end
2113
+ when 43 then
2114
+ # line 644 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2166
2115
  begin
2167
2116
  te = p
2168
2117
  p = p - 1; begin
2169
2118
  append_literal(data, ts, te)
2170
2119
  end
2171
2120
  end
2172
- when 5 then
2173
- # line 472 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2121
+ when 3 then
2122
+ # line 477 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2174
2123
  begin
2175
2124
  begin p = ((te))-1; end
2176
2125
  begin
2177
- text = text(data, ts, te).first
2126
+ text = copy(data, ts, te)
2178
2127
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2179
2128
  raise InvalidGroupOption.new($1 || "-#{$2}", text)
2180
2129
  end
2181
- emit_options(text, ts, te)
2130
+ emit_options(text)
2182
2131
  end
2183
2132
  end
2184
- when 12 then
2185
- # line 638 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2133
+ when 11 then
2134
+ # line 613 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2186
2135
  begin
2187
2136
  begin p = ((te))-1; end
2188
2137
  begin
2189
2138
  append_literal(data, ts, te)
2190
2139
  end
2191
2140
  end
2192
- when 10 then
2193
- # line 644 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2141
+ when 8 then
2142
+ # line 619 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2194
2143
  begin
2195
2144
  begin p = ((te))-1; end
2196
2145
  begin
2197
2146
  begin
2198
2147
  stack[top] = cs
2199
2148
  top+= 1
2200
- cs = 139
2149
+ cs = 146
2201
2150
  _goto_level = _again
2202
2151
  next
2203
2152
  end
2204
2153
 
2205
- end
2206
- end
2207
- when 3 then
2208
- # line 671 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2209
- begin
2210
- begin p = ((te))-1; end
2211
- begin
2212
- append_literal(data, ts, te)
2213
2154
  end
2214
2155
  end
2215
2156
  when 1 then
@@ -2223,86 +2164,84 @@ p = p - 1; begin
2223
2164
  next
2224
2165
  end
2225
2166
  end
2226
- when 56 then
2167
+ when 40 then
2168
+ begin begin p = ((te))-1; end
2169
+
2170
+ text = copy(data, ts, te)
2171
+ if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2172
+ raise InvalidGroupOption.new($1 || "-#{$2}", text)
2173
+ end
2174
+ emit_options(text)
2175
+ end
2176
+ when 41 then
2177
+ begin begin p = ((te))-1; end
2178
+
2179
+ case text = copy(data, ts, te)
2180
+ when '(?='; emit(:assertion, :lookahead, text)
2181
+ when '(?!'; emit(:assertion, :nlookahead, text)
2182
+ when '(?<='; emit(:assertion, :lookbehind, text)
2183
+ when '(?<!'; emit(:assertion, :nlookbehind, text)
2184
+ end
2185
+ end
2186
+ when 55 then
2227
2187
  begin begin p = ((te))-1; end
2228
2188
 
2229
2189
  append_literal(data, ts, te)
2230
2190
  end
2231
2191
  end
2232
2192
  end
2233
- when 74 then
2234
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2193
+ when 77 then
2194
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2235
2195
  begin
2236
2196
 
2237
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2197
+ text = copy(data, ts ? ts-1 : 0, -1)
2238
2198
  raise PrematureEndError.new( text )
2239
2199
  end
2240
- # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2200
+ # line 221 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2241
2201
  begin
2242
2202
  te = p
2243
2203
  p = p - 1; begin
2244
- emit(:set, :open, *text(data, ts, te))
2204
+ emit(:set, :open, copy(data, ts, te))
2245
2205
  begin
2246
2206
  stack[top] = cs
2247
2207
  top+= 1
2248
- cs = 131
2208
+ cs = 138
2249
2209
  _goto_level = _again
2250
2210
  next
2251
2211
  end
2252
2212
 
2253
2213
  end
2254
2214
  end
2255
- when 19 then
2256
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2215
+ when 18 then
2216
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2257
2217
  begin
2258
2218
 
2259
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2219
+ text = copy(data, ts ? ts-1 : 0, -1)
2260
2220
  raise PrematureEndError.new( text )
2261
2221
  end
2262
- # line 211 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2222
+ # line 221 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2263
2223
  begin
2264
2224
  begin p = ((te))-1; end
2265
2225
  begin
2266
- emit(:set, :open, *text(data, ts, te))
2226
+ emit(:set, :open, copy(data, ts, te))
2267
2227
  begin
2268
2228
  stack[top] = cs
2269
2229
  top+= 1
2270
- cs = 131
2271
- _goto_level = _again
2272
- next
2273
- end
2274
-
2275
- end
2276
- end
2277
- when 93 then
2278
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2279
- begin
2280
-
2281
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2282
- raise PrematureEndError.new( text )
2283
- end
2284
- # line 329 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2285
- begin
2286
- te = p
2287
- p = p - 1; begin
2288
- emit(:escape, :hex, *text(data, ts, te, 1))
2289
- begin
2290
- top -= 1
2291
- cs = stack[top]
2230
+ cs = 138
2292
2231
  _goto_level = _again
2293
2232
  next
2294
2233
  end
2295
2234
 
2296
2235
  end
2297
2236
  end
2298
- when 89 then
2299
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2237
+ when 92 then
2238
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2300
2239
  begin
2301
2240
 
2302
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2241
+ text = copy(data, ts ? ts-1 : 0, -1)
2303
2242
  raise PrematureEndError.new( text )
2304
2243
  end
2305
- # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2244
+ # line 343 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2306
2245
  begin
2307
2246
  te = p
2308
2247
  p = p - 1; begin
@@ -2316,14 +2255,14 @@ p = p - 1; begin
2316
2255
 
2317
2256
  end
2318
2257
  end
2319
- when 91 then
2320
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2258
+ when 94 then
2259
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2321
2260
  begin
2322
2261
 
2323
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2262
+ text = copy(data, ts ? ts-1 : 0, -1)
2324
2263
  raise PrematureEndError.new( text )
2325
2264
  end
2326
- # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2265
+ # line 348 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2327
2266
  begin
2328
2267
  te = p
2329
2268
  p = p - 1; begin
@@ -2337,14 +2276,14 @@ p = p - 1; begin
2337
2276
 
2338
2277
  end
2339
2278
  end
2340
- when 26 then
2341
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2279
+ when 25 then
2280
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2342
2281
  begin
2343
2282
 
2344
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2283
+ text = copy(data, ts ? ts-1 : 0, -1)
2345
2284
  raise PrematureEndError.new( text )
2346
2285
  end
2347
- # line 338 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2286
+ # line 343 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2348
2287
  begin
2349
2288
  begin p = ((te))-1; end
2350
2289
  begin
@@ -2358,14 +2297,14 @@ p = p - 1; begin
2358
2297
 
2359
2298
  end
2360
2299
  end
2361
- when 28 then
2362
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2300
+ when 27 then
2301
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2363
2302
  begin
2364
2303
 
2365
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2304
+ text = copy(data, ts ? ts-1 : 0, -1)
2366
2305
  raise PrematureEndError.new( text )
2367
2306
  end
2368
- # line 343 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2307
+ # line 348 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2369
2308
  begin
2370
2309
  begin p = ((te))-1; end
2371
2310
  begin
@@ -2379,14 +2318,14 @@ p = p - 1; begin
2379
2318
 
2380
2319
  end
2381
2320
  end
2382
- when 30 then
2383
- # line 143 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2321
+ when 29 then
2322
+ # line 153 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2384
2323
  begin
2385
2324
 
2386
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2325
+ text = copy(data, ts ? ts-1 : 0, -1)
2387
2326
  validation_error(:sequence, 'sequence', text)
2388
2327
  end
2389
- # line 334 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2328
+ # line 339 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2390
2329
  begin
2391
2330
  te = p+1
2392
2331
  begin
@@ -2399,28 +2338,28 @@ te = p+1
2399
2338
 
2400
2339
  end
2401
2340
  end
2402
- when 7 then
2403
- # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2341
+ when 5 then
2342
+ # line 160 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2404
2343
  begin
2405
2344
  self.group_depth = group_depth - 1 end
2406
- # line 457 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2345
+ # line 462 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2407
2346
  begin
2408
2347
  te = p+1
2409
2348
  begin
2410
- emit(:group, :comment, *text(data, ts, te))
2349
+ emit(:group, :comment, copy(data, ts, te))
2411
2350
  end
2412
2351
  end
2413
- when 38 then
2414
- # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2352
+ when 36 then
2353
+ # line 160 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2415
2354
  begin
2416
2355
  self.group_depth = group_depth - 1 end
2417
- # line 526 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2356
+ # line 531 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2418
2357
  begin
2419
2358
  te = p+1
2420
2359
  begin
2421
2360
  if conditional_stack.last == group_depth + 1
2422
2361
  conditional_stack.pop
2423
- emit(:conditional, :close, *text(data, ts, te))
2362
+ emit(:conditional, :close, copy(data, ts, te))
2424
2363
  else
2425
2364
  if spacing_stack.length > 1 &&
2426
2365
  spacing_stack.last[:depth] == group_depth + 1
@@ -2428,38 +2367,38 @@ te = p+1
2428
2367
  self.free_spacing = spacing_stack.last[:free_spacing]
2429
2368
  end
2430
2369
 
2431
- emit(:group, :close, *text(data, ts, te))
2370
+ emit(:group, :close, copy(data, ts, te))
2432
2371
  end
2433
2372
  end
2434
2373
  end
2435
- when 40 then
2436
- # line 151 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2374
+ when 38 then
2375
+ # line 161 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2437
2376
  begin
2438
2377
  self.set_depth = set_depth + 1 end
2439
- # line 432 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2378
+ # line 437 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2440
2379
  begin
2441
2380
  te = p+1
2442
2381
  begin
2443
- emit(:set, :open, *text(data, ts, te))
2382
+ emit(:set, :open, copy(data, ts, te))
2444
2383
  begin
2445
2384
  stack[top] = cs
2446
2385
  top+= 1
2447
- cs = 131
2386
+ cs = 138
2448
2387
  _goto_level = _again
2449
2388
  next
2450
2389
  end
2451
2390
 
2452
2391
  end
2453
2392
  end
2454
- when 68 then
2455
- # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2393
+ when 71 then
2394
+ # line 162 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2456
2395
  begin
2457
2396
  self.set_depth = set_depth - 1 end
2458
- # line 158 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2397
+ # line 168 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2459
2398
  begin
2460
2399
  te = p+1
2461
2400
  begin
2462
- emit(:set, :close, *text(data, ts, te))
2401
+ emit(:set, :close, copy(data, ts, te))
2463
2402
  if in_set?
2464
2403
  begin
2465
2404
  top -= 1
@@ -2470,7 +2409,7 @@ te = p+1
2470
2409
 
2471
2410
  else
2472
2411
  begin
2473
- cs = 111
2412
+ cs = 119
2474
2413
  _goto_level = _again
2475
2414
  next
2476
2415
  end
@@ -2478,16 +2417,16 @@ te = p+1
2478
2417
  end
2479
2418
  end
2480
2419
  end
2481
- when 73 then
2482
- # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2420
+ when 76 then
2421
+ # line 162 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2483
2422
  begin
2484
2423
  self.set_depth = set_depth - 1 end
2485
- # line 167 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2424
+ # line 177 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2486
2425
  begin
2487
2426
  te = p+1
2488
2427
  begin # special case, emits two tokens
2489
- emit(:literal, :literal, copy(data, ts..te-2), ts, te - 1)
2490
- emit(:set, :close, copy(data, ts+1..te-1), ts + 1, te)
2428
+ emit(:literal, :literal, copy(data, ts, te-1))
2429
+ emit(:set, :close, copy(data, ts+1, te))
2491
2430
  if in_set?
2492
2431
  begin
2493
2432
  top -= 1
@@ -2498,7 +2437,7 @@ te = p+1
2498
2437
 
2499
2438
  else
2500
2439
  begin
2501
- cs = 111
2440
+ cs = 119
2502
2441
  _goto_level = _again
2503
2442
  next
2504
2443
  end
@@ -2506,15 +2445,15 @@ te = p+1
2506
2445
  end
2507
2446
  end
2508
2447
  end
2509
- when 22 then
2510
- # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2448
+ when 20 then
2449
+ # line 162 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2511
2450
  begin
2512
2451
  self.set_depth = set_depth - 1 end
2513
- # line 216 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2452
+ # line 226 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2514
2453
  begin
2515
2454
  te = p+1
2516
2455
  begin
2517
- text = text(data, ts, te).first
2456
+ text = copy(data, ts, te)
2518
2457
 
2519
2458
  type = :posixclass
2520
2459
  class_name = text[2..-3]
@@ -2523,85 +2462,74 @@ te = p+1
2523
2462
  type = :nonposixclass
2524
2463
  end
2525
2464
 
2526
- emit(type, class_name.to_sym, text, ts, te)
2465
+ emit(type, class_name.to_sym, text)
2527
2466
  end
2528
2467
  end
2529
- when 21 then
2530
- # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2531
- begin
2532
- self.set_depth = set_depth - 1 end
2533
- # line 229 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2468
+ when 69 then
2469
+ # line 1 "NONE"
2534
2470
  begin
2535
2471
  te = p+1
2536
- begin
2537
- emit(:set, :collation, *text(data, ts, te))
2538
- end
2539
2472
  end
2540
- when 23 then
2541
- # line 152 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2473
+ # line 161 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2542
2474
  begin
2543
- self.set_depth = set_depth - 1 end
2544
- # line 233 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2545
- begin
2546
- te = p+1
2547
- begin
2548
- emit(:set, :equivalent, *text(data, ts, te))
2549
- end
2550
- end
2551
- when 66 then
2475
+ self.set_depth = set_depth + 1 end
2476
+ when 83 then
2552
2477
  # line 1 "NONE"
2553
2478
  begin
2554
2479
  te = p+1
2555
2480
  end
2556
- # line 151 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2481
+ # line 276 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2557
2482
  begin
2558
- self.set_depth = set_depth + 1 end
2559
- when 81 then
2483
+ act = 16; end
2484
+ when 82 then
2560
2485
  # line 1 "NONE"
2561
2486
  begin
2562
2487
  te = p+1
2563
2488
  end
2564
- # line 271 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2489
+ # line 282 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2565
2490
  begin
2566
- act = 18; end
2567
- when 80 then
2491
+ act = 17; end
2492
+ when 7 then
2568
2493
  # line 1 "NONE"
2569
2494
  begin
2570
2495
  te = p+1
2571
2496
  end
2572
- # line 277 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2497
+ # line 491 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2573
2498
  begin
2574
- act = 19; end
2499
+ act = 41; end
2575
2500
  when 2 then
2576
2501
  # line 1 "NONE"
2577
2502
  begin
2578
2503
  te = p+1
2579
2504
  end
2580
- # line 671 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2505
+ # line 644 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2581
2506
  begin
2582
- act = 56; end
2583
- when 47 then
2507
+ act = 55; end
2508
+ when 48 then
2584
2509
  # line 1 "NONE"
2585
2510
  begin
2586
2511
  te = p+1
2587
2512
  end
2588
- # line 150 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2513
+ # line 160 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2589
2514
  begin
2590
2515
  self.group_depth = group_depth - 1 end
2591
- # line 149 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2516
+ # line 159 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2592
2517
  begin
2593
2518
  self.group_depth = group_depth + 1 end
2594
- # line 2594 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
2519
+ # line 477 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2520
+ begin
2521
+ act = 40; end
2522
+ # line 2522 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2595
2523
  end
2596
2524
  end
2597
2525
  end
2598
2526
  if _goto_level <= _again
2599
2527
  case _re_scanner_to_state_actions[cs]
2600
- when 63 then
2528
+ when 66 then
2601
2529
  # line 1 "NONE"
2602
2530
  begin
2603
2531
  ts = nil; end
2604
- when 33 then
2532
+ when 32 then
2605
2533
  # line 1 "NONE"
2606
2534
  begin
2607
2535
  ts = nil; end
@@ -2609,7 +2537,7 @@ ts = nil; end
2609
2537
  begin
2610
2538
  act = 0
2611
2539
  end
2612
- # line 2612 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
2540
+ # line 2540 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2613
2541
  end
2614
2542
 
2615
2543
  if cs == 0
@@ -2630,20 +2558,20 @@ act = 0
2630
2558
  next;
2631
2559
  end
2632
2560
  case _re_scanner_eof_actions[cs]
2633
- when 13 then
2634
- # line 8 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/property.rl"
2561
+ when 12 then
2562
+ # line 8 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
2635
2563
  begin
2636
2564
 
2637
2565
  raise PrematureEndError.new('unicode property')
2638
2566
  end
2639
- when 24 then
2640
- # line 137 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2567
+ when 23 then
2568
+ # line 147 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2641
2569
  begin
2642
2570
 
2643
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2571
+ text = copy(data, ts ? ts-1 : 0, -1)
2644
2572
  raise PrematureEndError.new( text )
2645
2573
  end
2646
- # line 2646 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner.rb"
2574
+ # line 2574 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2647
2575
  end
2648
2576
  end
2649
2577
 
@@ -2654,13 +2582,13 @@ act = 0
2654
2582
  end
2655
2583
  end
2656
2584
 
2657
- # line 770 "/Users/ammar/src/code/ruby/projects/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2585
+ # line 741 "/Users/janoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2658
2586
 
2659
2587
  # to avoid "warning: assigned but unused variable - testEof"
2660
2588
  testEof = testEof
2661
2589
 
2662
2590
  if cs == re_scanner_error
2663
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2591
+ text = copy(data, ts ? ts-1 : 0, -1)
2664
2592
  raise ScannerError.new("Scan error at '#{text}'")
2665
2593
  end
2666
2594
 
@@ -2676,34 +2604,54 @@ end
2676
2604
  end
2677
2605
 
2678
2606
  # lazy-load property maps when first needed
2679
- require 'yaml'
2680
- PROP_MAPS_DIR = File.expand_path('../scanner/properties', __FILE__)
2681
-
2682
2607
  def self.short_prop_map
2683
- @short_prop_map ||= YAML.load_file("#{PROP_MAPS_DIR}/short.yml")
2608
+ @short_prop_map ||= parse_prop_map('short')
2684
2609
  end
2685
2610
 
2686
2611
  def self.long_prop_map
2687
- @long_prop_map ||= YAML.load_file("#{PROP_MAPS_DIR}/long.yml")
2612
+ @long_prop_map ||= parse_prop_map('long')
2613
+ end
2614
+
2615
+ def self.parse_prop_map(name)
2616
+ File.read("#{__dir__}/scanner/properties/#{name}.csv").scan(/(.+),(.+)/).to_h
2688
2617
  end
2689
2618
 
2690
2619
  # Emits an array with the details of the scanned pattern
2691
- def emit(type, token, text, ts, te)
2620
+ def emit(type, token, text)
2692
2621
  #puts "EMIT: type: #{type}, token: #{token}, text: #{text}, ts: #{ts}, te: #{te}"
2693
2622
 
2694
2623
  emit_literal if literal
2695
2624
 
2625
+ # Ragel runs with byte-based indices (ts, te). These are of little value to
2626
+ # end-users, so we keep track of char-based indices and emit those instead.
2627
+ ts_char_pos = char_pos
2628
+ te_char_pos = char_pos + text.length
2629
+
2696
2630
  if block
2697
- block.call type, token, text, ts, te
2631
+ block.call type, token, text, ts_char_pos, te_char_pos
2698
2632
  end
2699
2633
 
2700
- tokens << [type, token, text, ts, te]
2634
+ tokens << [type, token, text, ts_char_pos, te_char_pos]
2635
+
2636
+ self.char_pos = te_char_pos
2701
2637
  end
2702
2638
 
2703
2639
  private
2704
2640
 
2705
2641
  attr_accessor :tokens, :literal, :block, :free_spacing, :spacing_stack,
2706
- :group_depth, :set_depth, :conditional_stack
2642
+ :group_depth, :set_depth, :conditional_stack, :char_pos
2643
+
2644
+ def free_spacing?(input_object, options)
2645
+ if options && !input_object.is_a?(String)
2646
+ raise ArgumentError, 'options cannot be supplied unless scanning a String'
2647
+ end
2648
+
2649
+ options = input_object.options if input_object.is_a?(::Regexp)
2650
+
2651
+ return false unless options
2652
+
2653
+ options & Regexp::EXTENDED != 0
2654
+ end
2707
2655
 
2708
2656
  def in_group?
2709
2657
  group_depth > 0
@@ -2714,36 +2662,25 @@ end
2714
2662
  end
2715
2663
 
2716
2664
  # Copy from ts to te from data as text
2717
- def copy(data, range)
2718
- data[range].pack('c*')
2719
- end
2720
-
2721
- # Copy from ts to te from data as text, returning an array with the text
2722
- # and the offsets used to copy it.
2723
- def text(data, ts, te, soff = 0)
2724
- [copy(data, ts-soff..te-1), ts-soff, te]
2665
+ def copy(data, ts, te)
2666
+ data[ts...te].pack('c*').force_encoding('utf-8')
2725
2667
  end
2726
2668
 
2727
2669
  # Appends one or more characters to the literal buffer, to be emitted later
2728
- # by a call to emit_literal. Contents can be a mix of ASCII and UTF-8.
2670
+ # by a call to emit_literal.
2729
2671
  def append_literal(data, ts, te)
2730
2672
  self.literal = literal || []
2731
- literal << text(data, ts, te)
2673
+ literal << copy(data, ts, te)
2732
2674
  end
2733
2675
 
2734
- # Emits the literal run collected by calls to the append_literal method,
2735
- # using the total start (ts) and end (te) offsets of the run.
2676
+ # Emits the literal run collected by calls to the append_literal method.
2736
2677
  def emit_literal
2737
- ts, te = literal.first[1], literal.last[2]
2738
- text = literal.map {|t| t[0]}.join
2739
-
2740
- text.force_encoding('utf-8') if text.respond_to?(:force_encoding)
2741
-
2678
+ text = literal.join
2742
2679
  self.literal = nil
2743
- emit(:literal, :literal, text, ts, te)
2680
+ emit(:literal, :literal, text)
2744
2681
  end
2745
2682
 
2746
- def emit_options(text, ts, te)
2683
+ def emit_options(text)
2747
2684
  token = nil
2748
2685
 
2749
2686
  # Ruby allows things like '(?-xxxx)' or '(?xx-xx--xx-:abc)'.
@@ -2769,14 +2706,14 @@ end
2769
2706
  token = :options_switch
2770
2707
  end
2771
2708
 
2772
- emit(:group, token, text, ts, te)
2709
+ emit(:group, token, text)
2773
2710
  end
2774
2711
 
2775
2712
  def emit_meta_control_sequence(data, ts, te, token)
2776
2713
  if data.last < 0x00 || data.last > 0x7F
2777
2714
  validation_error(:sequence, 'escape', token.to_s)
2778
2715
  end
2779
- emit(:escape, token, *text(data, ts, te, 1))
2716
+ emit(:escape, token, copy(data, ts-1, te))
2780
2717
  end
2781
2718
 
2782
2719
  # Centralizes and unifies the handling of validation related