regexp_parser 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. data/ChangeLog +4 -0
  2. data/LICENSE +22 -0
  3. data/README.rdoc +307 -0
  4. data/Rakefile +91 -0
  5. data/lib/regexp_parser/ctype.rb +48 -0
  6. data/lib/regexp_parser/expression/property.rb +108 -0
  7. data/lib/regexp_parser/expression/set.rb +59 -0
  8. data/lib/regexp_parser/expression.rb +287 -0
  9. data/lib/regexp_parser/lexer.rb +105 -0
  10. data/lib/regexp_parser/parser.rb +417 -0
  11. data/lib/regexp_parser/scanner/property.rl +534 -0
  12. data/lib/regexp_parser/scanner/scanner.rl +712 -0
  13. data/lib/regexp_parser/scanner.rb +3325 -0
  14. data/lib/regexp_parser/syntax/ruby/1.8.6.rb +14 -0
  15. data/lib/regexp_parser/syntax/ruby/1.8.7.rb +14 -0
  16. data/lib/regexp_parser/syntax/ruby/1.8.rb +39 -0
  17. data/lib/regexp_parser/syntax/ruby/1.9.1.rb +39 -0
  18. data/lib/regexp_parser/syntax/ruby/1.9.2.rb +10 -0
  19. data/lib/regexp_parser/syntax/ruby/1.9.3.rb +24 -0
  20. data/lib/regexp_parser/syntax/ruby/1.9.rb +8 -0
  21. data/lib/regexp_parser/syntax/tokens.rb +332 -0
  22. data/lib/regexp_parser/syntax.rb +172 -0
  23. data/lib/regexp_parser.rb +45 -0
  24. data/test/helpers.rb +8 -0
  25. data/test/lexer/test_all.rb +26 -0
  26. data/test/lexer/test_literals.rb +120 -0
  27. data/test/lexer/test_nesting.rb +107 -0
  28. data/test/lexer/test_refcalls.rb +45 -0
  29. data/test/parser/test_all.rb +44 -0
  30. data/test/parser/test_alternation.rb +46 -0
  31. data/test/parser/test_anchors.rb +35 -0
  32. data/test/parser/test_errors.rb +59 -0
  33. data/test/parser/test_escapes.rb +48 -0
  34. data/test/parser/test_expression.rb +51 -0
  35. data/test/parser/test_groups.rb +69 -0
  36. data/test/parser/test_properties.rb +346 -0
  37. data/test/parser/test_quantifiers.rb +236 -0
  38. data/test/parser/test_refcalls.rb +101 -0
  39. data/test/parser/test_sets.rb +99 -0
  40. data/test/scanner/test_all.rb +30 -0
  41. data/test/scanner/test_anchors.rb +35 -0
  42. data/test/scanner/test_errors.rb +36 -0
  43. data/test/scanner/test_escapes.rb +49 -0
  44. data/test/scanner/test_groups.rb +41 -0
  45. data/test/scanner/test_literals.rb +85 -0
  46. data/test/scanner/test_meta.rb +36 -0
  47. data/test/scanner/test_properties.rb +315 -0
  48. data/test/scanner/test_quantifiers.rb +38 -0
  49. data/test/scanner/test_refcalls.rb +45 -0
  50. data/test/scanner/test_scripts.rb +314 -0
  51. data/test/scanner/test_sets.rb +80 -0
  52. data/test/scanner/test_types.rb +30 -0
  53. data/test/syntax/ruby/test_1.8.rb +57 -0
  54. data/test/syntax/ruby/test_1.9.1.rb +39 -0
  55. data/test/syntax/ruby/test_1.9.3.rb +38 -0
  56. data/test/syntax/ruby/test_all.rb +12 -0
  57. data/test/syntax/test_all.rb +19 -0
  58. data/test/test_all.rb +4 -0
  59. metadata +160 -0
