regexp_parser 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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