@@ -0,0 +1,3325 @@
1
+
2
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3
+
4
+ # line 621 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
5
+
6
+
7
+
8
+ module Regexp::Scanner
9
+
10
+ # line 11 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
11
+ class << self
12
+ attr_accessor :_re_scanner_trans_keys
13
+ private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
14
+ end
15
+ self._re_scanner_trans_keys = [
16
+ 0, 0, -128, -65, -128, -65,
17
+ -128, -65, -128, -65, -128,
18
+ -65, -128, -65, 41, 41,
19
+ 41, 41, 65, 122, 39, 122,
20
+ 33, 122, 48, 122, 39,
21
+ 60, 45, 122, 49, 57,
22
+ 39, 57, 48, 57, 39, 57,
23
+ 39, 122, 45, 122, 49,
24
+ 57, 43, 62, 48, 57,
25
+ 48, 62, 43, 122, 44, 125,
26
+ 48, 125, 123, 123, 9,
27
+ 122, 9, 125, 9, 125,
28
+ 9, 125, 9, 125, 49, 54,
29
+ 46, 46, 49, 49, 125,
30
+ 125, 46, 46, 48, 49,
31
+ 46, 46, 48, 50, 46, 46,
32
+ 48, 48, 9, 122, -128,
33
+ -65, -128, -65, -128, -65,
34
+ -128, -65, -128, -65, -128, -65,
35
+ 48, 122, 45, 122, 45,
36
+ 122, 93, 93, 94, 120,
37
+ 97, 120, 108, 115, 110, 112,
38
+ 117, 117, 109, 109, 58,
39
+ 58, 93, 93, 104, 104,
40
+ 97, 97, 99, 99, 105, 105,
41
+ 105, 105, 108, 108, 97,
42
+ 97, 110, 110, 107, 107,
43
+ 110, 110, 116, 116, 114, 114,
44
+ 108, 108, 105, 105, 103,
45
+ 103, 105, 105, 116, 116,
46
+ 114, 114, 97, 97, 112, 112,
47
+ 104, 104, 111, 111, 119,
48
+ 119, 101, 101, 114, 114,
49
+ 114, 117, 105, 105, 110, 110,
50
+ 110, 110, 99, 99, 112,
51
+ 112, 97, 97, 99, 99,
52
+ 101, 101, 112, 112, 112, 112,
53
+ 111, 111, 114, 114, 100,
54
+ 100, 100, 100, 65, 122,
55
+ 61, 61, 93, 93, -128, -65,
56
+ -128, -65, -128, -65, -128,
57
+ -65, -128, -65, -128, -65,
58
+ 92, 92, 120, 120, 48, 102,
59
+ 45, 45, 65, 122, 45,
60
+ 45, 65, 122, 67, 99,
61
+ 45, 45, 65, 122, 48, 123,
62
+ 48, 102, 48, 102, 48,
63
+ 102, 48, 102, 48, 102,
64
+ 48, 102, 48, 102, 9, 125,
65
+ 48, 125, 48, 123, 48,
66
+ 102, 48, 125, 48, 125,
67
+ 48, 125, 48, 125, 48, 125,
68
+ 48, 125, 48, 125, 125,
69
+ 125, -128, 127, -62, -33,
70
+ -32, -17, -16, -12, 1, 127,
71
+ 32, 126, 63, 63, 33,
72
+ 120, 105, 120, 105, 120,
73
+ 105, 120, 45, 120, 45, 120,
74
+ 45, 120, 43, 63, 43,
75
+ 63, 43, 63, 65, 122,
76
+ 43, 63, 80, 112, -62, 127,
77
+ -128, -65, -62, -33, -128,
78
+ -65, -32, -17, -128, -65,
79
+ -16, -12, 1, 127, 38, 38,
80
+ 93, 93, 45, 45, 46,
81
+ 61, -62, 127, -62, -33,
82
+ -32, -17, -16, -12, 1, 127,
83
+ 32, 126, 32, 126, 32,
84
+ 126, 48, 102, 32, 126,
85
+ 36, 125, 48, 55, 48, 55,
86
+ 48, 102, 0
87
+ ]
88
+
89
+ class << self
90
+ attr_accessor :_re_scanner_key_spans
91
+ private :_re_scanner_key_spans, :_re_scanner_key_spans=
92
+ end
93
+ self._re_scanner_key_spans = [
94
+ 0, 64, 64, 64, 64, 64, 64, 1,
95
+ 1, 58, 84, 90, 75, 22, 78, 9,
96
+ 19, 10, 19, 84, 78, 9, 20, 10,
97
+ 15, 80, 82, 78, 1, 114, 117, 117,
98
+ 117, 117, 6, 1, 1, 1, 1, 2,
99
+ 1, 3, 1, 1, 114, 64, 64, 64,
100
+ 64, 64, 64, 75, 78, 78, 1, 27,
101
+ 24, 8, 3, 1, 1, 1, 1, 1,
102
+ 1, 1, 1, 1, 1, 1, 1, 1,
103
+ 1, 1, 1, 1, 1, 1, 1, 1,
104
+ 1, 1, 1, 1, 1, 1, 1, 1,
105
+ 4, 1, 1, 1, 1, 1, 1, 1,
106
+ 1, 1, 1, 1, 1, 1, 1, 58,
107
+ 1, 1, 64, 64, 64, 64, 64, 64,
108
+ 1, 1, 55, 1, 58, 1, 58, 33,
109
+ 1, 58, 76, 55, 55, 55, 55, 55,
110
+ 55, 55, 117, 78, 76, 55, 78, 78,
111
+ 78, 78, 78, 78, 78, 1, 256, 30,
112
+ 16, 5, 127, 95, 1, 88, 16, 16,
113
+ 16, 76, 76, 76, 21, 21, 21, 58,
114
+ 21, 33, 190, 64, 30, 64, 16, 64,
115
+ 5, 127, 1, 1, 1, 16, 190, 30,
116
+ 16, 5, 127, 95, 95, 95, 55, 95,
117
+ 90, 8, 8, 55
118
+ ]
119
+
120
+ class << self
121
+ attr_accessor :_re_scanner_index_offsets
122
+ private :_re_scanner_index_offsets, :_re_scanner_index_offsets=
123
+ end
124
+ self._re_scanner_index_offsets = [
125
+ 0, 0, 65, 130, 195, 260, 325, 390,
126
+ 392, 394, 453, 538, 629, 705, 728, 807,
127
+ 817, 837, 848, 868, 953, 1032, 1042, 1063,
128
+ 1074, 1090, 1171, 1254, 1333, 1335, 1450, 1568,
129
+ 1686, 1804, 1922, 1929, 1931, 1933, 1935, 1937,
130
+ 1940, 1942, 1946, 1948, 1950, 2065, 2130, 2195,
131
+ 2260, 2325, 2390, 2455, 2531, 2610, 2689, 2691,
132
+ 2719, 2744, 2753, 2757, 2759, 2761, 2763, 2765,
133
+ 2767, 2769, 2771, 2773, 2775, 2777, 2779, 2781,
134
+ 2783, 2785, 2787, 2789, 2791, 2793, 2795, 2797,
135
+ 2799, 2801, 2803, 2805, 2807, 2809, 2811, 2813,
136
+ 2815, 2820, 2822, 2824, 2826, 2828, 2830, 2832,
137
+ 2834, 2836, 2838, 2840, 2842, 2844, 2846, 2848,
138
+ 2907, 2909, 2911, 2976, 3041, 3106, 3171, 3236,
139
+ 3301, 3303, 3305, 3361, 3363, 3422, 3424, 3483,
140
+ 3517, 3519, 3578, 3655, 3711, 3767, 3823, 3879,
141
+ 3935, 3991, 4047, 4165, 4244, 4321, 4377, 4456,
142
+ 4535, 4614, 4693, 4772, 4851, 4930, 4932, 5189,
143
+ 5220, 5237, 5243, 5371, 5467, 5469, 5558, 5575,
144
+ 5592, 5609, 5686, 5763, 5840, 5862, 5884, 5906,
145
+ 5965, 5987, 6021, 6212, 6277, 6308, 6373, 6390,
146
+ 6455, 6461, 6589, 6591, 6593, 6595, 6612, 6803,
147
+ 6834, 6851, 6857, 6985, 7081, 7177, 7273, 7329,
148
+ 7425, 7516, 7525, 7534
149
+ ]
150
+
151
+ class << self
152
+ attr_accessor :_re_scanner_indicies
153
+ private :_re_scanner_indicies, :_re_scanner_indicies=
154
+ end
155
+ self._re_scanner_indicies = [
156
+ 1, 1, 1, 1, 1, 1, 1, 1,
157
+ 1, 1, 1, 1, 1, 1, 1, 1,
158
+ 1, 1, 1, 1, 1, 1, 1, 1,
159
+ 1, 1, 1, 1, 1, 1, 1, 1,
160
+ 1, 1, 1, 1, 1, 1, 1, 1,
161
+ 1, 1, 1, 1, 1, 1, 1, 1,
162
+ 1, 1, 1, 1, 1, 1, 1, 1,
163
+ 1, 1, 1, 1, 1, 1, 1, 1,
164
+ 0, 2, 2, 2, 2, 2, 2, 2,
165
+ 2, 2, 2, 2, 2, 2, 2, 2,
166
+ 2, 2, 2, 2, 2, 2, 2, 2,
167
+ 2, 2, 2, 2, 2, 2, 2, 2,
168
+ 2, 2, 2, 2, 2, 2, 2, 2,
169
+ 2, 2, 2, 2, 2, 2, 2, 2,
170
+ 2, 2, 2, 2, 2, 2, 2, 2,
171
+ 2, 2, 2, 2, 2, 2, 2, 2,
172
+ 2, 0, 3, 3, 3, 3, 3, 3,
173
+ 3, 3, 3, 3, 3, 3, 3, 3,
174
+ 3, 3, 3, 3, 3, 3, 3, 3,
175
+ 3, 3, 3, 3, 3, 3, 3, 3,
176
+ 3, 3, 3, 3, 3, 3, 3, 3,
177
+ 3, 3, 3, 3, 3, 3, 3, 3,
178
+ 3, 3, 3, 3, 3, 3, 3, 3,
179
+ 3, 3, 3, 3, 3, 3, 3, 3,
180
+ 3, 3, 0, 4, 4, 4, 4, 4,
181
+ 4, 4, 4, 4, 4, 4, 4, 4,
182
+ 4, 4, 4, 4, 4, 4, 4, 4,
183
+ 4, 4, 4, 4, 4, 4, 4, 4,
184
+ 4, 4, 4, 4, 4, 4, 4, 4,
185
+ 4, 4, 4, 4, 4, 4, 4, 4,
186
+ 4, 4, 4, 4, 4, 4, 4, 4,
187
+ 4, 4, 4, 4, 4, 4, 4, 4,
188
+ 4, 4, 4, 0, 5, 5, 5, 5,
189
+ 5, 5, 5, 5, 5, 5, 5, 5,
190
+ 5, 5, 5, 5, 5, 5, 5, 5,
191
+ 5, 5, 5, 5, 5, 5, 5, 5,
192
+ 5, 5, 5, 5, 5, 5, 5, 5,
193
+ 5, 5, 5, 5, 5, 5, 5, 5,
194
+ 5, 5, 5, 5, 5, 5, 5, 5,
195
+ 5, 5, 5, 5, 5, 5, 5, 5,
196
+ 5, 5, 5, 5, 0, 6, 6, 6,
197
+ 6, 6, 6, 6, 6, 6, 6, 6,
198
+ 6, 6, 6, 6, 6, 6, 6, 6,
199
+ 6, 6, 6, 6, 6, 6, 6, 6,
200
+ 6, 6, 6, 6, 6, 6, 6, 6,
201
+ 6, 6, 6, 6, 6, 6, 6, 6,
202
+ 6, 6, 6, 6, 6, 6, 6, 6,
203
+ 6, 6, 6, 6, 6, 6, 6, 6,
204
+ 6, 6, 6, 6, 6, 0, 7, 8,
205
+ 9, 8, 10, 10, 10, 10, 10, 10,
206
+ 10, 10, 10, 10, 10, 10, 10, 10,
207
+ 10, 10, 10, 10, 10, 10, 10, 10,
208
+ 10, 10, 10, 10, 7, 7, 7, 7,
209
+ 7, 7, 10, 10, 10, 10, 10, 10,
210
+ 10, 10, 10, 10, 10, 10, 10, 10,
211
+ 10, 10, 10, 10, 10, 10, 10, 10,
212
+ 10, 10, 10, 10, 7, 11, 7, 7,
213
+ 7, 7, 7, 7, 7, 7, 10, 10,
214
+ 10, 10, 10, 10, 10, 10, 10, 10,
215
+ 7, 7, 7, 7, 7, 7, 7, 10,
216
+ 10, 10, 10, 10, 10, 10, 10, 10,
217
+ 10, 10, 10, 10, 10, 10, 10, 10,
218
+ 10, 10, 10, 10, 10, 10, 10, 10,
219
+ 10, 7, 7, 7, 7, 7, 7, 10,
220
+ 10, 10, 10, 10, 10, 10, 10, 10,
221
+ 10, 10, 10, 10, 10, 10, 10, 10,
222
+ 10, 10, 10, 10, 10, 10, 10, 10,
223
+ 10, 7, 12, 7, 7, 7, 7, 7,
224
+ 7, 7, 7, 7, 7, 7, 7, 7,
225
+ 7, 7, 7, 7, 7, 7, 7, 7,
226
+ 7, 7, 7, 7, 7, 7, 12, 7,
227
+ 7, 7, 13, 13, 13, 13, 13, 13,
228
+ 13, 13, 13, 13, 13, 13, 13, 13,
229
+ 13, 13, 13, 13, 13, 13, 13, 13,
230
+ 13, 13, 13, 13, 7, 7, 7, 7,
231
+ 7, 7, 13, 13, 13, 13, 13, 13,
232
+ 13, 13, 13, 13, 13, 13, 13, 13,
233
+ 13, 13, 13, 13, 13, 13, 13, 13,
234
+ 13, 13, 13, 13, 7, 13, 13, 13,
235
+ 13, 13, 13, 13, 13, 13, 13, 7,
236
+ 7, 7, 7, 11, 7, 7, 13, 13,
237
+ 13, 13, 13, 13, 13, 13, 13, 13,
238
+ 13, 13, 13, 13, 13, 13, 13, 13,
239
+ 13, 13, 13, 13, 13, 13, 13, 13,
240
+ 7, 7, 7, 7, 7, 7, 13, 13,
241
+ 13, 13, 13, 13, 13, 13, 13, 13,
242
+ 13, 13, 13, 13, 13, 13, 13, 13,
243
+ 13, 13, 13, 13, 13, 13, 13, 13,
244
+ 7, 15, 14, 14, 14, 14, 14, 14,
245
+ 14, 14, 14, 14, 14, 14, 14, 14,
246
+ 14, 14, 14, 14, 14, 14, 16, 14,
247
+ 17, 14, 14, 14, 18, 18, 18, 18,
248
+ 18, 18, 18, 18, 18, 14, 14, 14,
249
+ 14, 14, 14, 14, 19, 19, 19, 19,
250
+ 19, 19, 19, 19, 19, 19, 19, 19,
251
+ 19, 19, 19, 19, 19, 19, 19, 19,
252
+ 19, 19, 19, 19, 19, 19, 14, 14,
253
+ 14, 14, 14, 14, 19, 19, 19, 19,
254
+ 19, 19, 19, 19, 19, 19, 19, 19,
255
+ 19, 19, 19, 19, 19, 19, 19, 19,
256
+ 19, 19, 19, 19, 19, 19, 14, 18,
257
+ 18, 18, 18, 18, 18, 18, 18, 18,
258
+ 14, 20, 14, 14, 14, 21, 14, 21,
259
+ 14, 14, 18, 18, 18, 18, 18, 18,
260
+ 18, 18, 18, 18, 14, 22, 22, 22,
261
+ 22, 22, 22, 22, 22, 22, 22, 14,
262
+ 20, 14, 14, 14, 14, 14, 14, 14,
263
+ 14, 22, 22, 22, 22, 22, 22, 22,
264
+ 22, 22, 22, 14, 20, 14, 14, 14,
265
+ 21, 14, 21, 14, 14, 19, 19, 19,
266
+ 19, 19, 19, 19, 19, 19, 19, 14,
267
+ 14, 14, 14, 14, 14, 14, 19, 19,
268
+ 19, 19, 19, 19, 19, 19, 19, 19,
269
+ 19, 19, 19, 19, 19, 19, 19, 19,
270
+ 19, 19, 19, 19, 19, 19, 19, 19,
271
+ 14, 14, 14, 14, 14, 14, 19, 19,
272
+ 19, 19, 19, 19, 19, 19, 19, 19,
273
+ 19, 19, 19, 19, 19, 19, 19, 19,
274
+ 19, 19, 19, 19, 19, 19, 19, 19,
275
+ 14, 23, 14, 14, 14, 24, 24, 24,
276
+ 24, 24, 24, 24, 24, 24, 14, 14,
277
+ 14, 14, 14, 14, 14, 25, 25, 25,
278
+ 25, 25, 25, 25, 25, 25, 25, 25,
279
+ 25, 25, 25, 25, 25, 25, 25, 25,
280
+ 25, 25, 25, 25, 25, 25, 25, 14,
281
+ 14, 14, 14, 14, 14, 25, 25, 25,
282
+ 25, 25, 25, 25, 25, 25, 25, 25,
283
+ 25, 25, 25, 25, 25, 25, 25, 25,
284
+ 25, 25, 25, 25, 25, 25, 25, 14,
285
+ 24, 24, 24, 24, 24, 24, 24, 24,
286
+ 24, 14, 26, 14, 26, 14, 14, 24,
287
+ 24, 24, 24, 24, 24, 24, 24, 24,
288
+ 24, 14, 14, 14, 14, 20, 14, 27,
289
+ 27, 27, 27, 27, 27, 27, 27, 27,
290
+ 27, 14, 27, 27, 27, 27, 27, 27,
291
+ 27, 27, 27, 27, 14, 14, 14, 14,
292
+ 20, 14, 26, 14, 26, 14, 14, 25,
293
+ 25, 25, 25, 25, 25, 25, 25, 25,
294
+ 25, 14, 14, 14, 14, 20, 14, 14,
295
+ 25, 25, 25, 25, 25, 25, 25, 25,
296
+ 25, 25, 25, 25, 25, 25, 25, 25,
297
+ 25, 25, 25, 25, 25, 25, 25, 25,
298
+ 25, 25, 14, 14, 14, 14, 14, 14,
299
+ 25, 25, 25, 25, 25, 25, 25, 25,
300
+ 25, 25, 25, 25, 25, 25, 25, 25,
301
+ 25, 25, 25, 25, 25, 25, 25, 25,
302
+ 25, 25, 14, 29, 28, 28, 28, 30,
303
+ 30, 30, 30, 30, 30, 30, 30, 30,
304
+ 30, 28, 28, 28, 28, 28, 28, 28,
305
+ 28, 28, 28, 28, 28, 28, 28, 28,
306
+ 28, 28, 28, 28, 28, 28, 28, 28,
307
+ 28, 28, 28, 28, 28, 28, 28, 28,
308
+ 28, 28, 28, 28, 28, 28, 28, 28,
309
+ 28, 28, 28, 28, 28, 28, 28, 28,
310
+ 28, 28, 28, 28, 28, 28, 28, 28,
311
+ 28, 28, 28, 28, 28, 28, 28, 28,
312
+ 28, 28, 28, 28, 31, 28, 29, 29,
313
+ 29, 29, 29, 29, 29, 29, 29, 29,
314
+ 28, 28, 28, 28, 28, 28, 28, 28,
315
+ 28, 28, 28, 28, 28, 28, 28, 28,
316
+ 28, 28, 28, 28, 28, 28, 28, 28,
317
+ 28, 28, 28, 28, 28, 28, 28, 28,
318
+ 28, 28, 28, 28, 28, 28, 28, 28,
319
+ 28, 28, 28, 28, 28, 28, 28, 28,
320
+ 28, 28, 28, 28, 28, 28, 28, 28,
321
+ 28, 28, 28, 28, 28, 28, 28, 28,
322
+ 28, 28, 28, 31, 28, 32, 33, 34,
323
+ 34, 34, 34, 34, 33, 33, 33, 33,
324
+ 33, 33, 33, 33, 33, 33, 33, 33,
325
+ 33, 33, 33, 33, 33, 33, 34, 33,
326
+ 33, 33, 33, 33, 33, 33, 33, 33,
327
+ 33, 33, 33, 33, 33, 33, 33, 33,
328
+ 33, 33, 33, 33, 33, 33, 33, 33,
329
+ 33, 33, 33, 33, 33, 33, 33, 35,
330
+ 34, 34, 34, 34, 34, 34, 34, 34,
331
+ 34, 34, 34, 34, 34, 34, 34, 34,
332
+ 34, 34, 34, 34, 34, 34, 34, 34,
333
+ 34, 33, 33, 33, 36, 34, 33, 35,
334
+ 34, 34, 34, 34, 34, 34, 34, 34,
335
+ 34, 34, 34, 34, 34, 34, 34, 34,
336
+ 34, 34, 34, 34, 34, 34, 34, 34,
337
+ 34, 33, 34, 34, 34, 34, 34, 33,
338
+ 33, 33, 33, 33, 33, 33, 33, 33,
339
+ 33, 33, 33, 33, 33, 33, 33, 33,
340
+ 33, 34, 33, 33, 33, 33, 33, 33,
341
+ 33, 33, 33, 33, 33, 33, 33, 33,
342
+ 33, 33, 33, 33, 33, 33, 33, 33,
343
+ 33, 33, 33, 33, 33, 33, 33, 33,
344
+ 33, 33, 34, 34, 34, 34, 34, 34,
345
+ 34, 34, 34, 34, 34, 34, 34, 34,
346
+ 34, 34, 34, 34, 34, 34, 34, 34,
347
+ 34, 34, 34, 34, 33, 33, 33, 33,
348
+ 34, 33, 34, 34, 34, 34, 34, 34,
349
+ 34, 34, 34, 34, 34, 34, 34, 34,
350
+ 34, 34, 34, 34, 34, 34, 34, 34,
351
+ 34, 34, 34, 34, 33, 33, 37, 33,
352
+ 34, 34, 34, 34, 34, 33, 33, 33,
353
+ 33, 33, 33, 33, 33, 33, 33, 33,
354
+ 33, 33, 33, 33, 33, 33, 33, 34,
355
+ 33, 33, 33, 33, 33, 33, 33, 33,
356
+ 33, 33, 33, 33, 33, 33, 33, 33,
357
+ 33, 33, 33, 33, 33, 33, 33, 33,
358
+ 33, 33, 33, 33, 33, 33, 33, 33,
359
+ 34, 34, 34, 34, 34, 34, 38, 34,
360
+ 34, 34, 34, 34, 34, 34, 34, 34,
361
+ 34, 34, 34, 34, 34, 34, 34, 34,
362
+ 34, 34, 33, 33, 33, 33, 34, 33,
363
+ 34, 34, 34, 34, 34, 34, 38, 34,
364
+ 34, 34, 34, 34, 34, 34, 34, 34,
365
+ 34, 34, 34, 34, 34, 34, 34, 34,
366
+ 34, 34, 33, 33, 37, 33, 34, 34,
367
+ 34, 34, 34, 33, 33, 33, 33, 33,
368
+ 33, 33, 33, 33, 33, 33, 33, 33,
369
+ 33, 33, 33, 33, 33, 34, 33, 33,
370
+ 33, 33, 33, 33, 33, 33, 33, 33,
371
+ 33, 33, 33, 33, 33, 33, 33, 33,
372
+ 33, 33, 33, 33, 33, 33, 33, 33,
373
+ 33, 33, 33, 33, 33, 33, 34, 34,
374
+ 34, 34, 39, 34, 34, 34, 34, 34,
375
+ 34, 34, 34, 34, 34, 34, 34, 34,
376
+ 34, 34, 34, 34, 34, 34, 34, 34,
377
+ 33, 33, 33, 33, 34, 33, 34, 34,
378
+ 34, 34, 39, 34, 34, 34, 34, 34,
379
+ 34, 34, 34, 34, 34, 34, 34, 34,
380
+ 34, 34, 34, 34, 34, 34, 34, 34,
381
+ 33, 33, 37, 33, 34, 34, 34, 34,
382
+ 34, 33, 33, 33, 33, 33, 33, 33,
383
+ 33, 33, 33, 33, 33, 33, 33, 33,
384
+ 33, 33, 33, 34, 33, 33, 33, 33,
385
+ 33, 33, 33, 33, 33, 33, 33, 33,
386
+ 33, 33, 33, 33, 33, 33, 33, 33,
387
+ 33, 33, 33, 33, 33, 33, 33, 33,
388
+ 40, 33, 33, 33, 34, 34, 34, 34,
389
+ 34, 34, 34, 34, 34, 34, 34, 34,
390
+ 34, 34, 34, 34, 34, 34, 34, 34,
391
+ 34, 34, 34, 34, 34, 34, 33, 33,
392
+ 33, 33, 34, 33, 34, 34, 34, 34,
393
+ 34, 34, 34, 34, 34, 34, 34, 34,
394
+ 34, 34, 34, 34, 34, 34, 34, 34,
395
+ 34, 34, 34, 34, 34, 34, 33, 33,
396
+ 37, 33, 41, 42, 43, 42, 43, 44,
397
+ 33, 45, 33, 46, 33, 37, 33, 47,
398
+ 33, 46, 46, 33, 48, 33, 46, 46,
399
+ 46, 33, 49, 33, 46, 33, 34, 34,
400
+ 34, 34, 34, 33, 33, 33, 33, 33,
401
+ 33, 33, 33, 33, 33, 33, 33, 33,
402
+ 33, 33, 33, 33, 33, 34, 33, 33,
403
+ 33, 33, 33, 33, 33, 33, 33, 33,
404
+ 33, 33, 33, 33, 33, 33, 33, 33,
405
+ 33, 33, 33, 33, 33, 33, 33, 33,
406
+ 33, 33, 33, 33, 33, 33, 35, 34,
407
+ 34, 34, 34, 34, 34, 34, 34, 34,
408
+ 34, 34, 34, 34, 34, 34, 34, 34,
409
+ 34, 34, 34, 34, 34, 34, 34, 34,
410
+ 33, 33, 33, 33, 34, 33, 35, 34,
411
+ 34, 34, 34, 34, 34, 34, 34, 34,
412
+ 34, 34, 34, 34, 34, 34, 34, 34,
413
+ 34, 34, 34, 34, 34, 34, 34, 34,
414
+ 33, 51, 51, 51, 51, 51, 51, 51,
415
+ 51, 51, 51, 51, 51, 51, 51, 51,
416
+ 51, 51, 51, 51, 51, 51, 51, 51,
417
+ 51, 51, 51, 51, 51, 51, 51, 51,
418
+ 51, 51, 51, 51, 51, 51, 51, 51,
419
+ 51, 51, 51, 51, 51, 51, 51, 51,
420
+ 51, 51, 51, 51, 51, 51, 51, 51,
421
+ 51, 51, 51, 51, 51, 51, 51, 51,
422
+ 51, 50, 52, 52, 52, 52, 52, 52,
423
+ 52, 52, 52, 52, 52, 52, 52, 52,
424
+ 52, 52, 52, 52, 52, 52, 52, 52,
425
+ 52, 52, 52, 52, 52, 52, 52, 52,
426
+ 52, 52, 52, 52, 52, 52, 52, 52,
427
+ 52, 52, 52, 52, 52, 52, 52, 52,
428
+ 52, 52, 52, 52, 52, 52, 52, 52,
429
+ 52, 52, 52, 52, 52, 52, 52, 52,
430
+ 52, 52, 50, 53, 53, 53, 53, 53,
431
+ 53, 53, 53, 53, 53, 53, 53, 53,
432
+ 53, 53, 53, 53, 53, 53, 53, 53,
433
+ 53, 53, 53, 53, 53, 53, 53, 53,
434
+ 53, 53, 53, 53, 53, 53, 53, 53,
435
+ 53, 53, 53, 53, 53, 53, 53, 53,
436
+ 53, 53, 53, 53, 53, 53, 53, 53,
437
+ 53, 53, 53, 53, 53, 53, 53, 53,
438
+ 53, 53, 53, 50, 54, 54, 54, 54,
439
+ 54, 54, 54, 54, 54, 54, 54, 54,
440
+ 54, 54, 54, 54, 54, 54, 54, 54,
441
+ 54, 54, 54, 54, 54, 54, 54, 54,
442
+ 54, 54, 54, 54, 54, 54, 54, 54,
443
+ 54, 54, 54, 54, 54, 54, 54, 54,
444
+ 54, 54, 54, 54, 54, 54, 54, 54,
445
+ 54, 54, 54, 54, 54, 54, 54, 54,
446
+ 54, 54, 54, 54, 50, 55, 55, 55,
447
+ 55, 55, 55, 55, 55, 55, 55, 55,
448
+ 55, 55, 55, 55, 55, 55, 55, 55,
449
+ 55, 55, 55, 55, 55, 55, 55, 55,
450
+ 55, 55, 55, 55, 55, 55, 55, 55,
451
+ 55, 55, 55, 55, 55, 55, 55, 55,
452
+ 55, 55, 55, 55, 55, 55, 55, 55,
453
+ 55, 55, 55, 55, 55, 55, 55, 55,
454
+ 55, 55, 55, 55, 55, 50, 56, 56,
455
+ 56, 56, 56, 56, 56, 56, 56, 56,
456
+ 56, 56, 56, 56, 56, 56, 56, 56,
457
+ 56, 56, 56, 56, 56, 56, 56, 56,
458
+ 56, 56, 56, 56, 56, 56, 56, 56,
459
+ 56, 56, 56, 56, 56, 56, 56, 56,
460
+ 56, 56, 56, 56, 56, 56, 56, 56,
461
+ 56, 56, 56, 56, 56, 56, 56, 56,
462
+ 56, 56, 56, 56, 56, 56, 50, 57,
463
+ 57, 57, 57, 57, 57, 57, 57, 57,
464
+ 57, 50, 50, 50, 50, 50, 50, 50,
465
+ 57, 57, 57, 57, 57, 57, 57, 57,
466
+ 57, 57, 57, 57, 57, 57, 57, 57,
467
+ 57, 57, 57, 57, 57, 57, 57, 57,
468
+ 57, 57, 50, 50, 50, 50, 50, 50,
469
+ 57, 57, 57, 57, 57, 57, 57, 57,
470
+ 57, 57, 57, 57, 57, 57, 57, 57,
471
+ 57, 57, 57, 57, 57, 57, 57, 57,
472
+ 57, 57, 50, 60, 59, 59, 59, 59,
473
+ 59, 59, 59, 59, 59, 59, 59, 59,
474
+ 59, 59, 59, 59, 59, 59, 59, 60,
475
+ 60, 60, 60, 60, 60, 60, 60, 60,
476
+ 60, 60, 60, 60, 60, 60, 60, 60,
477
+ 60, 60, 60, 60, 60, 60, 60, 60,
478
+ 60, 59, 59, 59, 59, 59, 59, 60,
479
+ 60, 60, 60, 60, 60, 60, 60, 60,
480
+ 60, 60, 60, 60, 60, 60, 60, 60,
481
+ 60, 60, 60, 60, 60, 60, 60, 60,
482
+ 60, 59, 60, 61, 59, 59, 59, 59,
483
+ 59, 59, 59, 59, 59, 59, 59, 59,
484
+ 59, 59, 59, 59, 59, 59, 60, 60,
485
+ 60, 60, 60, 60, 60, 60, 60, 60,
486
+ 60, 60, 60, 60, 60, 60, 60, 60,
487
+ 60, 60, 60, 60, 60, 60, 60, 60,
488
+ 59, 59, 59, 59, 59, 59, 60, 60,
489
+ 60, 60, 60, 60, 60, 60, 60, 60,
490
+ 60, 60, 60, 60, 60, 60, 60, 60,
491
+ 60, 60, 60, 60, 60, 60, 60, 60,
492
+ 59, 62, 59, 63, 59, 59, 64, 65,
493
+ 66, 67, 59, 59, 68, 59, 59, 59,
494
+ 59, 69, 59, 59, 59, 70, 59, 59,
495
+ 71, 59, 72, 59, 73, 74, 59, 64,
496
+ 65, 66, 67, 59, 59, 68, 59, 59,
497
+ 59, 59, 69, 59, 59, 59, 70, 59,
498
+ 59, 71, 59, 72, 59, 73, 74, 59,
499
+ 75, 59, 59, 59, 59, 59, 59, 76,
500
+ 59, 77, 59, 78, 59, 79, 59, 80,
501
+ 59, 81, 59, 82, 59, 83, 59, 80,
502
+ 59, 84, 59, 85, 59, 80, 59, 86,
503
+ 59, 87, 59, 88, 59, 80, 59, 89,
504
+ 59, 90, 59, 91, 59, 80, 59, 92,
505
+ 59, 93, 59, 94, 59, 80, 59, 95,
506
+ 59, 96, 59, 97, 59, 80, 59, 98,
507
+ 59, 99, 59, 100, 59, 80, 59, 101,
508
+ 59, 59, 102, 59, 103, 59, 94, 59,
509
+ 104, 59, 94, 59, 105, 59, 106, 59,
510
+ 107, 59, 80, 59, 108, 59, 99, 59,
511
+ 109, 59, 110, 59, 80, 59, 67, 59,
512
+ 111, 111, 111, 111, 111, 111, 111, 111,
513
+ 111, 111, 111, 111, 111, 111, 111, 111,
514
+ 111, 111, 111, 111, 111, 111, 111, 111,
515
+ 111, 111, 59, 59, 59, 59, 59, 59,
516
+ 111, 111, 111, 111, 111, 111, 111, 111,
517
+ 111, 111, 111, 111, 111, 111, 111, 111,
518
+ 111, 111, 111, 111, 111, 111, 111, 111,
519
+ 111, 111, 59, 112, 59, 113, 59, 115,
520
+ 115, 115, 115, 115, 115, 115, 115, 115,
521
+ 115, 115, 115, 115, 115, 115, 115, 115,
522
+ 115, 115, 115, 115, 115, 115, 115, 115,
523
+ 115, 115, 115, 115, 115, 115, 115, 115,
524
+ 115, 115, 115, 115, 115, 115, 115, 115,
525
+ 115, 115, 115, 115, 115, 115, 115, 115,
526
+ 115, 115, 115, 115, 115, 115, 115, 115,
527
+ 115, 115, 115, 115, 115, 115, 115, 114,
528
+ 116, 116, 116, 116, 116, 116, 116, 116,
529
+ 116, 116, 116, 116, 116, 116, 116, 116,
530
+ 116, 116, 116, 116, 116, 116, 116, 116,
531
+ 116, 116, 116, 116, 116, 116, 116, 116,
532
+ 116, 116, 116, 116, 116, 116, 116, 116,
533
+ 116, 116, 116, 116, 116, 116, 116, 116,
534
+ 116, 116, 116, 116, 116, 116, 116, 116,
535
+ 116, 116, 116, 116, 116, 116, 116, 116,
536
+ 114, 117, 117, 117, 117, 117, 117, 117,
537
+ 117, 117, 117, 117, 117, 117, 117, 117,
538
+ 117, 117, 117, 117, 117, 117, 117, 117,
539
+ 117, 117, 117, 117, 117, 117, 117, 117,
540
+ 117, 117, 117, 117, 117, 117, 117, 117,
541
+ 117, 117, 117, 117, 117, 117, 117, 117,
542
+ 117, 117, 117, 117, 117, 117, 117, 117,
543
+ 117, 117, 117, 117, 117, 117, 117, 117,
544
+ 117, 114, 118, 118, 118, 118, 118, 118,
545
+ 118, 118, 118, 118, 118, 118, 118, 118,
546
+ 118, 118, 118, 118, 118, 118, 118, 118,
547
+ 118, 118, 118, 118, 118, 118, 118, 118,
548
+ 118, 118, 118, 118, 118, 118, 118, 118,
549
+ 118, 118, 118, 118, 118, 118, 118, 118,
550
+ 118, 118, 118, 118, 118, 118, 118, 118,
551
+ 118, 118, 118, 118, 118, 118, 118, 118,
552
+ 118, 118, 114, 119, 119, 119, 119, 119,
553
+ 119, 119, 119, 119, 119, 119, 119, 119,
554
+ 119, 119, 119, 119, 119, 119, 119, 119,
555
+ 119, 119, 119, 119, 119, 119, 119, 119,
556
+ 119, 119, 119, 119, 119, 119, 119, 119,
557
+ 119, 119, 119, 119, 119, 119, 119, 119,
558
+ 119, 119, 119, 119, 119, 119, 119, 119,
559
+ 119, 119, 119, 119, 119, 119, 119, 119,
560
+ 119, 119, 119, 114, 120, 120, 120, 120,
561
+ 120, 120, 120, 120, 120, 120, 120, 120,
562
+ 120, 120, 120, 120, 120, 120, 120, 120,
563
+ 120, 120, 120, 120, 120, 120, 120, 120,
564
+ 120, 120, 120, 120, 120, 120, 120, 120,
565
+ 120, 120, 120, 120, 120, 120, 120, 120,
566
+ 120, 120, 120, 120, 120, 120, 120, 120,
567
+ 120, 120, 120, 120, 120, 120, 120, 120,
568
+ 120, 120, 120, 120, 114, 122, 121, 123,
569
+ 121, 124, 124, 124, 124, 124, 124, 124,
570
+ 124, 124, 124, 121, 121, 121, 121, 121,
571
+ 121, 121, 124, 124, 124, 124, 124, 124,
572
+ 121, 121, 121, 121, 121, 121, 121, 121,
573
+ 121, 121, 121, 121, 121, 121, 121, 121,
574
+ 121, 121, 121, 121, 121, 121, 121, 121,
575
+ 121, 121, 124, 124, 124, 124, 124, 124,
576
+ 121, 125, 33, 126, 126, 126, 126, 126,
577
+ 126, 126, 126, 126, 126, 126, 126, 126,
578
+ 126, 126, 126, 126, 126, 126, 126, 126,
579
+ 126, 126, 126, 126, 126, 33, 33, 33,
580
+ 33, 33, 33, 126, 126, 126, 126, 126,
581
+ 126, 126, 126, 126, 126, 126, 126, 126,
582
+ 126, 126, 126, 126, 126, 126, 126, 126,
583
+ 126, 126, 126, 126, 126, 33, 127, 33,
584
+ 128, 128, 128, 128, 128, 128, 128, 128,
585
+ 128, 128, 128, 128, 128, 128, 128, 128,
586
+ 128, 128, 128, 128, 128, 128, 128, 128,
587
+ 128, 128, 33, 129, 33, 33, 33, 33,
588
+ 128, 128, 128, 128, 128, 128, 128, 128,
589
+ 128, 128, 128, 128, 128, 128, 128, 128,
590
+ 128, 128, 128, 128, 128, 128, 128, 128,
591
+ 128, 128, 33, 130, 33, 33, 33, 33,
592
+ 33, 33, 33, 33, 33, 33, 33, 33,
593
+ 33, 33, 33, 33, 33, 33, 33, 33,
594
+ 33, 33, 33, 33, 33, 33, 33, 33,
595
+ 33, 33, 33, 131, 33, 131, 33, 128,
596
+ 128, 128, 128, 128, 128, 128, 128, 128,
597
+ 128, 128, 128, 128, 128, 128, 128, 128,
598
+ 128, 128, 128, 128, 128, 128, 128, 128,
599
+ 128, 33, 33, 33, 33, 33, 33, 128,
600
+ 128, 128, 128, 128, 128, 128, 128, 128,
601
+ 128, 128, 128, 128, 128, 128, 128, 128,
602
+ 128, 128, 128, 128, 128, 128, 128, 128,
603
+ 128, 33, 132, 132, 132, 132, 132, 132,
604
+ 132, 132, 132, 132, 33, 33, 33, 33,
605
+ 33, 33, 33, 132, 132, 132, 132, 132,
606
+ 132, 33, 33, 33, 33, 33, 33, 33,
607
+ 33, 33, 33, 33, 33, 33, 33, 33,
608
+ 33, 33, 33, 33, 33, 33, 33, 33,
609
+ 33, 33, 33, 132, 132, 132, 132, 132,
610
+ 132, 33, 33, 33, 33, 33, 33, 33,
611
+ 33, 33, 33, 33, 33, 33, 33, 33,
612
+ 33, 33, 33, 33, 33, 133, 33, 134,
613
+ 134, 134, 134, 134, 134, 134, 134, 134,
614
+ 134, 33, 33, 33, 33, 33, 33, 33,
615
+ 134, 134, 134, 134, 134, 134, 33, 33,
616
+ 33, 33, 33, 33, 33, 33, 33, 33,
617
+ 33, 33, 33, 33, 33, 33, 33, 33,
618
+ 33, 33, 33, 33, 33, 33, 33, 33,
619
+ 134, 134, 134, 134, 134, 134, 33, 135,
620
+ 135, 135, 135, 135, 135, 135, 135, 135,
621
+ 135, 33, 33, 33, 33, 33, 33, 33,
622
+ 135, 135, 135, 135, 135, 135, 33, 33,
623
+ 33, 33, 33, 33, 33, 33, 33, 33,
624
+ 33, 33, 33, 33, 33, 33, 33, 33,
625
+ 33, 33, 33, 33, 33, 33, 33, 33,
626
+ 135, 135, 135, 135, 135, 135, 33, 136,
627
+ 136, 136, 136, 136, 136, 136, 136, 136,
628
+ 136, 33, 33, 33, 33, 33, 33, 33,
629
+ 136, 136, 136, 136, 136, 136, 33, 33,
630
+ 33, 33, 33, 33, 33, 33, 33, 33,
631
+ 33, 33, 33, 33, 33, 33, 33, 33,
632
+ 33, 33, 33, 33, 33, 33, 33, 33,
633
+ 136, 136, 136, 136, 136, 136, 33, 137,
634
+ 137, 137, 137, 137, 137, 137, 137, 137,
635
+ 137, 33, 33, 33, 33, 33, 33, 33,
636
+ 137, 137, 137, 137, 137, 137, 33, 33,
637
+ 33, 33, 33, 33, 33, 33, 33, 33,
638
+ 33, 33, 33, 33, 33, 33, 33, 33,
639
+ 33, 33, 33, 33, 33, 33, 33, 33,
640
+ 137, 137, 137, 137, 137, 137, 33, 138,
641
+ 138, 138, 138, 138, 138, 138, 138, 138,
642
+ 138, 33, 33, 33, 33, 33, 33, 33,
643
+ 138, 138, 138, 138, 138, 138, 33, 33,
644
+ 33, 33, 33, 33, 33, 33, 33, 33,
645
+ 33, 33, 33, 33, 33, 33, 33, 33,
646
+ 33, 33, 33, 33, 33, 33, 33, 33,
647
+ 138, 138, 138, 138, 138, 138, 33, 139,
648
+ 139, 139, 139, 139, 139, 139, 139, 139,
649
+ 139, 33, 33, 33, 33, 33, 33, 33,
650
+ 139, 139, 139, 139, 139, 139, 33, 33,
651
+ 33, 33, 33, 33, 33, 33, 33, 33,
652
+ 33, 33, 33, 33, 33, 33, 33, 33,
653
+ 33, 33, 33, 33, 33, 33, 33, 33,
654
+ 139, 139, 139, 139, 139, 139, 33, 140,
655
+ 140, 140, 140, 140, 140, 140, 140, 140,
656
+ 140, 33, 33, 33, 33, 33, 33, 33,
657
+ 140, 140, 140, 140, 140, 140, 33, 33,
658
+ 33, 33, 33, 33, 33, 33, 33, 33,
659
+ 33, 33, 33, 33, 33, 33, 33, 33,
660
+ 33, 33, 33, 33, 33, 33, 33, 33,
661
+ 140, 140, 140, 140, 140, 140, 33, 141,
662
+ 141, 141, 141, 141, 33, 33, 33, 33,
663
+ 33, 33, 33, 33, 33, 33, 33, 33,
664
+ 33, 33, 33, 33, 33, 33, 141, 33,
665
+ 33, 33, 33, 33, 33, 33, 33, 33,
666
+ 33, 33, 33, 33, 33, 33, 137, 137,
667
+ 137, 137, 137, 137, 137, 137, 137, 137,
668
+ 33, 33, 33, 33, 33, 33, 33, 137,
669
+ 137, 137, 137, 137, 137, 33, 33, 33,
670
+ 33, 33, 33, 33, 33, 33, 33, 33,
671
+ 33, 33, 33, 33, 33, 33, 33, 33,
672
+ 33, 33, 33, 33, 33, 33, 33, 137,
673
+ 137, 137, 137, 137, 137, 33, 33, 33,
674
+ 33, 33, 33, 33, 33, 33, 33, 33,
675
+ 33, 33, 33, 33, 33, 33, 33, 33,
676
+ 33, 33, 33, 136, 33, 137, 137, 137,
677
+ 137, 137, 137, 137, 137, 137, 137, 33,
678
+ 33, 33, 33, 33, 33, 33, 137, 137,
679
+ 137, 137, 137, 137, 33, 33, 33, 33,
680
+ 33, 33, 33, 33, 33, 33, 33, 33,
681
+ 33, 33, 33, 33, 33, 33, 33, 33,
682
+ 33, 33, 33, 33, 33, 33, 137, 137,
683
+ 137, 137, 137, 137, 33, 33, 33, 33,
684
+ 33, 33, 33, 33, 33, 33, 33, 33,
685
+ 33, 33, 33, 33, 33, 33, 33, 33,
686
+ 33, 33, 136, 33, 142, 142, 142, 142,
687
+ 142, 142, 142, 142, 142, 142, 33, 33,
688
+ 33, 33, 33, 33, 33, 142, 142, 142,
689
+ 142, 142, 142, 33, 33, 33, 33, 33,
690
+ 33, 33, 33, 33, 33, 33, 33, 33,
691
+ 33, 33, 33, 33, 33, 33, 33, 33,
692
+ 33, 33, 33, 33, 33, 142, 142, 142,
693
+ 142, 142, 142, 33, 33, 33, 33, 33,
694
+ 33, 33, 33, 33, 33, 33, 33, 33,
695
+ 33, 33, 33, 33, 33, 33, 33, 143,
696
+ 33, 144, 144, 144, 144, 144, 144, 144,
697
+ 144, 144, 144, 33, 33, 33, 33, 33,
698
+ 33, 33, 144, 144, 144, 144, 144, 144,
699
+ 33, 33, 33, 33, 33, 33, 33, 33,
700
+ 33, 33, 33, 33, 33, 33, 33, 33,
701
+ 33, 33, 33, 33, 33, 33, 33, 33,
702
+ 33, 33, 144, 144, 144, 144, 144, 144,
703
+ 33, 145, 145, 145, 145, 145, 145, 145,
704
+ 145, 145, 145, 33, 33, 33, 33, 33,
705
+ 33, 33, 145, 145, 145, 145, 145, 145,
706
+ 33, 33, 33, 33, 33, 33, 33, 33,
707
+ 33, 33, 33, 33, 33, 33, 33, 33,
708
+ 33, 33, 33, 33, 33, 33, 33, 33,
709
+ 33, 33, 145, 145, 145, 145, 145, 145,
710
+ 33, 33, 33, 33, 33, 33, 33, 33,
711
+ 33, 33, 33, 33, 33, 33, 33, 33,
712
+ 33, 33, 33, 33, 33, 33, 146, 33,
713
+ 147, 147, 147, 147, 147, 147, 147, 147,
714
+ 147, 147, 33, 33, 33, 33, 33, 33,
715
+ 33, 147, 147, 147, 147, 147, 147, 33,
716
+ 33, 33, 33, 33, 33, 33, 33, 33,
717
+ 33, 33, 33, 33, 33, 33, 33, 33,
718
+ 33, 33, 33, 33, 33, 33, 33, 33,
719
+ 33, 147, 147, 147, 147, 147, 147, 33,
720
+ 33, 33, 33, 33, 33, 33, 33, 33,
721
+ 33, 33, 33, 33, 33, 33, 33, 33,
722
+ 33, 33, 33, 33, 33, 146, 33, 148,
723
+ 148, 148, 148, 148, 148, 148, 148, 148,
724
+ 148, 33, 33, 33, 33, 33, 33, 33,
725
+ 148, 148, 148, 148, 148, 148, 33, 33,
726
+ 33, 33, 33, 33, 33, 33, 33, 33,
727
+ 33, 33, 33, 33, 33, 33, 33, 33,
728
+ 33, 33, 33, 33, 33, 33, 33, 33,
729
+ 148, 148, 148, 148, 148, 148, 33, 33,
730
+ 33, 33, 33, 33, 33, 33, 33, 33,
731
+ 33, 33, 33, 33, 33, 33, 33, 33,
732
+ 33, 33, 33, 33, 146, 33, 149, 149,
733
+ 149, 149, 149, 149, 149, 149, 149, 149,
734
+ 33, 33, 33, 33, 33, 33, 33, 149,
735
+ 149, 149, 149, 149, 149, 33, 33, 33,
736
+ 33, 33, 33, 33, 33, 33, 33, 33,
737
+ 33, 33, 33, 33, 33, 33, 33, 33,
738
+ 33, 33, 33, 33, 33, 33, 33, 149,
739
+ 149, 149, 149, 149, 149, 33, 33, 33,
740
+ 33, 33, 33, 33, 33, 33, 33, 33,
741
+ 33, 33, 33, 33, 33, 33, 33, 33,
742
+ 33, 33, 33, 146, 33, 150, 150, 150,
743
+ 150, 150, 150, 150, 150, 150, 150, 33,
744
+ 33, 33, 33, 33, 33, 33, 150, 150,
745
+ 150, 150, 150, 150, 33, 33, 33, 33,
746
+ 33, 33, 33, 33, 33, 33, 33, 33,
747
+ 33, 33, 33, 33, 33, 33, 33, 33,
748
+ 33, 33, 33, 33, 33, 33, 150, 150,
749
+ 150, 150, 150, 150, 33, 33, 33, 33,
750
+ 33, 33, 33, 33, 33, 33, 33, 33,
751
+ 33, 33, 33, 33, 33, 33, 33, 33,
752
+ 33, 33, 146, 33, 151, 151, 151, 151,
753
+ 151, 151, 151, 151, 151, 151, 33, 33,
754
+ 33, 33, 33, 33, 33, 151, 151, 151,
755
+ 151, 151, 151, 33, 33, 33, 33, 33,
756
+ 33, 33, 33, 33, 33, 33, 33, 33,
757
+ 33, 33, 33, 33, 33, 33, 33, 33,
758
+ 33, 33, 33, 33, 33, 151, 151, 151,
759
+ 151, 151, 151, 33, 33, 33, 33, 33,
760
+ 33, 33, 33, 33, 33, 33, 33, 33,
761
+ 33, 33, 33, 33, 33, 33, 33, 33,
762
+ 33, 146, 33, 152, 152, 152, 152, 152,
763
+ 152, 152, 152, 152, 152, 33, 33, 33,
764
+ 33, 33, 33, 33, 152, 152, 152, 152,
765
+ 152, 152, 33, 33, 33, 33, 33, 33,
766
+ 33, 33, 33, 33, 33, 33, 33, 33,
767
+ 33, 33, 33, 33, 33, 33, 33, 33,
768
+ 33, 33, 33, 33, 152, 152, 152, 152,
769
+ 152, 152, 33, 33, 33, 33, 33, 33,
770
+ 33, 33, 33, 33, 33, 33, 33, 33,
771
+ 33, 33, 33, 33, 33, 33, 33, 33,
772
+ 146, 33, 146, 33, 28, 28, 28, 28,
773
+ 28, 28, 28, 28, 28, 28, 28, 28,
774
+ 28, 28, 28, 28, 28, 28, 28, 28,
775
+ 28, 28, 28, 28, 28, 28, 28, 28,
776
+ 28, 28, 28, 28, 28, 28, 28, 28,
777
+ 28, 28, 28, 28, 28, 28, 28, 28,
778
+ 28, 28, 28, 28, 28, 28, 28, 28,
779
+ 28, 28, 28, 28, 28, 28, 28, 28,
780
+ 28, 28, 28, 28, 28, 28, 153, 153,
781
+ 153, 153, 153, 153, 153, 153, 153, 153,
782
+ 153, 153, 153, 153, 153, 153, 153, 153,
783
+ 153, 153, 153, 153, 153, 153, 153, 153,
784
+ 153, 153, 153, 153, 154, 154, 154, 154,
785
+ 154, 154, 154, 154, 154, 154, 154, 154,
786
+ 154, 154, 154, 154, 155, 155, 155, 155,
787
+ 155, 28, 28, 28, 28, 28, 28, 28,
788
+ 28, 28, 28, 28, 28, 156, 156, 156,
789
+ 156, 156, 156, 156, 156, 156, 156, 156,
790
+ 156, 156, 156, 156, 156, 156, 156, 156,
791
+ 156, 156, 156, 156, 156, 156, 156, 156,
792
+ 156, 156, 156, 156, 157, 157, 157, 157,
793
+ 158, 157, 157, 157, 159, 160, 161, 162,
794
+ 157, 157, 163, 157, 157, 157, 157, 157,
795
+ 157, 157, 157, 157, 157, 157, 157, 157,
796
+ 157, 157, 157, 164, 157, 157, 157, 157,
797
+ 157, 157, 157, 157, 157, 157, 157, 157,
798
+ 157, 157, 157, 157, 157, 157, 157, 157,
799
+ 157, 157, 157, 157, 157, 157, 157, 165,
800
+ 166, 28, 167, 157, 157, 157, 157, 157,
801
+ 157, 157, 157, 157, 157, 157, 157, 157,
802
+ 157, 157, 157, 157, 157, 157, 157, 157,
803
+ 157, 157, 157, 157, 157, 157, 157, 30,
804
+ 168, 28, 157, 156, 157, 153, 153, 153,
805
+ 153, 153, 153, 153, 153, 153, 153, 153,
806
+ 153, 153, 153, 153, 153, 153, 153, 153,
807
+ 153, 153, 153, 153, 153, 153, 153, 153,
808
+ 153, 153, 153, 169, 154, 154, 154, 154,
809
+ 154, 154, 154, 154, 154, 154, 154, 154,
810
+ 154, 154, 154, 154, 169, 155, 155, 155,
811
+ 155, 155, 169, 156, 156, 156, 156, 156,
812
+ 156, 156, 156, 156, 156, 156, 156, 156,
813
+ 156, 156, 156, 156, 156, 156, 156, 156,
814
+ 156, 156, 156, 156, 156, 156, 156, 156,
815
+ 156, 156, 169, 169, 169, 169, 169, 169,
816
+ 169, 169, 169, 169, 169, 169, 169, 169,
817
+ 169, 169, 169, 169, 169, 169, 169, 169,
818
+ 169, 169, 169, 169, 169, 169, 169, 169,
819
+ 169, 169, 169, 169, 169, 169, 169, 169,
820
+ 169, 169, 169, 169, 169, 169, 169, 169,
821
+ 169, 169, 169, 169, 169, 169, 169, 169,
822
+ 169, 169, 169, 169, 169, 169, 169, 169,
823
+ 169, 169, 169, 169, 169, 169, 169, 169,
824
+ 169, 169, 169, 169, 169, 169, 169, 169,
825
+ 169, 169, 169, 169, 169, 169, 169, 169,
826
+ 169, 169, 169, 169, 169, 169, 169, 169,
827
+ 169, 156, 169, 157, 157, 157, 157, 169,
828
+ 157, 157, 157, 169, 169, 169, 169, 157,
829
+ 157, 169, 157, 157, 157, 157, 157, 157,
830
+ 157, 157, 157, 157, 157, 157, 157, 157,
831
+ 157, 157, 169, 157, 157, 157, 157, 157,
832
+ 157, 157, 157, 157, 157, 157, 157, 157,
833
+ 157, 157, 157, 157, 157, 157, 157, 157,
834
+ 157, 157, 157, 157, 157, 157, 169, 169,
835
+ 169, 169, 157, 157, 157, 157, 157, 157,
836
+ 157, 157, 157, 157, 157, 157, 157, 157,
837
+ 157, 157, 157, 157, 157, 157, 157, 157,
838
+ 157, 157, 157, 157, 157, 157, 169, 169,
839
+ 169, 157, 169, 171, 170, 12, 172, 173,
840
+ 172, 172, 172, 174, 172, 172, 172, 172,
841
+ 172, 175, 172, 172, 172, 172, 172, 172,
842
+ 172, 172, 172, 172, 172, 172, 11, 172,
843
+ 176, 12, 11, 172, 172, 172, 172, 172,
844
+ 172, 172, 172, 172, 172, 172, 172, 172,
845
+ 172, 172, 172, 172, 172, 172, 172, 172,
846
+ 172, 172, 172, 172, 172, 172, 172, 172,
847
+ 172, 172, 172, 172, 172, 172, 172, 172,
848
+ 172, 172, 172, 172, 172, 177, 172, 172,
849
+ 172, 177, 172, 172, 172, 172, 172, 172,
850
+ 172, 172, 172, 172, 177, 172, 178, 172,
851
+ 172, 172, 178, 172, 172, 172, 172, 172,
852
+ 172, 172, 172, 172, 172, 178, 172, 179,
853
+ 172, 172, 172, 179, 172, 172, 172, 172,
854
+ 172, 172, 172, 172, 172, 172, 179, 172,
855
+ 180, 172, 172, 172, 180, 172, 172, 172,
856
+ 172, 172, 172, 172, 172, 172, 172, 180,
857
+ 172, 175, 172, 172, 172, 172, 172, 172,
858
+ 172, 172, 172, 172, 172, 172, 172, 172,
859
+ 172, 172, 172, 172, 172, 172, 172, 172,
860
+ 172, 172, 172, 172, 172, 172, 172, 172,
861
+ 172, 172, 172, 172, 172, 172, 172, 172,
862
+ 172, 172, 172, 172, 172, 172, 172, 172,
863
+ 172, 172, 172, 172, 172, 172, 172, 172,
864
+ 172, 172, 172, 172, 172, 181, 172, 172,
865
+ 172, 181, 172, 172, 172, 172, 172, 172,
866
+ 172, 172, 172, 172, 181, 172, 175, 172,
867
+ 172, 172, 172, 172, 172, 172, 172, 172,
868
+ 172, 172, 172, 172, 172, 172, 172, 172,
869
+ 172, 172, 172, 172, 172, 172, 172, 172,
870
+ 172, 172, 172, 172, 172, 172, 172, 172,
871
+ 172, 172, 172, 172, 172, 172, 172, 172,
872
+ 172, 172, 172, 172, 172, 172, 172, 172,
873
+ 172, 172, 172, 172, 172, 172, 172, 172,
874
+ 172, 172, 182, 172, 172, 172, 182, 172,
875
+ 172, 172, 172, 172, 172, 172, 172, 172,
876
+ 172, 182, 172, 175, 172, 172, 172, 172,
877
+ 172, 172, 172, 172, 172, 172, 172, 172,
878
+ 172, 172, 172, 172, 172, 172, 172, 172,
879
+ 172, 172, 172, 172, 172, 172, 172, 172,
880
+ 172, 172, 172, 172, 172, 172, 172, 172,
881
+ 172, 172, 172, 172, 172, 172, 172, 172,
882
+ 172, 172, 172, 172, 172, 172, 172, 172,
883
+ 172, 172, 172, 172, 172, 172, 172, 178,
884
+ 172, 172, 172, 178, 172, 172, 172, 172,
885
+ 172, 172, 172, 172, 172, 172, 178, 172,
886
+ 184, 183, 183, 183, 183, 183, 183, 183,
887
+ 183, 183, 183, 183, 183, 183, 183, 183,
888
+ 183, 183, 183, 183, 184, 183, 186, 185,
889
+ 185, 185, 185, 185, 185, 185, 185, 185,
890
+ 185, 185, 185, 185, 185, 185, 185, 185,
891
+ 185, 185, 186, 185, 188, 187, 187, 187,
892
+ 187, 187, 187, 187, 187, 187, 187, 187,
893
+ 187, 187, 187, 187, 187, 187, 187, 187,
894
+ 188, 187, 190, 190, 189, 191, 189, 189,
895
+ 190, 191, 189, 189, 189, 189, 189, 189,
896
+ 189, 189, 189, 189, 191, 189, 189, 189,
897
+ 191, 189, 189, 190, 189, 189, 189, 189,
898
+ 189, 189, 189, 190, 189, 191, 189, 189,
899
+ 192, 191, 189, 189, 192, 189, 189, 189,
900
+ 189, 189, 189, 189, 191, 189, 189, 189,
901
+ 191, 189, 189, 190, 189, 194, 193, 193,
902
+ 193, 193, 193, 193, 193, 193, 193, 193,
903
+ 193, 193, 193, 193, 193, 193, 193, 193,
904
+ 193, 194, 193, 195, 33, 33, 33, 33,
905
+ 33, 33, 33, 33, 33, 33, 33, 33,
906
+ 33, 33, 33, 33, 33, 33, 33, 33,
907
+ 33, 33, 33, 33, 33, 33, 33, 33,
908
+ 33, 33, 33, 195, 33, 197, 197, 197,
909
+ 197, 197, 197, 197, 197, 197, 197, 197,
910
+ 197, 197, 197, 197, 197, 197, 197, 197,
911
+ 197, 197, 197, 197, 197, 197, 197, 197,
912
+ 197, 197, 197, 198, 198, 198, 198, 198,
913
+ 198, 198, 198, 198, 198, 198, 198, 198,
914
+ 198, 198, 198, 199, 199, 199, 199, 199,
915
+ 196, 196, 196, 196, 196, 196, 196, 196,
916
+ 196, 196, 196, 196, 200, 200, 200, 200,
917
+ 200, 200, 200, 200, 200, 200, 200, 200,
918
+ 200, 200, 200, 200, 200, 200, 200, 200,
919
+ 200, 200, 200, 200, 200, 200, 200, 200,
920
+ 200, 200, 200, 196, 196, 196, 196, 201,
921
+ 196, 202, 196, 201, 201, 201, 201, 196,
922
+ 203, 201, 196, 204, 204, 204, 204, 204,
923
+ 204, 204, 204, 204, 204, 196, 196, 196,
924
+ 196, 196, 201, 196, 204, 204, 204, 204,
925
+ 204, 204, 204, 204, 204, 204, 204, 204,
926
+ 204, 204, 204, 204, 204, 204, 204, 204,
927
+ 204, 204, 204, 204, 204, 204, 205, 206,
928
+ 207, 208, 196, 196, 204, 204, 204, 204,
929
+ 204, 204, 204, 204, 204, 204, 204, 204,
930
+ 204, 204, 204, 204, 204, 204, 204, 204,
931
+ 204, 204, 204, 204, 204, 204, 201, 201,
932
+ 201, 196, 200, 196, 51, 51, 51, 51,
933
+ 51, 51, 51, 51, 51, 51, 51, 51,
934
+ 51, 51, 51, 51, 51, 51, 51, 51,
935
+ 51, 51, 51, 51, 51, 51, 51, 51,
936
+ 51, 51, 51, 51, 51, 51, 51, 51,
937
+ 51, 51, 51, 51, 51, 51, 51, 51,
938
+ 51, 51, 51, 51, 51, 51, 51, 51,
939
+ 51, 51, 51, 51, 51, 51, 51, 51,
940
+ 51, 51, 51, 51, 209, 210, 210, 210,
941
+ 210, 210, 210, 210, 210, 210, 210, 210,
942
+ 210, 210, 210, 210, 210, 210, 210, 210,
943
+ 210, 210, 210, 210, 210, 210, 210, 210,
944
+ 210, 210, 210, 209, 53, 53, 53, 53,
945
+ 53, 53, 53, 53, 53, 53, 53, 53,
946
+ 53, 53, 53, 53, 53, 53, 53, 53,
947
+ 53, 53, 53, 53, 53, 53, 53, 53,
948
+ 53, 53, 53, 53, 53, 53, 53, 53,
949
+ 53, 53, 53, 53, 53, 53, 53, 53,
950
+ 53, 53, 53, 53, 53, 53, 53, 53,
951
+ 53, 53, 53, 53, 53, 53, 53, 53,
952
+ 53, 53, 53, 53, 209, 211, 211, 211,
953
+ 211, 211, 211, 211, 211, 211, 211, 211,
954
+ 211, 211, 211, 211, 211, 209, 56, 56,
955
+ 56, 56, 56, 56, 56, 56, 56, 56,
956
+ 56, 56, 56, 56, 56, 56, 56, 56,
957
+ 56, 56, 56, 56, 56, 56, 56, 56,
958
+ 56, 56, 56, 56, 56, 56, 56, 56,
959
+ 56, 56, 56, 56, 56, 56, 56, 56,
960
+ 56, 56, 56, 56, 56, 56, 56, 56,
961
+ 56, 56, 56, 56, 56, 56, 56, 56,
962
+ 56, 56, 56, 56, 56, 56, 209, 212,
963
+ 212, 212, 212, 212, 209, 200, 200, 200,
964
+ 200, 200, 200, 200, 200, 200, 200, 200,
965
+ 200, 200, 200, 200, 200, 200, 200, 200,
966
+ 200, 200, 200, 200, 200, 200, 200, 200,
967
+ 200, 200, 200, 200, 209, 209, 209, 209,
968
+ 209, 209, 209, 209, 209, 209, 209, 209,
969
+ 209, 209, 209, 209, 209, 209, 209, 209,
970
+ 209, 209, 209, 209, 209, 209, 209, 209,
971
+ 209, 209, 209, 209, 209, 209, 209, 209,
972
+ 209, 209, 209, 209, 209, 209, 209, 209,
973
+ 209, 209, 209, 209, 209, 209, 209, 209,
974
+ 209, 209, 209, 209, 209, 209, 209, 209,
975
+ 209, 209, 209, 209, 209, 209, 209, 209,
976
+ 209, 209, 209, 209, 209, 209, 209, 209,
977
+ 209, 209, 209, 209, 209, 209, 209, 209,
978
+ 209, 209, 209, 209, 209, 209, 209, 209,
979
+ 209, 209, 209, 200, 209, 213, 209, 214,
980
+ 209, 215, 209, 218, 217, 217, 217, 217,
981
+ 217, 217, 217, 217, 217, 217, 217, 219,
982
+ 217, 217, 220, 217, 221, 221, 221, 221,
983
+ 221, 221, 221, 221, 221, 221, 221, 221,
984
+ 221, 221, 221, 221, 221, 221, 221, 221,
985
+ 221, 221, 221, 221, 221, 221, 221, 221,
986
+ 221, 221, 222, 222, 222, 222, 222, 222,
987
+ 222, 222, 222, 222, 222, 222, 222, 222,
988
+ 222, 222, 223, 223, 223, 223, 223, 33,
989
+ 33, 33, 33, 33, 33, 33, 33, 33,
990
+ 33, 33, 33, 224, 224, 224, 224, 224,
991
+ 224, 224, 224, 224, 224, 224, 224, 224,
992
+ 224, 224, 224, 224, 224, 224, 224, 224,
993
+ 224, 224, 224, 224, 224, 224, 224, 224,
994
+ 224, 224, 225, 225, 225, 225, 226, 225,
995
+ 225, 225, 226, 226, 226, 226, 227, 226,
996
+ 226, 225, 225, 225, 225, 225, 225, 225,
997
+ 225, 225, 225, 225, 225, 225, 225, 225,
998
+ 225, 226, 225, 225, 225, 225, 228, 225,
999
+ 225, 225, 228, 225, 225, 225, 225, 225,
1000
+ 225, 225, 229, 225, 225, 228, 225, 225,
1001
+ 225, 228, 225, 225, 225, 226, 226, 226,
1002
+ 226, 225, 225, 225, 230, 225, 228, 225,
1003
+ 225, 225, 228, 225, 225, 225, 225, 225,
1004
+ 225, 225, 229, 225, 225, 228, 225, 225,
1005
+ 225, 228, 231, 225, 225, 226, 226, 226,
1006
+ 225, 224, 33, 221, 221, 221, 221, 221,
1007
+ 221, 221, 221, 221, 221, 221, 221, 221,
1008
+ 221, 221, 221, 221, 221, 221, 221, 221,
1009
+ 221, 221, 221, 221, 221, 221, 221, 221,
1010
+ 221, 232, 222, 222, 222, 222, 222, 222,
1011
+ 222, 222, 222, 222, 222, 222, 222, 222,
1012
+ 222, 222, 232, 223, 223, 223, 223, 223,
1013
+ 232, 224, 224, 224, 224, 224, 224, 224,
1014
+ 224, 224, 224, 224, 224, 224, 224, 224,
1015
+ 224, 224, 224, 224, 224, 224, 224, 224,
1016
+ 224, 224, 224, 224, 224, 224, 224, 224,
1017
+ 232, 232, 232, 232, 232, 232, 232, 232,
1018
+ 232, 232, 232, 232, 232, 232, 232, 232,
1019
+ 232, 232, 232, 232, 232, 232, 232, 232,
1020
+ 232, 232, 232, 232, 232, 232, 232, 232,
1021
+ 232, 232, 232, 232, 232, 232, 232, 232,
1022
+ 232, 232, 232, 232, 232, 232, 232, 232,
1023
+ 232, 232, 232, 232, 232, 232, 232, 232,
1024
+ 232, 232, 232, 232, 232, 232, 232, 232,
1025
+ 232, 232, 232, 232, 232, 232, 232, 232,
1026
+ 232, 232, 232, 232, 232, 232, 232, 232,
1027
+ 232, 232, 232, 232, 232, 232, 232, 232,
1028
+ 232, 232, 232, 232, 232, 232, 232, 224,
1029
+ 232, 225, 225, 225, 225, 114, 225, 225,
1030
+ 225, 114, 114, 114, 114, 225, 114, 114,
1031
+ 225, 225, 225, 225, 225, 225, 225, 225,
1032
+ 225, 225, 225, 225, 225, 225, 225, 225,
1033
+ 114, 225, 225, 225, 225, 225, 225, 225,
1034
+ 225, 225, 225, 225, 225, 225, 225, 225,
1035
+ 225, 225, 225, 225, 225, 225, 225, 225,
1036
+ 225, 225, 225, 225, 114, 114, 114, 114,
1037
+ 225, 225, 225, 225, 225, 225, 225, 225,
1038
+ 225, 225, 225, 225, 225, 225, 225, 225,
1039
+ 225, 225, 225, 225, 225, 225, 225, 225,
1040
+ 225, 225, 225, 225, 114, 114, 114, 225,
1041
+ 114, 225, 225, 225, 225, 232, 225, 225,
1042
+ 225, 232, 232, 232, 232, 225, 232, 232,
1043
+ 225, 233, 233, 233, 233, 233, 233, 233,
1044
+ 233, 233, 233, 225, 225, 225, 225, 225,
1045
+ 232, 225, 233, 233, 233, 233, 233, 233,
1046
+ 225, 225, 225, 225, 225, 225, 225, 225,
1047
+ 225, 225, 225, 225, 225, 225, 225, 225,
1048
+ 225, 225, 225, 225, 232, 232, 232, 232,
1049
+ 225, 225, 233, 233, 233, 233, 233, 233,
1050
+ 225, 225, 225, 225, 225, 225, 225, 225,
1051
+ 225, 225, 225, 225, 225, 225, 225, 225,
1052
+ 225, 225, 225, 225, 232, 232, 232, 225,
1053
+ 232, 225, 225, 225, 225, 234, 225, 225,
1054
+ 225, 234, 234, 234, 234, 225, 235, 234,
1055
+ 225, 236, 236, 236, 236, 236, 236, 236,
1056
+ 236, 236, 236, 225, 225, 225, 225, 225,
1057
+ 234, 225, 236, 236, 236, 236, 236, 236,
1058
+ 225, 225, 225, 225, 225, 225, 225, 225,
1059
+ 225, 225, 225, 225, 225, 225, 225, 225,
1060
+ 225, 225, 225, 225, 234, 234, 234, 234,
1061
+ 225, 225, 236, 236, 236, 236, 236, 236,
1062
+ 225, 225, 225, 225, 225, 225, 225, 225,
1063
+ 225, 225, 225, 225, 225, 225, 225, 225,
1064
+ 225, 225, 225, 225, 234, 234, 234, 225,
1065
+ 234, 238, 238, 238, 238, 238, 238, 238,
1066
+ 238, 238, 238, 237, 237, 237, 237, 237,
1067
+ 237, 237, 238, 238, 238, 238, 238, 238,
1068
+ 237, 237, 237, 237, 237, 237, 237, 237,
1069
+ 237, 237, 237, 237, 237, 237, 237, 237,
1070
+ 237, 237, 237, 237, 237, 237, 237, 237,
1071
+ 237, 237, 238, 238, 238, 238, 238, 238,
1072
+ 237, 225, 225, 225, 225, 234, 225, 225,
1073
+ 225, 234, 234, 234, 234, 225, 235, 234,
1074
+ 225, 225, 225, 225, 225, 225, 225, 225,
1075
+ 225, 225, 225, 225, 225, 225, 225, 225,
1076
+ 234, 225, 225, 225, 225, 225, 225, 225,
1077
+ 225, 225, 225, 225, 225, 225, 225, 225,
1078
+ 225, 225, 225, 225, 225, 225, 225, 225,
1079
+ 225, 225, 225, 225, 234, 234, 234, 234,
1080
+ 225, 225, 225, 225, 225, 225, 225, 225,
1081
+ 225, 225, 225, 225, 225, 225, 225, 225,
1082
+ 225, 225, 225, 225, 225, 225, 225, 225,
1083
+ 225, 225, 225, 225, 234, 234, 234, 225,
1084
+ 234, 240, 239, 239, 239, 240, 240, 240,
1085
+ 240, 239, 239, 240, 239, 241, 242, 242,
1086
+ 242, 242, 242, 242, 242, 243, 243, 239,
1087
+ 239, 239, 239, 239, 240, 239, 33, 33,
1088
+ 244, 33, 239, 239, 33, 33, 239, 239,
1089
+ 239, 239, 245, 239, 239, 246, 239, 239,
1090
+ 33, 239, 239, 239, 33, 239, 239, 33,
1091
+ 240, 240, 240, 240, 239, 239, 247, 247,
1092
+ 125, 33, 247, 247, 33, 33, 239, 239,
1093
+ 33, 239, 239, 247, 239, 246, 239, 247,
1094
+ 247, 247, 248, 247, 33, 249, 239, 33,
1095
+ 240, 240, 240, 239, 251, 251, 251, 251,
1096
+ 251, 251, 251, 251, 250, 253, 253, 253,
1097
+ 253, 253, 253, 253, 253, 252, 255, 255,
1098
+ 255, 255, 255, 255, 255, 255, 255, 255,
1099
+ 254, 254, 254, 254, 254, 254, 254, 255,
1100
+ 255, 255, 255, 255, 255, 254, 254, 254,
1101
+ 254, 254, 254, 254, 254, 254, 254, 254,
1102
+ 254, 254, 254, 254, 254, 254, 254, 254,
1103
+ 254, 254, 254, 254, 254, 254, 254, 255,
1104
+ 255, 255, 255, 255, 255, 254, 0
1105
+ ]
1106
+
1107
+ class << self
1108
+ attr_accessor :_re_scanner_trans_targs
1109
+ private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
1110
+ end
1111
+ self._re_scanner_trans_targs = [
1112
+ 142, 143, 3, 144, 5, 6, 145, 142,
1113
+ 8, 142, 10, 142, 142, 12, 142, 14,
1114
+ 20, 15, 16, 19, 142, 17, 18, 21,
1115
+ 22, 25, 23, 24, 0, 27, 26, 160,
1116
+ 29, 0, 30, 31, 44, 161, 32, 33,
1117
+ 34, 35, 38, 40, 42, 36, 37, 39,
1118
+ 41, 43, 162, 164, 166, 46, 49, 168,
1119
+ 48, 162, 162, 162, 53, 54, 162, 56,
1120
+ 57, 68, 72, 76, 80, 84, 88, 93,
1121
+ 97, 99, 102, 58, 65, 59, 63, 60,
1122
+ 61, 62, 162, 64, 66, 67, 69, 70,
1123
+ 71, 73, 74, 75, 77, 78, 79, 81,
1124
+ 82, 83, 85, 86, 87, 89, 91, 90,
1125
+ 92, 94, 95, 96, 98, 100, 101, 104,
1126
+ 105, 162, 174, 175, 108, 176, 110, 111,
1127
+ 177, 174, 113, 114, 182, 116, 184, 118,
1128
+ 184, 119, 120, 121, 123, 126, 124, 125,
1129
+ 184, 127, 128, 129, 130, 131, 187, 133,
1130
+ 134, 135, 184, 136, 137, 138, 139, 140,
1131
+ 141, 1, 2, 4, 146, 147, 142, 148,
1132
+ 142, 156, 157, 142, 158, 142, 159, 142,
1133
+ 142, 142, 142, 149, 142, 7, 9, 150,
1134
+ 11, 153, 151, 152, 142, 154, 155, 142,
1135
+ 142, 142, 142, 142, 142, 142, 142, 142,
1136
+ 13, 142, 142, 28, 162, 163, 165, 167,
1137
+ 169, 162, 170, 171, 172, 173, 162, 162,
1138
+ 162, 162, 45, 47, 50, 162, 162, 51,
1139
+ 162, 162, 52, 55, 103, 106, 107, 109,
1140
+ 178, 179, 174, 179, 179, 174, 179, 180,
1141
+ 174, 181, 174, 112, 183, 174, 174, 184,
1142
+ 184, 185, 185, 184, 115, 117, 184, 184,
1143
+ 122, 132, 184, 186, 184, 184, 184, 184
1144
+ ]
1145
+
1146
+ class << self
1147
+ attr_accessor :_re_scanner_trans_actions
1148
+ private :_re_scanner_trans_actions, :_re_scanner_trans_actions=
1149
+ end
1150
+ self._re_scanner_trans_actions = [
1151
+ 1, 2, 0, 2, 0, 0, 2, 3,
1152
+ 4, 5, 0, 6, 7, 0, 8, 0,
1153
+ 0, 0, 0, 0, 9, 0, 0, 0,
1154
+ 0, 0, 0, 0, 10, 0, 0, 0,
1155
+ 0, 0, 0, 0, 0, 12, 0, 0,
1156
+ 0, 0, 0, 0, 0, 0, 0, 0,
1157
+ 0, 0, 13, 14, 14, 0, 0, 14,
1158
+ 0, 15, 16, 17, 0, 0, 18, 0,
1159
+ 0, 0, 0, 0, 0, 0, 0, 0,
1160
+ 0, 0, 0, 0, 0, 0, 0, 0,
1161
+ 0, 0, 19, 0, 0, 0, 0, 0,
1162
+ 0, 0, 0, 0, 0, 0, 0, 0,
1163
+ 0, 0, 0, 0, 0, 0, 0, 0,
1164
+ 0, 0, 0, 0, 0, 0, 0, 0,
1165
+ 0, 20, 21, 22, 0, 22, 0, 0,
1166
+ 22, 23, 0, 0, 0, 0, 24, 0,
1167
+ 25, 0, 0, 0, 0, 0, 0, 0,
1168
+ 26, 0, 0, 0, 0, 0, 0, 0,
1169
+ 0, 0, 27, 0, 0, 0, 0, 0,
1170
+ 0, 0, 0, 0, 0, 0, 30, 31,
1171
+ 32, 0, 0, 33, 0, 34, 14, 35,
1172
+ 36, 37, 38, 39, 40, 4, 0, 0,
1173
+ 0, 0, 0, 0, 41, 0, 0, 42,
1174
+ 43, 44, 45, 46, 47, 48, 49, 50,
1175
+ 0, 51, 52, 0, 54, 0, 14, 14,
1176
+ 0, 55, 0, 0, 14, 14, 56, 57,
1177
+ 58, 59, 0, 0, 0, 60, 61, 0,
1178
+ 62, 63, 0, 0, 0, 0, 0, 0,
1179
+ 0, 22, 64, 65, 66, 67, 68, 0,
1180
+ 69, 14, 70, 0, 14, 71, 72, 73,
1181
+ 74, 75, 76, 77, 0, 0, 78, 79,
1182
+ 0, 0, 80, 0, 81, 82, 83, 84
1183
+ ]
1184
+
1185
+ class << self
1186
+ attr_accessor :_re_scanner_to_state_actions
1187
+ private :_re_scanner_to_state_actions, :_re_scanner_to_state_actions=
1188
+ end
1189
+ self._re_scanner_to_state_actions = [
1190
+ 0, 0, 0, 0, 0, 0, 0, 0,
1191
+ 0, 0, 0, 0, 0, 0, 0, 0,
1192
+ 0, 0, 0, 0, 0, 0, 0, 0,
1193
+ 0, 0, 0, 0, 0, 0, 0, 0,
1194
+ 0, 0, 0, 0, 0, 0, 0, 0,
1195
+ 0, 0, 0, 0, 0, 0, 0, 0,
1196
+ 0, 0, 0, 0, 0, 0, 0, 0,
1197
+ 0, 0, 0, 0, 0, 0, 0, 0,
1198
+ 0, 0, 0, 0, 0, 0, 0, 0,
1199
+ 0, 0, 0, 0, 0, 0, 0, 0,
1200
+ 0, 0, 0, 0, 0, 0, 0, 0,
1201
+ 0, 0, 0, 0, 0, 0, 0, 0,
1202
+ 0, 0, 0, 0, 0, 0, 0, 0,
1203
+ 0, 0, 0, 0, 0, 0, 0, 0,
1204
+ 0, 0, 0, 0, 0, 0, 0, 0,
1205
+ 0, 0, 0, 0, 0, 0, 0, 0,
1206
+ 0, 0, 0, 0, 0, 0, 0, 0,
1207
+ 0, 0, 0, 0, 0, 0, 28, 0,
1208
+ 0, 0, 0, 0, 0, 0, 0, 0,
1209
+ 0, 0, 0, 0, 0, 0, 0, 0,
1210
+ 0, 53, 53, 0, 0, 0, 0, 0,
1211
+ 0, 0, 0, 0, 0, 0, 28, 0,
1212
+ 0, 0, 0, 0, 0, 0, 0, 0,
1213
+ 53, 0, 0, 0
1214
+ ]
1215
+
1216
+ class << self
1217
+ attr_accessor :_re_scanner_from_state_actions
1218
+ private :_re_scanner_from_state_actions, :_re_scanner_from_state_actions=
1219
+ end
1220
+ self._re_scanner_from_state_actions = [
1221
+ 0, 0, 0, 0, 0, 0, 0, 0,
1222
+ 0, 0, 0, 0, 0, 0, 0, 0,
1223
+ 0, 0, 0, 0, 0, 0, 0, 0,
1224
+ 0, 0, 0, 0, 0, 0, 0, 0,
1225
+ 0, 0, 0, 0, 0, 0, 0, 0,
1226
+ 0, 0, 0, 0, 0, 0, 0, 0,
1227
+ 0, 0, 0, 0, 0, 0, 0, 0,
1228
+ 0, 0, 0, 0, 0, 0, 0, 0,
1229
+ 0, 0, 0, 0, 0, 0, 0, 0,
1230
+ 0, 0, 0, 0, 0, 0, 0, 0,
1231
+ 0, 0, 0, 0, 0, 0, 0, 0,
1232
+ 0, 0, 0, 0, 0, 0, 0, 0,
1233
+ 0, 0, 0, 0, 0, 0, 0, 0,
1234
+ 0, 0, 0, 0, 0, 0, 0, 0,
1235
+ 0, 0, 0, 0, 0, 0, 0, 0,
1236
+ 0, 0, 0, 0, 0, 0, 0, 0,
1237
+ 0, 0, 0, 0, 0, 0, 0, 0,
1238
+ 0, 0, 0, 0, 0, 0, 29, 0,
1239
+ 0, 0, 0, 0, 0, 0, 0, 0,
1240
+ 0, 0, 0, 0, 0, 0, 0, 0,
1241
+ 0, 29, 29, 0, 0, 0, 0, 0,
1242
+ 0, 0, 0, 0, 0, 0, 29, 0,
1243
+ 0, 0, 0, 0, 0, 0, 0, 0,
1244
+ 29, 0, 0, 0
1245
+ ]
1246
+
1247
+ class << self
1248
+ attr_accessor :_re_scanner_eof_actions
1249
+ private :_re_scanner_eof_actions, :_re_scanner_eof_actions=
1250
+ end
1251
+ self._re_scanner_eof_actions = [
1252
+ 0, 0, 0, 0, 0, 0, 0, 0,
1253
+ 0, 0, 0, 0, 0, 0, 0, 0,
1254
+ 0, 0, 0, 0, 0, 0, 0, 0,
1255
+ 0, 0, 10, 10, 11, 11, 11, 11,
1256
+ 11, 11, 11, 11, 11, 11, 11, 11,
1257
+ 11, 11, 11, 11, 11, 0, 0, 0,
1258
+ 0, 0, 0, 0, 0, 0, 0, 0,
1259
+ 0, 0, 0, 0, 0, 0, 0, 0,
1260
+ 0, 0, 0, 0, 0, 0, 0, 0,
1261
+ 0, 0, 0, 0, 0, 0, 0, 0,
1262
+ 0, 0, 0, 0, 0, 0, 0, 0,
1263
+ 0, 0, 0, 0, 0, 0, 0, 0,
1264
+ 0, 0, 0, 0, 0, 0, 0, 0,
1265
+ 0, 0, 0, 0, 0, 0, 0, 0,
1266
+ 0, 0, 0, 0, 0, 0, 0, 0,
1267
+ 0, 0, 0, 0, 0, 0, 0, 0,
1268
+ 0, 0, 0, 0, 0, 0, 0, 0,
1269
+ 0, 0, 0, 0, 0, 0, 0, 0,
1270
+ 0, 0, 0, 0, 0, 0, 0, 0,
1271
+ 0, 0, 0, 0, 0, 0, 0, 0,
1272
+ 0, 0, 10, 0, 0, 0, 0, 0,
1273
+ 0, 0, 0, 0, 0, 0, 0, 0,
1274
+ 0, 0, 0, 0, 0, 0, 0, 0,
1275
+ 0, 0, 0, 0
1276
+ ]
1277
+
1278
+ class << self
1279
+ attr_accessor :_re_scanner_eof_trans
1280
+ private :_re_scanner_eof_trans, :_re_scanner_eof_trans=
1281
+ end
1282
+ self._re_scanner_eof_trans = [
1283
+ 0, 1, 1, 1, 1, 1, 1, 8,
1284
+ 8, 8, 8, 8, 8, 15, 15, 15,
1285
+ 15, 15, 15, 15, 15, 15, 15, 15,
1286
+ 15, 15, 0, 0, 0, 0, 0, 0,
1287
+ 0, 0, 0, 0, 0, 0, 0, 0,
1288
+ 0, 0, 0, 0, 0, 51, 51, 51,
1289
+ 51, 51, 51, 51, 59, 59, 59, 59,
1290
+ 59, 59, 59, 59, 59, 59, 59, 59,
1291
+ 59, 59, 59, 59, 59, 59, 59, 59,
1292
+ 59, 59, 59, 59, 59, 59, 59, 59,
1293
+ 59, 59, 59, 59, 59, 59, 59, 59,
1294
+ 59, 59, 59, 59, 59, 59, 59, 59,
1295
+ 59, 59, 59, 59, 59, 59, 59, 59,
1296
+ 59, 59, 115, 115, 115, 115, 115, 115,
1297
+ 122, 122, 122, 0, 0, 0, 0, 0,
1298
+ 0, 0, 0, 0, 0, 0, 0, 0,
1299
+ 0, 0, 0, 0, 0, 0, 0, 0,
1300
+ 0, 0, 0, 0, 0, 0, 0, 170,
1301
+ 170, 170, 170, 170, 171, 173, 173, 173,
1302
+ 173, 173, 173, 173, 184, 186, 188, 190,
1303
+ 194, 0, 0, 210, 210, 210, 210, 210,
1304
+ 210, 210, 210, 210, 210, 217, 0, 233,
1305
+ 233, 233, 233, 115, 233, 235, 238, 235,
1306
+ 0, 251, 253, 255
1307
+ ]
1308
+
1309
+ class << self
1310
+ attr_accessor :re_scanner_start
1311
+ end
1312
+ self.re_scanner_start = 142;
1313
+ class << self
1314
+ attr_accessor :re_scanner_first_final
1315
+ end
1316
+ self.re_scanner_first_final = 142;
1317
+ class << self
1318
+ attr_accessor :re_scanner_error
1319
+ end
1320
+ self.re_scanner_error = 0;
1321
+
1322
+ class << self
1323
+ attr_accessor :re_scanner_en_unicode_property
1324
+ end
1325
+ self.re_scanner_en_unicode_property = 161;
1326
+ class << self
1327
+ attr_accessor :re_scanner_en_character_set
1328
+ end
1329
+ self.re_scanner_en_character_set = 162;
1330
+ class << self
1331
+ attr_accessor :re_scanner_en_set_escape_sequence
1332
+ end
1333
+ self.re_scanner_en_set_escape_sequence = 174;
1334
+ class << self
1335
+ attr_accessor :re_scanner_en_escape_sequence
1336
+ end
1337
+ self.re_scanner_en_escape_sequence = 184;
1338
+ class << self
1339
+ attr_accessor :re_scanner_en_main
1340
+ end
1341
+ self.re_scanner_en_main = 142;
1342
+
1343
+
1344
+ # line 626 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1345
+
1346
+ class ScannerError < StandardError
1347
+ def initialize(what)
1348
+ super what
1349
+ end
1350
+ end
1351
+
1352
+ class PrematureEndError < ScannerError
1353
+ def initialize(where = '')
1354
+ super "Premature end of pattern: #{where}"
1355
+ end
1356
+ end
1357
+
1358
+ class UnknownUnicodePropertyError < ScannerError
1359
+ def initialize(name)
1360
+ super "Unknown unicode character property name #{name}"
1361
+ end
1362
+ end
1363
+
1364
+
1365
+ # Scans the given regular expression text, or Regexp object and collects the
1366
+ # emitted token into an array that gets returned at the end. If a block is
1367
+ # given, it gets called for each emitted token.
1368
+ #
1369
+ # This method may raise errors if a syntax error is encountered.
1370
+ # --------------------------------------------------------------------------
1371
+ def self.scan(input, &block)
1372
+ top, stack = 0, []
1373
+
1374
+ input = input.source if input.is_a?(Regexp)
1375
+ data = input.unpack("c*") if input.is_a?(String)
1376
+ eof = data.length
1377
+
1378
+ @tokens = []
1379
+ @block = block_given? ? block : nil
1380
+
1381
+ in_group, group_depth = false, 0
1382
+ in_set, set_depth, set_type = false, 0, :set
1383
+
1384
+
1385
+ # line 1386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
1386
+ begin
1387
+ p ||= 0
1388
+ pe ||= data.length
1389
+ cs = re_scanner_start
1390
+ top = 0
1391
+ ts = nil
1392
+ te = nil
1393
+ act = 0
1394
+ end
1395
+
1396
+ # line 666 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1397
+
1398
+ # line 1399 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
1399
+ begin
1400
+ testEof = false
1401
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
1402
+ _goto_level = 0
1403
+ _resume = 10
1404
+ _eof_trans = 15
1405
+ _again = 20
1406
+ _test_eof = 30
1407
+ _out = 40
1408
+ while true
1409
+ if _goto_level <= 0
1410
+ if p == pe
1411
+ _goto_level = _test_eof
1412
+ next
1413
+ end
1414
+ if cs == 0
1415
+ _goto_level = _out
1416
+ next
1417
+ end
1418
+ end
1419
+ if _goto_level <= _resume
1420
+ case _re_scanner_from_state_actions[cs]
1421
+ when 29 then
1422
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1423
+ begin
1424
+ ts = p
1425
+ end
1426
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1427
+ # line 1428 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
1428
+ end
1429
+ _keys = cs << 1
1430
+ _inds = _re_scanner_index_offsets[cs]
1431
+ _slen = _re_scanner_key_spans[cs]
1432
+ _trans = if ( _slen > 0 &&
1433
+ _re_scanner_trans_keys[_keys] <= data[p] &&
1434
+ data[p] <= _re_scanner_trans_keys[_keys + 1]
1435
+ ) then
1436
+ _re_scanner_indicies[ _inds + data[p] - _re_scanner_trans_keys[_keys] ]
1437
+ else
1438
+ _re_scanner_indicies[ _inds + _slen ]
1439
+ end
1440
+ end
1441
+ if _goto_level <= _eof_trans
1442
+ cs = _re_scanner_trans_targs[_trans]
1443
+ if _re_scanner_trans_actions[_trans] != 0
1444
+ case _re_scanner_trans_actions[_trans]
1445
+ when 10 then
1446
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1447
+ begin
1448
+ raise PrematureEndError end
1449
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1450
+ when 31 then
1451
+ # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1452
+ begin
1453
+ group_depth += 1; in_group = true end
1454
+ # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1455
+ when 4 then
1456
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1457
+ begin
1458
+ group_depth -= 1; in_group = group_depth > 0 ? true : false end
1459
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1460
+ when 14 then
1461
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1462
+ begin
1463
+ te = p+1
1464
+ end
1465
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1466
+ when 12 then
1467
+ # line 60 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1468
+ begin
1469
+ te = p+1
1470
+ begin
1471
+ text = data[ts-1..te-1].pack('c*')
1472
+ if in_set
1473
+ type = :set
1474
+ else
1475
+ type = text[1,1] == 'p' ? :property : :nonproperty
1476
+ end
1477
+
1478
+ name = data[ts+2..te-2].pack('c*').gsub(/[\s_]/,'').downcase
1479
+ if name[0].chr == '^'
1480
+ name = name[1..-1]
1481
+ type = :nonproperty
1482
+ end
1483
+
1484
+ case name
1485
+ # Named
1486
+ when 'alnum'
1487
+ self.emit(type, :alnum, text, ts-1, te)
1488
+ when 'alpha'
1489
+ self.emit(type, :alpha, text, ts-1, te)
1490
+ when 'ascii'
1491
+ self.emit(type, :ascii, text, ts-1, te)
1492
+ when 'blank'
1493
+ self.emit(type, :blank, text, ts-1, te)
1494
+ when 'cntrl'
1495
+ self.emit(type, :cntrl, text, ts-1, te)
1496
+ when 'digit'
1497
+ self.emit(type, :digit, text, ts-1, te)
1498
+ when 'graph'
1499
+ self.emit(type, :graph, text, ts-1, te)
1500
+ when 'lower'
1501
+ self.emit(type, :lower, text, ts-1, te)
1502
+ when 'print'
1503
+ self.emit(type, :print, text, ts-1, te)
1504
+ when 'punct'
1505
+ self.emit(type, :punct, text, ts-1, te)
1506
+ when 'space'
1507
+ self.emit(type, :space, text, ts-1, te)
1508
+ when 'upper'
1509
+ self.emit(type, :upper, text, ts-1, te)
1510
+ when 'xdigit'
1511
+ self.emit(type, :xdigit, text, ts-1, te)
1512
+
1513
+ when 'any'
1514
+ self.emit(type, :any, text, ts-1, te)
1515
+ when 'assigned'
1516
+ self.emit(type, :assigned, text, ts-1, te)
1517
+ when 'newline'
1518
+ self.emit(type, :newline, text, ts-1, te)
1519
+ when 'word'
1520
+ self.emit(type, :word, text, ts-1, te)
1521
+
1522
+ # Letters
1523
+ when 'l', 'letter'
1524
+ self.emit(type, :letter_any, text, ts-1, te)
1525
+ when 'lu', 'uppercaseletter'
1526
+ self.emit(type, :letter_uppercase, text, ts-1, te)
1527
+ when 'll', 'lowercaseletter'
1528
+ self.emit(type, :letter_lowercase, text, ts-1, te)
1529
+ when 'lt', 'titlecaseletter'
1530
+ self.emit(type, :letter_titlecase, text, ts-1, te)
1531
+ when 'lm', 'modifierletter'
1532
+ self.emit(type, :letter_modifier, text, ts-1, te)
1533
+ when 'lo', 'otherletter'
1534
+ self.emit(type, :letter_other, text, ts-1, te)
1535
+
1536
+ # Marks
1537
+ when 'm', 'mark'
1538
+ self.emit(type, :mark_any, text, ts-1, te)
1539
+ when 'mn', 'nonspacingmark'
1540
+ self.emit(type, :mark_nonspacing, text, ts-1, te)
1541
+ when 'mc', 'spacingmark'
1542
+ self.emit(type, :mark_spacing, text, ts-1, te)
1543
+ when 'me', 'enclosingmark'
1544
+ self.emit(type, :mark_enclosing, text, ts-1, te)
1545
+
1546
+ # Numbers
1547
+ when 'n', 'number'
1548
+ self.emit(type, :number_any, text, ts-1, te)
1549
+ when 'nd', 'decimalnumber'
1550
+ self.emit(type, :number_decimal, text, ts-1, te)
1551
+ when 'nl', 'letternumber'
1552
+ self.emit(type, :number_letter, text, ts-1, te)
1553
+ when 'no', 'othernumber'
1554
+ self.emit(type, :number_other, text, ts-1, te)
1555
+
1556
+ # Punctuation
1557
+ when 'p', 'punctuation'
1558
+ self.emit(type, :punct_any, text, ts-1, te)
1559
+ when 'pc', 'connectorpunctuation'
1560
+ self.emit(type, :punct_connector, text, ts-1, te)
1561
+ when 'pd', 'dashpunctuation'
1562
+ self.emit(type, :punct_dash, text, ts-1, te)
1563
+ when 'ps', 'openpunctuation'
1564
+ self.emit(type, :punct_open, text, ts-1, te)
1565
+ when 'pe', 'closepunctuation'
1566
+ self.emit(type, :punct_close, text, ts-1, te)
1567
+ when 'pi', 'initialpunctuation'
1568
+ self.emit(type, :punct_initial, text, ts-1, te)
1569
+ when 'pf', 'finalpunctuation'
1570
+ self.emit(type, :punct_final, text, ts-1, te)
1571
+ when 'po', 'otherpunctuation'
1572
+ self.emit(type, :punct_other, text, ts-1, te)
1573
+
1574
+ # Symbols
1575
+ when 's', 'symbol'
1576
+ self.emit(type, :symbol_any, text, ts-1, te)
1577
+ when 'sm', 'mathsymbol'
1578
+ self.emit(type, :symbol_math, text, ts-1, te)
1579
+ when 'sc', 'currencysymbol'
1580
+ self.emit(type, :symbol_currency, text, ts-1, te)
1581
+ when 'sk', 'modifiersymbol'
1582
+ self.emit(type, :symbol_modifier, text, ts-1, te)
1583
+ when 'so', 'othersymbol'
1584
+ self.emit(type, :symbol_other, text, ts-1, te)
1585
+
1586
+ # Separators
1587
+ when 'z', 'separator'
1588
+ self.emit(type, :separator_any, text, ts-1, te)
1589
+ when 'zs', 'spaceseparator'
1590
+ self.emit(type, :separator_space, text, ts-1, te)
1591
+ when 'zl', 'lineseparator'
1592
+ self.emit(type, :separator_line, text, ts-1, te)
1593
+ when 'zp', 'paragraphseparator'
1594
+ self.emit(type, :separator_para, text, ts-1, te)
1595
+
1596
+ # Codepoints
1597
+ when 'c', 'other'
1598
+ self.emit(type, :other, text, ts-1, te)
1599
+ when 'cc', 'control'
1600
+ self.emit(type, :control, text, ts-1, te)
1601
+ when 'cf', 'format'
1602
+ self.emit(type, :format, text, ts-1, te)
1603
+ when 'cs', 'surrogate'
1604
+ self.emit(type, :surrogate, text, ts-1, te)
1605
+ when 'co', 'privateuse'
1606
+ self.emit(type, :private_use, text, ts-1, te)
1607
+ when 'cn', 'unassigned'
1608
+ self.emit(type, :unassigned, text, ts-1, te)
1609
+
1610
+ # Age
1611
+ when 'age=1.1'
1612
+ self.emit(type, :age_1_1, text, ts-1, te)
1613
+ when 'age=2.0'
1614
+ self.emit(type, :age_2_0, text, ts-1, te)
1615
+ when 'age=2.1'
1616
+ self.emit(type, :age_2_1, text, ts-1, te)
1617
+ when 'age=3.0'
1618
+ self.emit(type, :age_3_0, text, ts-1, te)
1619
+ when 'age=3.1'
1620
+ self.emit(type, :age_3_1, text, ts-1, te)
1621
+ when 'age=3.2'
1622
+ self.emit(type, :age_3_2, text, ts-1, te)
1623
+ when 'age=4.0'
1624
+ self.emit(type, :age_4_0, text, ts-1, te)
1625
+ when 'age=4.1'
1626
+ self.emit(type, :age_4_1, text, ts-1, te)
1627
+ when 'age=5.0'
1628
+ self.emit(type, :age_5_0, text, ts-1, te)
1629
+ when 'age=5.1'
1630
+ self.emit(type, :age_5_1, text, ts-1, te)
1631
+ when 'age=5.2'
1632
+ self.emit(type, :age_5_2, text, ts-1, te)
1633
+ when 'age=6.0'
1634
+ self.emit(type, :age_6_0, text, ts-1, te)
1635
+
1636
+ # Derived Properties
1637
+ when 'ahex', 'asciihexdigit'
1638
+ self.emit(type, :ascii_hex, text, ts-1, te)
1639
+ when 'alphabetic'
1640
+ self.emit(type, :alphabetic, text, ts-1, te)
1641
+ when 'cased'
1642
+ self.emit(type, :cased, text, ts-1, te)
1643
+ when 'cwcf', 'changeswhencasefolded'
1644
+ self.emit(type, :changes_when_casefolded, text, ts-1, te)
1645
+ when 'cwcm', 'changeswhencasemapped'
1646
+ self.emit(type, :changes_when_casemapped, text, ts-1, te)
1647
+ when 'cwl', 'changeswhenlowercased'
1648
+ self.emit(type, :changes_when_lowercased, text, ts-1, te)
1649
+ when 'cwt', 'changeswhentitlecased'
1650
+ self.emit(type, :changes_when_titlecased, text, ts-1, te)
1651
+ when 'cwu', 'changeswhenuppercased'
1652
+ self.emit(type, :changes_when_uppercased, text, ts-1, te)
1653
+ when 'ci', 'caseignorable'
1654
+ self.emit(type, :case_ignorable, text, ts-1, te)
1655
+ when 'bidic', 'bidicontrol'
1656
+ self.emit(type, :bidi_control, text, ts-1, te)
1657
+ when 'dash'
1658
+ self.emit(type, :dash, text, ts-1, te)
1659
+ when 'dep', 'deprecated'
1660
+ self.emit(type, :deprecated, text, ts-1, te)
1661
+ when 'di', 'defaultignorablecodepoint'
1662
+ self.emit(type, :default_ignorable_cp, text, ts-1, te)
1663
+ when 'dia', 'diacritic'
1664
+ self.emit(type, :diacritic, text, ts-1, te)
1665
+ when 'ext', 'extender'
1666
+ self.emit(type, :extender, text, ts-1, te)
1667
+ when 'grbase', 'graphemebase'
1668
+ self.emit(type, :grapheme_base, text, ts-1, te)
1669
+ when 'grext', 'graphemeextend'
1670
+ self.emit(type, :grapheme_extend, text, ts-1, te)
1671
+ when 'grlink', 'graphemelink' # NOTE: deprecated as of Unicode 5.0
1672
+ self.emit(type, :grapheme_link, text, ts-1, te)
1673
+ when 'hex', 'hexdigit'
1674
+ self.emit(type, :hex_digit, text, ts-1, te)
1675
+ when 'hyphen' # NOTE: deprecated as of Unicode 6.0
1676
+ self.emit(type, :hyphen, text, ts-1, te)
1677
+ when 'idc', 'idcontinue'
1678
+ self.emit(type, :id_continue, text, ts-1, te)
1679
+ when 'ideo', 'ideographic'
1680
+ self.emit(type, :ideographic, text, ts-1, te)
1681
+ when 'ids', 'idstart'
1682
+ self.emit(type, :id_start, text, ts-1, te)
1683
+ when 'idsb', 'idsbinaryoperator'
1684
+ self.emit(type, :ids_binary_op, text, ts-1, te)
1685
+ when 'idst', 'idstrinaryoperator'
1686
+ self.emit(type, :ids_trinary_op, text, ts-1, te)
1687
+ when 'joinc', 'joincontrol'
1688
+ self.emit(type, :join_control, text, ts-1, te)
1689
+ when 'loe', 'logicalorderexception'
1690
+ self.emit(type, :logical_order_exception, text, ts-1, te)
1691
+ when 'lowercase'
1692
+ self.emit(type, :lowercase, text, ts-1, te)
1693
+ when 'math'
1694
+ self.emit(type, :math, text, ts-1, te)
1695
+ when 'nchar', 'noncharactercodepoint'
1696
+ self.emit(type, :non_character_cp, text, ts-1, te)
1697
+ when 'oalpha', 'otheralphabetic'
1698
+ self.emit(type, :other_alphabetic, text, ts-1, te)
1699
+ when 'odi', 'otherdefaultignorablecodepoint'
1700
+ self.emit(type, :other_default_ignorable_cp, text, ts-1, te)
1701
+ when 'ogrext', 'othergraphemeextend'
1702
+ self.emit(type, :other_grapheme_extended, text, ts-1, te)
1703
+ when 'oidc', 'otheridcontinue'
1704
+ self.emit(type, :other_id_continue, text, ts-1, te)
1705
+ when 'oids', 'otheridstart'
1706
+ self.emit(type, :other_id_start, text, ts-1, te)
1707
+ when 'olower', 'otherlowercase'
1708
+ self.emit(type, :other_lowercase, text, ts-1, te)
1709
+ when 'omath', 'othermath'
1710
+ self.emit(type, :other_math, text, ts-1, te)
1711
+ when 'oupper', 'otheruppercase'
1712
+ self.emit(type, :other_uppercase, text, ts-1, te)
1713
+ when 'patsyn', 'patternsyntax'
1714
+ self.emit(type, :pattern_syntax, text, ts-1, te)
1715
+ when 'patws', 'patternwhitespace'
1716
+ self.emit(type, :pattern_whitespace, text, ts-1, te)
1717
+ when 'qmark', 'quotationmark'
1718
+ self.emit(type, :quotation_mark, text, ts-1, te)
1719
+ when 'radical'
1720
+ self.emit(type, :radical, text, ts-1, te)
1721
+ when 'sd', 'softdotted'
1722
+ self.emit(type, :soft_dotted, text, ts-1, te)
1723
+ when 'sterm'
1724
+ self.emit(type, :sentence_terminal, text, ts-1, te)
1725
+ when 'term', 'terminalpunctuation'
1726
+ self.emit(type, :terminal_punctuation, text, ts-1, te)
1727
+ when 'uideo', 'unifiedideograph'
1728
+ self.emit(type, :unified_ideograph, text, ts-1, te)
1729
+ when 'uppercase'
1730
+ self.emit(type, :uppercase, text, ts-1, te)
1731
+ when 'vs', 'variationselector'
1732
+ self.emit(type, :variation_selector, text, ts-1, te)
1733
+ when 'wspace', 'whitespace'
1734
+ self.emit(type, :whitespace, text, ts-1, te)
1735
+ when 'xids', 'xidstart'
1736
+ self.emit(type, :xid_start, text, ts-1, te)
1737
+ when 'xidc', 'xidcontinue'
1738
+ self.emit(type, :xid_continue, text, ts-1, te)
1739
+
1740
+
1741
+ # Scripts
1742
+ when 'arab', 'arabic'
1743
+ self.emit(type, :script_arabic, text, ts-1, te)
1744
+ when 'armi', 'imperialaramaic'
1745
+ self.emit(type, :script_imperial_aramaic, text, ts-1, te)
1746
+ when 'armn', 'armenian'
1747
+ self.emit(type, :script_armenian, text, ts-1, te)
1748
+ when 'avst', 'avestan'
1749
+ self.emit(type, :script_avestan, text, ts-1, te)
1750
+ when 'bali', 'balinese'
1751
+ self.emit(type, :script_balinese, text, ts-1, te)
1752
+ when 'bamu', 'bamum'
1753
+ self.emit(type, :script_bamum, text, ts-1, te)
1754
+ when 'batk', 'batak'
1755
+ self.emit(type, :script_batak, text, ts-1, te)
1756
+ when 'beng', 'bengali'
1757
+ self.emit(type, :script_bengali, text, ts-1, te)
1758
+ when 'bopo', 'bopomofo'
1759
+ self.emit(type, :script_bopomofo, text, ts-1, te)
1760
+ when 'brah', 'brahmi'
1761
+ self.emit(type, :script_brahmi, text, ts-1, te)
1762
+ when 'brai', 'braille'
1763
+ self.emit(type, :script_braille, text, ts-1, te)
1764
+ when 'bugi', 'buginese'
1765
+ self.emit(type, :script_buginese, text, ts-1, te)
1766
+ when 'buhd', 'buhid'
1767
+ self.emit(type, :script_buhid, text, ts-1, te)
1768
+ when 'cans', 'canadianaboriginal'
1769
+ self.emit(type, :script_canadian_aboriginal, text, ts-1, te)
1770
+ when 'cari', 'carian'
1771
+ self.emit(type, :script_carian, text, ts-1, te)
1772
+ when 'cham'
1773
+ self.emit(type, :script_cham, text, ts-1, te)
1774
+ when 'cher', 'cherokee'
1775
+ self.emit(type, :script_cherokee, text, ts-1, te)
1776
+ when 'copt', 'coptic', 'qaac'
1777
+ self.emit(type, :script_coptic, text, ts-1, te)
1778
+ when 'cprt', 'cypriot'
1779
+ self.emit(type, :script_cypriot, text, ts-1, te)
1780
+ when 'cyrl', 'cyrillic'
1781
+ self.emit(type, :script_cyrillic, text, ts-1, te)
1782
+ when 'deva', 'devanagari'
1783
+ self.emit(type, :script_devanagari, text, ts-1, te)
1784
+ when 'dsrt', 'deseret'
1785
+ self.emit(type, :script_deseret, text, ts-1, te)
1786
+ when 'egyp', 'egyptianhieroglyphs'
1787
+ self.emit(type, :script_egyptian_hieroglyphs, text, ts-1, te)
1788
+ when 'ethi', 'ethiopic'
1789
+ self.emit(type, :script_ethiopic, text, ts-1, te)
1790
+ when 'geor', 'georgian'
1791
+ self.emit(type, :script_georgian, text, ts-1, te)
1792
+ when 'glag', 'glagolitic'
1793
+ self.emit(type, :script_glagolitic, text, ts-1, te)
1794
+ when 'goth', 'gothic'
1795
+ self.emit(type, :script_gothic, text, ts-1, te)
1796
+ when 'grek', 'greek'
1797
+ self.emit(type, :script_greek, text, ts-1, te)
1798
+ when 'gujr', 'gujarati'
1799
+ self.emit(type, :script_gujarati, text, ts-1, te)
1800
+ when 'guru', 'gurmukhi'
1801
+ self.emit(type, :script_gurmukhi, text, ts-1, te)
1802
+ when 'hang', 'hangul'
1803
+ self.emit(type, :script_hangul, text, ts-1, te)
1804
+ when 'hani', 'han'
1805
+ self.emit(type, :script_han, text, ts-1, te)
1806
+ when 'hano', 'hanunoo'
1807
+ self.emit(type, :script_hanunoo, text, ts-1, te)
1808
+ when 'hebr', 'hebrew'
1809
+ self.emit(type, :script_hebrew, text, ts-1, te)
1810
+ when 'hira', 'hiragana'
1811
+ self.emit(type, :script_hiragana, text, ts-1, te)
1812
+ when 'hrkt', 'katakanaorhiragana'
1813
+ self.emit(type, :script_katakana_or_hiragana, text, ts-1, te)
1814
+ when 'ital', 'olditalic'
1815
+ self.emit(type, :script_old_italic, text, ts-1, te)
1816
+ when 'java', 'javanese'
1817
+ self.emit(type, :script_javanese, text, ts-1, te)
1818
+ when 'kali', 'kayahli'
1819
+ self.emit(type, :script_kayah_li, text, ts-1, te)
1820
+ when 'kana', 'katakana'
1821
+ self.emit(type, :script_katakana, text, ts-1, te)
1822
+ when 'khar', 'kharoshthi'
1823
+ self.emit(type, :script_kharoshthi, text, ts-1, te)
1824
+ when 'khmr', 'khmer'
1825
+ self.emit(type, :script_khmer, text, ts-1, te)
1826
+ when 'knda', 'kannada'
1827
+ self.emit(type, :script_kannada, text, ts-1, te)
1828
+ when 'kthi', 'kaithi'
1829
+ self.emit(type, :script_kaithi, text, ts-1, te)
1830
+ when 'lana', 'taitham'
1831
+ self.emit(type, :script_tai_tham, text, ts-1, te)
1832
+ when 'laoo', 'lao'
1833
+ self.emit(type, :script_lao, text, ts-1, te)
1834
+ when 'latn', 'latin'
1835
+ self.emit(type, :script_latin, text, ts-1, te)
1836
+ when 'lepc', 'lepcha'
1837
+ self.emit(type, :script_lepcha, text, ts-1, te)
1838
+ when 'limb', 'limbu'
1839
+ self.emit(type, :script_limbu, text, ts-1, te)
1840
+ when 'linb', 'linearb'
1841
+ self.emit(type, :script_linear_b, text, ts-1, te)
1842
+ when 'lisu'
1843
+ self.emit(type, :script_lisu, text, ts-1, te)
1844
+ when 'lyci', 'lycian'
1845
+ self.emit(type, :script_lycian, text, ts-1, te)
1846
+ when 'lydi', 'lydian'
1847
+ self.emit(type, :script_lydian, text, ts-1, te)
1848
+ when 'mlym', 'malayalam'
1849
+ self.emit(type, :script_malayalam, text, ts-1, te)
1850
+ when 'mand', 'mandaic'
1851
+ self.emit(type, :script_mandaic, text, ts-1, te)
1852
+ when 'mong', 'mongolian'
1853
+ self.emit(type, :script_mongolian, text, ts-1, te)
1854
+ when 'mtei', 'meeteimayek'
1855
+ self.emit(type, :script_meetei_mayek, text, ts-1, te)
1856
+ when 'mymr', 'myanmar'
1857
+ self.emit(type, :script_myanmar, text, ts-1, te)
1858
+ when 'nkoo', 'nko'
1859
+ self.emit(type, :script_nko, text, ts-1, te)
1860
+ when 'ogam', 'ogham'
1861
+ self.emit(type, :script_ogham, text, ts-1, te)
1862
+ when 'olck', 'olchiki'
1863
+ self.emit(type, :script_ol_chiki, text, ts-1, te)
1864
+ when 'orkh', 'oldturkic'
1865
+ self.emit(type, :script_old_turkic, text, ts-1, te)
1866
+ when 'orya', 'oriya'
1867
+ self.emit(type, :script_oriya, text, ts-1, te)
1868
+ when 'osma', 'osmanya'
1869
+ self.emit(type, :script_osmanya, text, ts-1, te)
1870
+ when 'phag', 'phagspa'
1871
+ self.emit(type, :script_phags_pa, text, ts-1, te)
1872
+ when 'phli', 'inscriptionalpahlavi'
1873
+ self.emit(type, :script_inscriptional_pahlavi, text, ts-1, te)
1874
+ when 'phnx', 'phoenician'
1875
+ self.emit(type, :script_phoenician, text, ts-1, te)
1876
+ when 'prti', 'inscriptionalparthian'
1877
+ self.emit(type, :script_inscriptional_parthian, text, ts-1, te)
1878
+ when 'rjng', 'rejang'
1879
+ self.emit(type, :script_rejang, text, ts-1, te)
1880
+ when 'runr', 'runic'
1881
+ self.emit(type, :script_runic, text, ts-1, te)
1882
+ when 'samr', 'samaritan'
1883
+ self.emit(type, :script_samaritan, text, ts-1, te)
1884
+ when 'sarb', 'oldsoutharabian'
1885
+ self.emit(type, :script_old_south_arabian, text, ts-1, te)
1886
+ when 'saur', 'saurashtra'
1887
+ self.emit(type, :script_saurashtra, text, ts-1, te)
1888
+ when 'shaw', 'shavian'
1889
+ self.emit(type, :script_shavian, text, ts-1, te)
1890
+ when 'sinh', 'sinhala'
1891
+ self.emit(type, :script_sinhala, text, ts-1, te)
1892
+ when 'sund', 'sundanese'
1893
+ self.emit(type, :script_sundanese, text, ts-1, te)
1894
+ when 'sylo', 'sylotinagri'
1895
+ self.emit(type, :script_syloti_nagri, text, ts-1, te)
1896
+ when 'syrc', 'syriac'
1897
+ self.emit(type, :script_syriac, text, ts-1, te)
1898
+ when 'tagb', 'tagbanwa'
1899
+ self.emit(type, :script_tagbanwa, text, ts-1, te)
1900
+ when 'tale', 'taile'
1901
+ self.emit(type, :script_tai_le, text, ts-1, te)
1902
+ when 'talu', 'newtailue'
1903
+ self.emit(type, :script_new_tai_lue, text, ts-1, te)
1904
+ when 'taml', 'tamil'
1905
+ self.emit(type, :script_tamil, text, ts-1, te)
1906
+ when 'tavt', 'taiviet'
1907
+ self.emit(type, :script_tai_viet, text, ts-1, te)
1908
+ when 'telu', 'telugu'
1909
+ self.emit(type, :script_telugu, text, ts-1, te)
1910
+ when 'tfng', 'tifinagh'
1911
+ self.emit(type, :script_tifinagh, text, ts-1, te)
1912
+ when 'tglg', 'tagalog'
1913
+ self.emit(type, :script_tagalog, text, ts-1, te)
1914
+ when 'thaa', 'thaana'
1915
+ self.emit(type, :script_thaana, text, ts-1, te)
1916
+ when 'thai'
1917
+ self.emit(type, :script_thai, text, ts-1, te)
1918
+ when 'tibt', 'tibetan'
1919
+ self.emit(type, :script_tibetan, text, ts-1, te)
1920
+ when 'ugar', 'ugaritic'
1921
+ self.emit(type, :script_ugaritic, text, ts-1, te)
1922
+ when 'vaii', 'vai'
1923
+ self.emit(type, :script_vai, text, ts-1, te)
1924
+ when 'xpeo', 'oldpersian'
1925
+ self.emit(type, :script_old_persian, text, ts-1, te)
1926
+ when 'xsux', 'cuneiform'
1927
+ self.emit(type, :script_cuneiform, text, ts-1, te)
1928
+ when 'yiii', 'yi'
1929
+ self.emit(type, :script_yi, text, ts-1, te)
1930
+ when 'zinh', 'inherited', 'qaai'
1931
+ self.emit(type, :script_inherited, text, ts-1, te)
1932
+ when 'zyyy', 'common'
1933
+ self.emit(type, :script_common, text, ts-1, te)
1934
+ when 'zzzz', 'unknown'
1935
+ self.emit(type, :script_unknown, text, ts-1, te)
1936
+
1937
+ else
1938
+ raise UnknownUnicodePropertyError.new(name)
1939
+
1940
+ end
1941
+ begin
1942
+ top -= 1
1943
+ cs = stack[top]
1944
+ _goto_level = _again
1945
+ next
1946
+ end
1947
+
1948
+ end
1949
+ end
1950
+ # line 60 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1951
+ when 57 then
1952
+ # line 126 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1953
+ begin
1954
+ te = p+1
1955
+ begin
1956
+ set_type = set_depth > 1 ? :subset : :set
1957
+ set_depth -= 1; in_set = set_depth > 0 ? true : false
1958
+
1959
+ self.emit(set_type, :close, data[ts..te-1].pack('c*'), ts, te)
1960
+
1961
+ if set_depth == 0
1962
+ begin
1963
+ cs = 142
1964
+ _goto_level = _again
1965
+ next
1966
+ end
1967
+
1968
+ else
1969
+ begin
1970
+ top -= 1
1971
+ cs = stack[top]
1972
+ _goto_level = _again
1973
+ next
1974
+ end
1975
+
1976
+ end
1977
+ end
1978
+ end
1979
+ # line 126 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1980
+ when 61 then
1981
+ # line 139 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1982
+ begin
1983
+ te = p+1
1984
+ begin # special case, emits two tokens
1985
+ set_type = set_depth > 1 ? :subset : :set
1986
+ set_depth -= 1; in_set = set_depth > 0 ? true : false
1987
+
1988
+ self.emit(set_type, :member, data[ts..te-2].pack('c*'), ts, te)
1989
+ self.emit(set_type, :close, data[ts+1..te-1].pack('c*'), ts, te)
1990
+
1991
+ if set_depth == 0
1992
+ begin
1993
+ cs = 142
1994
+ _goto_level = _again
1995
+ next
1996
+ end
1997
+
1998
+ else
1999
+ begin
2000
+ top -= 1
2001
+ cs = stack[top]
2002
+ _goto_level = _again
2003
+ next
2004
+ end
2005
+
2006
+ end
2007
+ end
2008
+ end
2009
+ # line 139 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2010
+ when 58 then
2011
+ # line 153 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2012
+ begin
2013
+ te = p+1
2014
+ begin
2015
+ text = data[ts..te-1].pack('c*')
2016
+ if @tokens.last[1] == :open
2017
+ self.emit(set_type, :negate, text, ts, te)
2018
+ else
2019
+ self.emit(set_type, :member, text, ts, te)
2020
+ end
2021
+ end
2022
+ end
2023
+ # line 153 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2024
+ when 15 then
2025
+ # line 162 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2026
+ begin
2027
+ te = p+1
2028
+ begin
2029
+ self.emit(set_type, :range, data[ts..te-1].pack('c*'), ts, te)
2030
+ end
2031
+ end
2032
+ # line 162 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2033
+ when 60 then
2034
+ # line 166 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2035
+ begin
2036
+ te = p+1
2037
+ begin
2038
+ self.emit(set_type, :intersection, data[ts..te-1].pack('c*'), ts, te)
2039
+ end
2040
+ end
2041
+ # line 166 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2042
+ when 56 then
2043
+ # line 170 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2044
+ begin
2045
+ te = p+1
2046
+ begin
2047
+ begin
2048
+ stack[top] = cs
2049
+ top+= 1
2050
+ cs = 174
2051
+ _goto_level = _again
2052
+ next
2053
+ end
2054
+
2055
+ end
2056
+ end
2057
+ # line 170 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2058
+ when 19 then
2059
+ # line 182 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2060
+ begin
2061
+ te = p+1
2062
+ begin
2063
+ text = data[ts..te-1].pack('c*')
2064
+
2065
+ class_name = text[2..-3]
2066
+ if class_name[0].chr == '^'
2067
+ class_name = "non#{class_name[1..-1]}"
2068
+ end
2069
+
2070
+ token_sym = "class_#{class_name}".to_sym
2071
+ self.emit(set_type, token_sym, text, ts, te)
2072
+ end
2073
+ end
2074
+ # line 182 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2075
+ when 18 then
2076
+ # line 194 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2077
+ begin
2078
+ te = p+1
2079
+ begin
2080
+ self.emit(set_type, :collation, data[ts..te-1].pack('c*'), ts, te)
2081
+ end
2082
+ end
2083
+ # line 194 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2084
+ when 20 then
2085
+ # line 198 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2086
+ begin
2087
+ te = p+1
2088
+ begin
2089
+ self.emit(set_type, :equivalent, data[ts..te-1].pack('c*'), ts, te)
2090
+ end
2091
+ end
2092
+ # line 198 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2093
+ when 55 then
2094
+ # line 204 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2095
+ begin
2096
+ te = p+1
2097
+ begin
2098
+ self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2099
+ end
2100
+ end
2101
+ # line 204 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2102
+ when 54 then
2103
+ # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2104
+ begin
2105
+ te = p+1
2106
+ begin
2107
+ self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2108
+ end
2109
+ end
2110
+ # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2111
+ when 63 then
2112
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2113
+ begin
2114
+ te = p
2115
+ p = p - 1; begin
2116
+ set_depth += 1; in_set = true
2117
+ set_type = set_depth > 1 ? :subset : :set
2118
+
2119
+ self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
2120
+ begin
2121
+ stack[top] = cs
2122
+ top+= 1
2123
+ cs = 162
2124
+ _goto_level = _again
2125
+ next
2126
+ end
2127
+
2128
+ end
2129
+ end
2130
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2131
+ when 59 then
2132
+ # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2133
+ begin
2134
+ te = p
2135
+ p = p - 1; begin
2136
+ self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2137
+ end
2138
+ end
2139
+ # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2140
+ when 17 then
2141
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2142
+ begin
2143
+ begin p = ((te))-1; end
2144
+ begin
2145
+ set_depth += 1; in_set = true
2146
+ set_type = set_depth > 1 ? :subset : :set
2147
+
2148
+ self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
2149
+ begin
2150
+ stack[top] = cs
2151
+ top+= 1
2152
+ cs = 162
2153
+ _goto_level = _again
2154
+ next
2155
+ end
2156
+
2157
+ end
2158
+ end
2159
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2160
+ when 13 then
2161
+ # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2162
+ begin
2163
+ begin p = ((te))-1; end
2164
+ begin
2165
+ self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
2166
+ end
2167
+ end
2168
+ # line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2169
+ when 72 then
2170
+ # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2171
+ begin
2172
+ te = p+1
2173
+ begin
2174
+ self.emit(set_type, :range_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2175
+ begin
2176
+ top -= 1
2177
+ cs = stack[top]
2178
+ _goto_level = _again
2179
+ next
2180
+ end
2181
+
2182
+ end
2183
+ end
2184
+ # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2185
+ when 64 then
2186
+ # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2187
+ begin
2188
+ te = p+1
2189
+ begin
2190
+ self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2191
+ begin
2192
+ top -= 1
2193
+ cs = stack[top]
2194
+ _goto_level = _again
2195
+ next
2196
+ end
2197
+
2198
+ end
2199
+ end
2200
+ # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2201
+ when 67 then
2202
+ # line 254 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2203
+ begin
2204
+ te = p+1
2205
+ begin
2206
+ p = p - 1;
2207
+ cs = 162;
2208
+ begin
2209
+ stack[top] = cs
2210
+ top+= 1
2211
+ cs = 161
2212
+ _goto_level = _again
2213
+ next
2214
+ end
2215
+
2216
+ begin
2217
+ top -= 1
2218
+ cs = stack[top]
2219
+ _goto_level = _again
2220
+ next
2221
+ end
2222
+
2223
+ end
2224
+ end
2225
+ # line 254 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2226
+ when 71 then
2227
+ # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2228
+ begin
2229
+ te = p
2230
+ p = p - 1; begin
2231
+ self.emit(set_type, :range_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2232
+ begin
2233
+ top -= 1
2234
+ cs = stack[top]
2235
+ _goto_level = _again
2236
+ next
2237
+ end
2238
+
2239
+ end
2240
+ end
2241
+ # line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2242
+ when 70 then
2243
+ # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2244
+ begin
2245
+ te = p
2246
+ p = p - 1; begin
2247
+ self.emit(set_type, :member_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2248
+ begin
2249
+ top -= 1
2250
+ cs = stack[top]
2251
+ _goto_level = _again
2252
+ next
2253
+ end
2254
+
2255
+ end
2256
+ end
2257
+ # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2258
+ when 69 then
2259
+ # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2260
+ begin
2261
+ te = p
2262
+ p = p - 1; begin
2263
+ self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2264
+ begin
2265
+ top -= 1
2266
+ cs = stack[top]
2267
+ _goto_level = _again
2268
+ next
2269
+ end
2270
+
2271
+ end
2272
+ end
2273
+ # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2274
+ when 23 then
2275
+ # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2276
+ begin
2277
+ begin p = ((te))-1; end
2278
+ begin
2279
+ self.emit(set_type, :member_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2280
+ begin
2281
+ top -= 1
2282
+ cs = stack[top]
2283
+ _goto_level = _again
2284
+ next
2285
+ end
2286
+
2287
+ end
2288
+ end
2289
+ # line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2290
+ when 21 then
2291
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2292
+ begin
2293
+ case act
2294
+ when 0 then
2295
+ begin begin
2296
+ cs = 0
2297
+ _goto_level = _again
2298
+ next
2299
+ end
2300
+ end
2301
+ when 14 then
2302
+ begin begin p = ((te))-1; end
2303
+
2304
+ self.emit(set_type, :backspace, data[ts-1..te-1].pack('c*'), ts-1, te)
2305
+ begin
2306
+ top -= 1
2307
+ cs = stack[top]
2308
+ _goto_level = _again
2309
+ next
2310
+ end
2311
+
2312
+ end
2313
+ when 15 then
2314
+ begin begin p = ((te))-1; end
2315
+
2316
+ case text = data[ts-1..te-1].pack('c*')
2317
+ when '\d'; self.emit(set_type, :type_digit, text, ts-1, te)
2318
+ when '\D'; self.emit(set_type, :type_nondigit, text, ts-1, te)
2319
+ when '\h'; self.emit(set_type, :type_hex, text, ts-1, te)
2320
+ when '\H'; self.emit(set_type, :type_nonhex, text, ts-1, te)
2321
+ when '\s'; self.emit(set_type, :type_space, text, ts-1, te)
2322
+ when '\S'; self.emit(set_type, :type_nonspace, text, ts-1, te)
2323
+ when '\w'; self.emit(set_type, :type_word, text, ts-1, te)
2324
+ when '\W'; self.emit(set_type, :type_nonword, text, ts-1, te)
2325
+ end
2326
+ begin
2327
+ top -= 1
2328
+ cs = stack[top]
2329
+ _goto_level = _again
2330
+ next
2331
+ end
2332
+
2333
+ end
2334
+ when 18 then
2335
+ begin begin p = ((te))-1; end
2336
+
2337
+ self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2338
+ begin
2339
+ top -= 1
2340
+ cs = stack[top]
2341
+ _goto_level = _again
2342
+ next
2343
+ end
2344
+
2345
+ end
2346
+ when 20 then
2347
+ begin begin p = ((te))-1; end
2348
+
2349
+ self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
2350
+ begin
2351
+ top -= 1
2352
+ cs = stack[top]
2353
+ _goto_level = _again
2354
+ next
2355
+ end
2356
+
2357
+ end
2358
+ end
2359
+ end
2360
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2361
+ when 77 then
2362
+ # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2363
+ begin
2364
+ te = p+1
2365
+ begin
2366
+ text = data[ts-1..te-1].pack('c*')
2367
+ self.emit(:backref, :number, text, ts-1, te)
2368
+ begin
2369
+ top -= 1
2370
+ cs = stack[top]
2371
+ _goto_level = _again
2372
+ next
2373
+ end
2374
+
2375
+ end
2376
+ end
2377
+ # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2378
+ when 82 then
2379
+ # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2380
+ begin
2381
+ te = p+1
2382
+ begin
2383
+ self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
2384
+ begin
2385
+ top -= 1
2386
+ cs = stack[top]
2387
+ _goto_level = _again
2388
+ next
2389
+ end
2390
+
2391
+ end
2392
+ end
2393
+ # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2394
+ when 74 then
2395
+ # line 287 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2396
+ begin
2397
+ te = p+1
2398
+ begin
2399
+ case text = data[ts-1..te-1].pack('c*')
2400
+ when '\.'; self.emit(:escape, :dot, text, ts-1, te)
2401
+ when '\|'; self.emit(:escape, :alternation, text, ts-1, te)
2402
+ when '\^'; self.emit(:escape, :beginning_of_line, text, ts-1, te)
2403
+ when '\$'; self.emit(:escape, :end_of_line, text, ts-1, te)
2404
+ when '\?'; self.emit(:escape, :zero_or_one, text, ts-1, te)
2405
+ when '\*'; self.emit(:escape, :zero_or_more, text, ts-1, te)
2406
+ when '\+'; self.emit(:escape, :one_or_more, text, ts-1, te)
2407
+ when '\('; self.emit(:escape, :group_open, text, ts-1, te)
2408
+ when '\)'; self.emit(:escape, :group_close, text, ts-1, te)
2409
+ when '\{'; self.emit(:escape, :interval_open, text, ts-1, te)
2410
+ when '\}'; self.emit(:escape, :interval_close, text, ts-1, te)
2411
+ when '\['; self.emit(:escape, :set_open, text, ts-1, te)
2412
+ when '\]'; self.emit(:escape, :set_close, text, ts-1, te)
2413
+ when "\\\\";
2414
+ self.emit(:escape, :backslash, text, ts-1, te)
2415
+ end
2416
+ begin
2417
+ top -= 1
2418
+ cs = stack[top]
2419
+ _goto_level = _again
2420
+ next
2421
+ end
2422
+
2423
+ end
2424
+ end
2425
+ # line 287 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2426
+ when 79 then
2427
+ # line 308 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2428
+ begin
2429
+ te = p+1
2430
+ begin
2431
+ # \b is emitted as backspace only when inside a character set, otherwise
2432
+ # it is a word boundary anchor. A syntax might "normalize" it if needed.
2433
+ case text = data[ts-1..te-1].pack('c*')
2434
+ when '\a'; self.emit(:escape, :bell, text, ts-1, te)
2435
+ when '\e'; self.emit(:escape, :escape, text, ts-1, te)
2436
+ when '\f'; self.emit(:escape, :form_feed, text, ts-1, te)
2437
+ when '\n'; self.emit(:escape, :newline, text, ts-1, te)
2438
+ when '\r'; self.emit(:escape, :carriage, text, ts-1, te)
2439
+ when '\s'; self.emit(:escape, :space, text, ts-1, te)
2440
+ when '\t'; self.emit(:escape, :tab, text, ts-1, te)
2441
+ when '\v'; self.emit(:escape, :vertical_tab, text, ts-1, te)
2442
+ end
2443
+ begin
2444
+ top -= 1
2445
+ cs = stack[top]
2446
+ _goto_level = _again
2447
+ next
2448
+ end
2449
+
2450
+ end
2451
+ end
2452
+ # line 308 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2453
+ when 26 then
2454
+ # line 324 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2455
+ begin
2456
+ te = p+1
2457
+ begin
2458
+ text = data[ts-1..te-1].pack('c*')
2459
+ if text[2].chr == '{'
2460
+ self.emit(:escape, :codepoint_list, text, ts-1, te)
2461
+ else
2462
+ self.emit(:escape, :codepoint, text, ts-1, te)
2463
+ end
2464
+ begin
2465
+ top -= 1
2466
+ cs = stack[top]
2467
+ _goto_level = _again
2468
+ next
2469
+ end
2470
+
2471
+ end
2472
+ end
2473
+ # line 324 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2474
+ when 84 then
2475
+ # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2476
+ begin
2477
+ te = p+1
2478
+ begin
2479
+ self.emit(:escape, :hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2480
+ begin
2481
+ top -= 1
2482
+ cs = stack[top]
2483
+ _goto_level = _again
2484
+ next
2485
+ end
2486
+
2487
+ end
2488
+ end
2489
+ # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2490
+ when 27 then
2491
+ # line 339 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2492
+ begin
2493
+ te = p+1
2494
+ begin
2495
+ self.emit(:escape, :hex_wide, data[ts-1..te-1].pack('c*'), ts-1, te)
2496
+ begin
2497
+ top -= 1
2498
+ cs = stack[top]
2499
+ _goto_level = _again
2500
+ next
2501
+ end
2502
+
2503
+ end
2504
+ end
2505
+ # line 339 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2506
+ when 24 then
2507
+ # line 344 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2508
+ begin
2509
+ te = p+1
2510
+ begin
2511
+ self.emit(:escape, :control, data[ts-1..te-1].pack('c*'), ts-1, te)
2512
+ begin
2513
+ top -= 1
2514
+ cs = stack[top]
2515
+ _goto_level = _again
2516
+ next
2517
+ end
2518
+
2519
+ end
2520
+ end
2521
+ # line 344 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2522
+ when 25 then
2523
+ # line 349 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2524
+ begin
2525
+ te = p+1
2526
+ begin
2527
+ self.emit(:escape, :meta_sequence, data[ts-1..te-1].pack('c*'), ts-1, te)
2528
+ end
2529
+ end
2530
+ # line 349 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2531
+ when 78 then
2532
+ # line 353 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2533
+ begin
2534
+ te = p+1
2535
+ begin
2536
+ p = p - 1;
2537
+ cs = 142;
2538
+ begin
2539
+ stack[top] = cs
2540
+ top+= 1
2541
+ cs = 161
2542
+ _goto_level = _again
2543
+ next
2544
+ end
2545
+ begin
2546
+ top -= 1
2547
+ cs = stack[top]
2548
+ _goto_level = _again
2549
+ next
2550
+ end
2551
+
2552
+ end
2553
+ end
2554
+ # line 353 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2555
+ when 73 then
2556
+ # line 359 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2557
+ begin
2558
+ te = p+1
2559
+ begin
2560
+ self.emit(:escape, :literal, data[ts-1..te-1].pack('c*'), ts-1, te)
2561
+ begin
2562
+ top -= 1
2563
+ cs = stack[top]
2564
+ _goto_level = _again
2565
+ next
2566
+ end
2567
+
2568
+ end
2569
+ end
2570
+ # line 359 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2571
+ when 81 then
2572
+ # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2573
+ begin
2574
+ te = p
2575
+ p = p - 1; begin
2576
+ self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
2577
+ begin
2578
+ top -= 1
2579
+ cs = stack[top]
2580
+ _goto_level = _again
2581
+ next
2582
+ end
2583
+
2584
+ end
2585
+ end
2586
+ # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2587
+ when 83 then
2588
+ # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2589
+ begin
2590
+ te = p
2591
+ p = p - 1; begin
2592
+ self.emit(:escape, :hex, data[ts-1..te-1].pack('c*'), ts-1, te)
2593
+ begin
2594
+ top -= 1
2595
+ cs = stack[top]
2596
+ _goto_level = _again
2597
+ next
2598
+ end
2599
+
2600
+ end
2601
+ end
2602
+ # line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2603
+ when 80 then
2604
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2605
+ begin
2606
+ case act
2607
+ when 21 then
2608
+ begin begin p = ((te))-1; end
2609
+
2610
+ text = data[ts-1..te-1].pack('c*')
2611
+ self.emit(:backref, :number, text, ts-1, te)
2612
+ begin
2613
+ top -= 1
2614
+ cs = stack[top]
2615
+ _goto_level = _again
2616
+ next
2617
+ end
2618
+
2619
+ end
2620
+ when 22 then
2621
+ begin begin p = ((te))-1; end
2622
+
2623
+ self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
2624
+ begin
2625
+ top -= 1
2626
+ cs = stack[top]
2627
+ _goto_level = _again
2628
+ next
2629
+ end
2630
+
2631
+ end
2632
+ end
2633
+ end
2634
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2635
+ when 33 then
2636
+ # line 372 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2637
+ begin
2638
+ te = p+1
2639
+ begin
2640
+ self.emit(:meta, :dot, data[ts..te-1].pack('c*'), ts, te)
2641
+ end
2642
+ end
2643
+ # line 372 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2644
+ when 36 then
2645
+ # line 376 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2646
+ begin
2647
+ te = p+1
2648
+ begin
2649
+ self.emit(:meta, :alternation, data[ts..te-1].pack('c*'), ts, te)
2650
+ end
2651
+ end
2652
+ # line 376 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2653
+ when 35 then
2654
+ # line 382 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2655
+ begin
2656
+ te = p+1
2657
+ begin
2658
+ self.emit(:anchor, :beginning_of_line, data[ts..te-1].pack('c*'), ts, te)
2659
+ end
2660
+ end
2661
+ # line 382 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2662
+ when 30 then
2663
+ # line 386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2664
+ begin
2665
+ te = p+1
2666
+ begin
2667
+ self.emit(:anchor, :end_of_line, data[ts..te-1].pack('c*'), ts, te)
2668
+ end
2669
+ end
2670
+ # line 386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2671
+ when 49 then
2672
+ # line 390 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2673
+ begin
2674
+ te = p+1
2675
+ begin
2676
+ case text = data[ts..te-1].pack('c*')
2677
+ when '\\A'; self.emit(:anchor, :bos, text, ts, te)
2678
+ when '\\z'; self.emit(:anchor, :eos, text, ts, te)
2679
+ when '\\Z'; self.emit(:anchor, :eos_ob_eol, text, ts, te)
2680
+ when '\\b'; self.emit(:anchor, :word_boundary, text, ts, te)
2681
+ when '\\B'; self.emit(:anchor, :nonword_boundary, text, ts, te)
2682
+ when '\\G'; self.emit(:anchor, :match_start, text, ts, te)
2683
+ else raise ScannerError.new("Unsupported anchor at #{text} (char #{ts})")
2684
+ end
2685
+ end
2686
+ end
2687
+ # line 390 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2688
+ when 50 then
2689
+ # line 408 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2690
+ begin
2691
+ te = p+1
2692
+ begin
2693
+ case text = data[ts..te-1].pack('c*')
2694
+ when '\\d'; self.emit(:type, :digit, text, ts, te)
2695
+ when '\\D'; self.emit(:type, :nondigit, text, ts, te)
2696
+ when '\\h'; self.emit(:type, :hex, text, ts, te)
2697
+ when '\\H'; self.emit(:type, :nonhex, text, ts, te)
2698
+ when '\\s'; self.emit(:type, :space, text, ts, te)
2699
+ when '\\S'; self.emit(:type, :nonspace, text, ts, te)
2700
+ when '\\w'; self.emit(:type, :word, text, ts, te)
2701
+ when '\\W'; self.emit(:type, :nonword, text, ts, te)
2702
+ end
2703
+ end
2704
+ end
2705
+ # line 408 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2706
+ when 34 then
2707
+ # line 424 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2708
+ begin
2709
+ te = p+1
2710
+ begin
2711
+ set_depth += 1; in_set = true
2712
+ set_type = set_depth > 1 ? :subset : :set
2713
+
2714
+ self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
2715
+ begin
2716
+ stack[top] = cs
2717
+ top+= 1
2718
+ cs = 162
2719
+ _goto_level = _again
2720
+ next
2721
+ end
2722
+
2723
+ end
2724
+ end
2725
+ # line 424 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2726
+ when 41 then
2727
+ # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2728
+ begin
2729
+ te = p+1
2730
+ begin
2731
+ # special handling to resolve ambiguity with passive groups
2732
+ if data[te]
2733
+ c = data[te].chr
2734
+ if c == ':' # include the ':'
2735
+ self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
2736
+ p += 1
2737
+ elsif c == ')' # just options by themselves
2738
+ self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
2739
+ else
2740
+ raise ScannerError.new(
2741
+ "Unexpected '#{c}' in options sequence, ':' or ')' expected")
2742
+ end
2743
+ else
2744
+ raise PrematureEndError.new("options") unless data[te]
2745
+ end
2746
+ end
2747
+ end
2748
+ # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2749
+ when 7 then
2750
+ # line 473 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2751
+ begin
2752
+ te = p+1
2753
+ begin
2754
+ case text = data[ts..te-1].pack('c*')
2755
+ when '(?='; self.emit(:assertion, :lookahead, text, ts, te)
2756
+ when '(?!'; self.emit(:assertion, :nlookahead, text, ts, te)
2757
+ when '(?<='; self.emit(:assertion, :lookbehind, text, ts, te)
2758
+ when '(?<!'; self.emit(:assertion, :nlookbehind, text, ts, te)
2759
+ end
2760
+ end
2761
+ end
2762
+ # line 473 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2763
+ when 6 then
2764
+ # line 489 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2765
+ begin
2766
+ te = p+1
2767
+ begin
2768
+ case text = data[ts..te-1].pack('c*')
2769
+ when '(?:'; self.emit(:group, :passive, text, ts, te)
2770
+ when '(?>'; self.emit(:group, :atomic, text, ts, te)
2771
+
2772
+ when /\(\?<\w+>/
2773
+ self.emit(:group, :named_ab, text, ts, te)
2774
+ when /\(\?'\w+'/
2775
+ self.emit(:group, :named_sq, text, ts, te)
2776
+ end
2777
+ end
2778
+ end
2779
+ # line 489 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2780
+ when 9 then
2781
+ # line 513 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2782
+ begin
2783
+ te = p+1
2784
+ begin
2785
+ case text = data[ts..te-1].pack('c*')
2786
+ when /\\([gk])<[^\d-](\w+)?>/ # angle-brackets
2787
+ if $1 == 'k'
2788
+ self.emit(:backref, :name_ref_ab, text, ts, te)
2789
+ else
2790
+ self.emit(:backref, :name_call_ab, text, ts, te)
2791
+ end
2792
+
2793
+ when /\\([gk])'[^\d-](\w+)?'/ #single quotes
2794
+ if $1 == 'k'
2795
+ self.emit(:backref, :name_ref_sq, text, ts, te)
2796
+ else
2797
+ self.emit(:backref, :name_call_sq, text, ts, te)
2798
+ end
2799
+
2800
+ when /\\([gk])<\d+>/ # angle-brackets
2801
+ if $1 == 'k'
2802
+ self.emit(:backref, :number_ref_ab, text, ts, te)
2803
+ else
2804
+ self.emit(:backref, :number_call_ab, text, ts, te)
2805
+ end
2806
+
2807
+ when /\\([gk])'\d+'/ # single quotes
2808
+ if $1 == 'k'
2809
+ self.emit(:backref, :number_ref_sq, text, ts, te)
2810
+ else
2811
+ self.emit(:backref, :number_call_sq, text, ts, te)
2812
+ end
2813
+
2814
+ when /\\([gk])<-\d+>/ # angle-brackets
2815
+ if $1 == 'k'
2816
+ self.emit(:backref, :number_rel_ref_ab, text, ts, te)
2817
+ else
2818
+ self.emit(:backref, :number_rel_call_ab, text, ts, te)
2819
+ end
2820
+
2821
+ when /\\([gk])'-\d+'/ # single quotes
2822
+ if $1 == 'k'
2823
+ self.emit(:backref, :number_rel_ref_sq, text, ts, te)
2824
+ else
2825
+ self.emit(:backref, :number_rel_call_sq, text, ts, te)
2826
+ end
2827
+
2828
+ when /\\k<[^\d-](\w+)?[+\-]\d+>/ # angle-brackets
2829
+ self.emit(:backref, :name_nest_ref_ab, text, ts, te)
2830
+
2831
+ when /\\k'[^\d-](\w+)?[+\-]\d+'/ # single-quotes
2832
+ self.emit(:backref, :name_nest_ref_sq, text, ts, te)
2833
+
2834
+ when /\\([gk])<\d+[+\-]\d+>/ # angle-brackets
2835
+ self.emit(:backref, :number_nest_ref_ab, text, ts, te)
2836
+
2837
+ when /\\([gk])'\d+[+\-]\d+'/ # single-quotes
2838
+ self.emit(:backref, :number_nest_ref_sq, text, ts, te)
2839
+
2840
+ end
2841
+ end
2842
+ end
2843
+ # line 513 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2844
+ when 47 then
2845
+ # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2846
+ begin
2847
+ te = p+1
2848
+ begin
2849
+ case text = data[ts..te-1].pack('c*')
2850
+ when '?' ; self.emit(:quantifier, :zero_or_one, text, ts, te)
2851
+ when '??'; self.emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2852
+ when '?+'; self.emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2853
+ end
2854
+ end
2855
+ end
2856
+ # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2857
+ when 43 then
2858
+ # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2859
+ begin
2860
+ te = p+1
2861
+ begin
2862
+ case text = data[ts..te-1].pack('c*')
2863
+ when '*' ; self.emit(:quantifier, :zero_or_more, text, ts, te)
2864
+ when '*?'; self.emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2865
+ when '*+'; self.emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2866
+ end
2867
+ end
2868
+ end
2869
+ # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2870
+ when 45 then
2871
+ # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2872
+ begin
2873
+ te = p+1
2874
+ begin
2875
+ case text = data[ts..te-1].pack('c*')
2876
+ when '+' ; self.emit(:quantifier, :one_or_more, text, ts, te)
2877
+ when '+?'; self.emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2878
+ when '++'; self.emit(:quantifier, :one_or_more_possessive, text, ts, te)
2879
+ end
2880
+ end
2881
+ end
2882
+ # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2883
+ when 52 then
2884
+ # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2885
+ begin
2886
+ te = p+1
2887
+ begin
2888
+ self.emit(:quantifier, :interval, data[ts..te-1].pack('c*'), ts, te)
2889
+ end
2890
+ end
2891
+ # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2892
+ when 40 then
2893
+ # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2894
+ begin
2895
+ te = p
2896
+ p = p - 1; begin
2897
+ # special handling to resolve ambiguity with passive groups
2898
+ if data[te]
2899
+ c = data[te].chr
2900
+ if c == ':' # include the ':'
2901
+ self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
2902
+ p += 1
2903
+ elsif c == ')' # just options by themselves
2904
+ self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
2905
+ else
2906
+ raise ScannerError.new(
2907
+ "Unexpected '#{c}' in options sequence, ':' or ')' expected")
2908
+ end
2909
+ else
2910
+ raise PrematureEndError.new("options") unless data[te]
2911
+ end
2912
+ end
2913
+ end
2914
+ # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2915
+ when 38 then
2916
+ # line 501 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2917
+ begin
2918
+ te = p
2919
+ p = p - 1; begin
2920
+ text = data[ts..te-1].pack('c*')
2921
+ self.emit(:group, :capture, text, ts, te)
2922
+ end
2923
+ end
2924
+ # line 501 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2925
+ when 46 then
2926
+ # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2927
+ begin
2928
+ te = p
2929
+ p = p - 1; begin
2930
+ case text = data[ts..te-1].pack('c*')
2931
+ when '?' ; self.emit(:quantifier, :zero_or_one, text, ts, te)
2932
+ when '??'; self.emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2933
+ when '?+'; self.emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2934
+ end
2935
+ end
2936
+ end
2937
+ # line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2938
+ when 42 then
2939
+ # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2940
+ begin
2941
+ te = p
2942
+ p = p - 1; begin
2943
+ case text = data[ts..te-1].pack('c*')
2944
+ when '*' ; self.emit(:quantifier, :zero_or_more, text, ts, te)
2945
+ when '*?'; self.emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2946
+ when '*+'; self.emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2947
+ end
2948
+ end
2949
+ end
2950
+ # line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2951
+ when 44 then
2952
+ # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2953
+ begin
2954
+ te = p
2955
+ p = p - 1; begin
2956
+ case text = data[ts..te-1].pack('c*')
2957
+ when '+' ; self.emit(:quantifier, :one_or_more, text, ts, te)
2958
+ when '+?'; self.emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2959
+ when '++'; self.emit(:quantifier, :one_or_more_possessive, text, ts, te)
2960
+ end
2961
+ end
2962
+ end
2963
+ # line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2964
+ when 51 then
2965
+ # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2966
+ begin
2967
+ te = p
2968
+ p = p - 1; begin
2969
+ self.emit(:quantifier, :interval, data[ts..te-1].pack('c*'), ts, te)
2970
+ end
2971
+ end
2972
+ # line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2973
+ when 48 then
2974
+ # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2975
+ begin
2976
+ te = p
2977
+ p = p - 1; begin
2978
+ begin
2979
+ stack[top] = cs
2980
+ top+= 1
2981
+ cs = 184
2982
+ _goto_level = _again
2983
+ next
2984
+ end
2985
+
2986
+ end
2987
+ end
2988
+ # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2989
+ when 37 then
2990
+ # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2991
+ begin
2992
+ te = p
2993
+ p = p - 1; begin
2994
+ self.append_literal(data, ts, te)
2995
+ end
2996
+ end
2997
+ # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2998
+ when 3 then
2999
+ # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3000
+ begin
3001
+ begin p = ((te))-1; end
3002
+ begin
3003
+ # special handling to resolve ambiguity with passive groups
3004
+ if data[te]
3005
+ c = data[te].chr
3006
+ if c == ':' # include the ':'
3007
+ self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
3008
+ p += 1
3009
+ elsif c == ')' # just options by themselves
3010
+ self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
3011
+ else
3012
+ raise ScannerError.new(
3013
+ "Unexpected '#{c}' in options sequence, ':' or ')' expected")
3014
+ end
3015
+ else
3016
+ raise PrematureEndError.new("options") unless data[te]
3017
+ end
3018
+ end
3019
+ end
3020
+ # line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3021
+ when 8 then
3022
+ # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3023
+ begin
3024
+ begin p = ((te))-1; end
3025
+ begin
3026
+ begin
3027
+ stack[top] = cs
3028
+ top+= 1
3029
+ cs = 184
3030
+ _goto_level = _again
3031
+ next
3032
+ end
3033
+
3034
+ end
3035
+ end
3036
+ # line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3037
+ when 1 then
3038
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3039
+ begin
3040
+ case act
3041
+ when 0 then
3042
+ begin begin
3043
+ cs = 0
3044
+ _goto_level = _again
3045
+ next
3046
+ end
3047
+ end
3048
+ when 51 then
3049
+ begin begin p = ((te))-1; end
3050
+
3051
+ self.append_literal(data, ts, te)
3052
+ end
3053
+ end
3054
+ end
3055
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3056
+ when 62 then
3057
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3058
+ begin
3059
+ raise PrematureEndError end
3060
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3061
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3062
+ begin
3063
+ te = p
3064
+ p = p - 1; begin
3065
+ set_depth += 1; in_set = true
3066
+ set_type = set_depth > 1 ? :subset : :set
3067
+
3068
+ self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
3069
+ begin
3070
+ stack[top] = cs
3071
+ top+= 1
3072
+ cs = 162
3073
+ _goto_level = _again
3074
+ next
3075
+ end
3076
+
3077
+ end
3078
+ end
3079
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3080
+ when 16 then
3081
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3082
+ begin
3083
+ raise PrematureEndError end
3084
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3085
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3086
+ begin
3087
+ begin p = ((te))-1; end
3088
+ begin
3089
+ set_depth += 1; in_set = true
3090
+ set_type = set_depth > 1 ? :subset : :set
3091
+
3092
+ self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
3093
+ begin
3094
+ stack[top] = cs
3095
+ top+= 1
3096
+ cs = 162
3097
+ _goto_level = _again
3098
+ next
3099
+ end
3100
+
3101
+ end
3102
+ end
3103
+ # line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3104
+ when 5 then
3105
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3106
+ begin
3107
+ group_depth -= 1; in_group = group_depth > 0 ? true : false end
3108
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3109
+ # line 437 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3110
+ begin
3111
+ te = p+1
3112
+ begin
3113
+ self.emit(:group, :comment, data[ts..te-1].pack('c*'), ts, te)
3114
+ end
3115
+ end
3116
+ # line 437 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3117
+ when 32 then
3118
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3119
+ begin
3120
+ group_depth -= 1; in_group = group_depth > 0 ? true : false end
3121
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3122
+ # line 506 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3123
+ begin
3124
+ te = p+1
3125
+ begin
3126
+ self.emit(:group, :close, data[ts..te-1].pack('c*'), ts, te)
3127
+ end
3128
+ end
3129
+ # line 506 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3130
+ when 68 then
3131
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3132
+ begin
3133
+ te = p+1
3134
+ end
3135
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3136
+ # line 220 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3137
+ begin
3138
+ act = 14; end
3139
+ # line 220 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3140
+ when 66 then
3141
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3142
+ begin
3143
+ te = p+1
3144
+ end
3145
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3146
+ # line 225 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3147
+ begin
3148
+ act = 15; end
3149
+ # line 225 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3150
+ when 65 then
3151
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3152
+ begin
3153
+ te = p+1
3154
+ end
3155
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3156
+ # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3157
+ begin
3158
+ act = 18; end
3159
+ # line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3160
+ when 22 then
3161
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3162
+ begin
3163
+ te = p+1
3164
+ end
3165
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3166
+ # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3167
+ begin
3168
+ act = 20; end
3169
+ # line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3170
+ when 76 then
3171
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3172
+ begin
3173
+ te = p+1
3174
+ end
3175
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3176
+ # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3177
+ begin
3178
+ act = 21; end
3179
+ # line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3180
+ when 75 then
3181
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3182
+ begin
3183
+ te = p+1
3184
+ end
3185
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3186
+ # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3187
+ begin
3188
+ act = 22; end
3189
+ # line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3190
+ when 2 then
3191
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3192
+ begin
3193
+ te = p+1
3194
+ end
3195
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3196
+ # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3197
+ begin
3198
+ act = 51; end
3199
+ # line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3200
+ when 39 then
3201
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3202
+ begin
3203
+ te = p+1
3204
+ end
3205
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3206
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3207
+ begin
3208
+ group_depth -= 1; in_group = group_depth > 0 ? true : false end
3209
+ # line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3210
+ # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3211
+ begin
3212
+ group_depth += 1; in_group = true end
3213
+ # line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3214
+ # line 3215 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
3215
+ end
3216
+ end
3217
+ end
3218
+ if _goto_level <= _again
3219
+ case _re_scanner_to_state_actions[cs]
3220
+ when 53 then
3221
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3222
+ begin
3223
+ ts = nil; end
3224
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3225
+ when 28 then
3226
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3227
+ begin
3228
+ ts = nil; end
3229
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3230
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3231
+ begin
3232
+ act = 0
3233
+ end
3234
+ # line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3235
+ # line 3236 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
3236
+ end
3237
+
3238
+ if cs == 0
3239
+ _goto_level = _out
3240
+ next
3241
+ end
3242
+ p += 1
3243
+ if p != pe
3244
+ _goto_level = _resume
3245
+ next
3246
+ end
3247
+ end
3248
+ if _goto_level <= _test_eof
3249
+ if p == eof
3250
+ if _re_scanner_eof_trans[cs] > 0
3251
+ _trans = _re_scanner_eof_trans[cs] - 1;
3252
+ _goto_level = _eof_trans
3253
+ next;
3254
+ end
3255
+ case _re_scanner_eof_actions[cs]
3256
+ when 11 then
3257
+ # line 52 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3258
+ begin
3259
+
3260
+ raise PrematureEndError.new('unicode property')
3261
+ end
3262
+ # line 52 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3263
+ when 10 then
3264
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3265
+ begin
3266
+ raise PrematureEndError end
3267
+ # line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3268
+ # line 3269 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
3269
+ end
3270
+ end
3271
+
3272
+ end
3273
+ if _goto_level <= _out
3274
+ break
3275
+ end
3276
+ end
3277
+ end
3278
+
3279
+ # line 667 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
3280
+
3281
+ raise PrematureEndError.new("(missing group closing paranthesis) "+
3282
+ "[#{in_group}:#{group_depth}]") if in_group
3283
+ raise PrematureEndError.new("(missing set closing bracket) "+
3284
+ "[#{in_set}:#{set_depth}]") if in_set
3285
+
3286
+ # when the entire expression is a literal run
3287
+ self.emit_literal if @literal
3288
+
3289
+ @tokens
3290
+ end
3291
+
3292
+ # appends one or more characters to the literal buffer, to be emitted later
3293
+ # by a call to emit_literal. contents a mix of ASCII and UTF-8
3294
+ def self.append_literal(data, ts, te)
3295
+ @literal ||= []
3296
+ @literal << [data[ts..te-1].pack('c*'), ts, te]
3297
+ end
3298
+
3299
+ # emits the collected literal run collected by one or more calls to the
3300
+ # append_literal method
3301
+ def self.emit_literal
3302
+ ts, te = @literal.first[1], @literal.last[2]
3303
+ text = @literal.map {|t| t[0]}.join
3304
+
3305
+ text.force_encoding('utf-8') if text.respond_to?(:force_encoding)
3306
+
3307
+ self.emit(:literal, :literal, text, ts, te)
3308
+ @literal = nil
3309
+ end
3310
+
3311
+ def self.emit(type, token, text, ts, te)
3312
+ #puts " > emit: #{type}:#{token} '#{text}' [#{ts}..#{te}]"
3313
+
3314
+ if @literal and type != :literal
3315
+ self.emit_literal
3316
+ end
3317
+
3318
+ if @block
3319
+ @block.call type, token, text, ts, te
3320
+ end
3321
+
3322
+ @tokens << [type, token, text, ts, te]
3323
+ end
3324
+
3325
+ end # module Regexp::Scanner