machete 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ require 'racc/parser.rb'
8
8
  module Machete
9
9
  class Parser < Racc::Parser
10
10
 
11
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 87)
11
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 102)
12
12
 
13
13
  include Matchers
14
14
 
@@ -23,7 +23,65 @@ end
23
23
 
24
24
  private
25
25
 
26
- SIMPLE_TOKENS = ["|", "<", ">", ",", "="]
26
+ def integer_value(value)
27
+ if value =~ /^0[bB]/
28
+ value[2..-1].to_i(2)
29
+ elsif value =~ /^0[oO]/
30
+ value[2..-1].to_i(8)
31
+ elsif value =~ /^0[dD]/
32
+ value[2..-1].to_i(10)
33
+ elsif value =~ /^0[xX]/
34
+ value[2..-1].to_i(16)
35
+ elsif value =~ /^0/
36
+ value[1..-1].to_i(8)
37
+ else
38
+ value.to_i
39
+ end
40
+ end
41
+
42
+ def string_value(value)
43
+ quote = value[0..0]
44
+ if quote == "'"
45
+ value[1..-2].gsub("\\\\", "\\").gsub("\\'", "'")
46
+ elsif quote == '"'
47
+ value[1..-2].
48
+ gsub("\\\\", "\\").
49
+ gsub('\\"', '"').
50
+ gsub("\\n", "\n").
51
+ gsub("\\t", "\t").
52
+ gsub("\\r", "\r").
53
+ gsub("\\f", "\f").
54
+ gsub("\\v", "\v").
55
+ gsub("\\a", "\a").
56
+ gsub("\\e", "\e").
57
+ gsub("\\b", "\b").
58
+ gsub("\\s", "\s").
59
+ gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }.
60
+ gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr }
61
+ else
62
+ raise "Unknown quote: #{quote.inspect}."
63
+ end
64
+ end
65
+
66
+ # "^" needs to be here because if it were among operators recognized by
67
+ # METHOD_NAME, "^=" would be recognized as two tokens.
68
+ SIMPLE_TOKENS = [
69
+ "|",
70
+ "<",
71
+ ">",
72
+ ",",
73
+ "=",
74
+ "^=",
75
+ "^",
76
+ "$=",
77
+ "[",
78
+ "]",
79
+ "*",
80
+ "+",
81
+ "?",
82
+ "{",
83
+ "}"
84
+ ]
27
85
 
28
86
  COMPLEX_TOKENS = [
29
87
  # INTEGER needs to be before METHOD_NAME, otherwise e.g. "+1" would be
@@ -76,9 +134,14 @@ COMPLEX_TOKENS = [
76
134
  )
77
135
  /x
78
136
  ],
79
- # We exclude "<", ">" and "|" from method names since they are lexed as simple
80
- # tokens. This is because they have also other meanings in Machette patterns
81
- # beside Ruby method names.
137
+ # ANY, EVEN and ODD need to be before METHOD_NAME, otherwise they would be
138
+ # recognized as method names.
139
+ [:ANY, /^any/],
140
+ [:EVEN, /^even/],
141
+ [:ODD, /^odd/],
142
+ # We exclude "*", "+", "<", ">", "^" and "|" from method names since they are
143
+ # lexed as simple tokens. This is because they have also other meanings in
144
+ # Machette patterns beside Ruby method names.
82
145
  [
83
146
  :METHOD_NAME,
84
147
  /^
@@ -87,7 +150,7 @@ COMPLEX_TOKENS = [
87
150
  [a-z_][a-zA-Z0-9_]*[?!=]?
88
151
  |
89
152
  # operator (sorted by length, then alphabetically)
90
- (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&*+\-\/^`~])
153
+ (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&\-\/`~])
91
154
  )
92
155
  /x
93
156
  ],
@@ -152,79 +215,147 @@ end
152
215
  ##### State transition tables begin ###
153
216
 
154
217
  racc_action_table = [
155
- 10, 21, 22, 14, 9, 19, 14, 11, 16, 17,
156
- 18, 16, 17, 18, 2, 3, 4, 5, 2, 3,
157
- 4, 5, 2, 3, 4, 5, 23, 11 ]
218
+ 61, 1, 2, 4, 18, 19, 58, 5, 6, 1,
219
+ 2, 4, 22, 23, 19, 5, 6, 25, 26, 3,
220
+ 47, 48, 62, 1, 2, 4, 20, 3, 21, 5,
221
+ 6, 1, 2, 4, 60, 55, 43, 5, 6, 44,
222
+ 45, 3, 64, 17, 1, 2, 4, 46, 63, 3,
223
+ 5, 6, 33, 34, 35, 36, 54, 19, 37, 38,
224
+ 39, 53, 3, 40, 56, 29, 31, 32, 33, 34,
225
+ 35, 36, 52, nil, 37, 38, 39, 50, 51, 49,
226
+ nil, 29, 31, 32 ]
158
227
 
159
228
  racc_action_check = [
160
- 6, 12, 12, 9, 2, 10, 22, 6, 9, 9,
161
- 9, 22, 22, 22, 0, 0, 0, 0, 11, 11,
162
- 11, 11, 23, 23, 23, 23, 15, 25 ]
229
+ 53, 21, 21, 21, 7, 16, 49, 21, 21, 0,
230
+ 0, 0, 16, 16, 7, 0, 0, 16, 16, 21,
231
+ 27, 27, 53, 50, 50, 50, 13, 0, 14, 50,
232
+ 50, 3, 3, 3, 51, 45, 26, 3, 3, 26,
233
+ 26, 50, 61, 5, 19, 19, 19, 26, 56, 3,
234
+ 19, 19, 17, 17, 17, 17, 44, 59, 17, 17,
235
+ 17, 43, 19, 18, 46, 17, 17, 17, 48, 48,
236
+ 48, 48, 43, nil, 48, 48, 48, 30, 30, 30,
237
+ nil, 48, 48, 48 ]
163
238
 
164
239
  racc_action_pointer = [
165
- 11, nil, -4, nil, nil, nil, 0, nil, nil, 1,
166
- 5, 15, -8, nil, nil, 15, nil, nil, nil, nil,
167
- nil, nil, 4, 19, nil, 20 ]
240
+ 7, nil, nil, 29, nil, 32, nil, 4, nil, nil,
241
+ nil, nil, nil, 5, 15, nil, -5, 48, 63, 42,
242
+ nil, -1, nil, nil, nil, nil, 34, 8, nil, nil,
243
+ 63, nil, nil, nil, nil, nil, nil, nil, nil, nil,
244
+ nil, nil, nil, 48, 32, 11, 62, nil, 64, 3,
245
+ 21, 31, nil, -2, nil, nil, 24, nil, nil, 47,
246
+ nil, 18, nil, nil, nil ]
168
247
 
169
248
  racc_action_default = [
170
- -17, -4, -5, -14, -15, -16, -17, -1, -3, -17,
171
- -17, -17, -17, -7, -10, -17, -13, -11, -12, 26,
172
- -2, -6, -17, -17, -8, -9 ]
249
+ -44, -41, -42, -25, -43, -7, -40, -44, -1, -3,
250
+ -4, -5, -6, -44, -26, -27, -29, -44, -44, -44,
251
+ -24, -44, -31, -32, -30, -33, -44, -44, -9, -18,
252
+ -44, -19, -22, -15, -16, -17, -14, -23, -20, -21,
253
+ 65, -2, -28, -44, -44, -44, -44, -8, -44, -44,
254
+ -44, -44, -34, -44, -38, -39, -44, -10, -13, -11,
255
+ -12, -44, -35, -36, -37 ]
173
256
 
174
257
  racc_goto_table = [
175
- 6, 13, 20, 12, nil, nil, nil, nil, nil, nil,
176
- nil, nil, nil, nil, 24, nil, nil, nil, nil, nil,
177
- nil, nil, nil, 25 ]
258
+ 7, 28, 15, 41, 27, 13, 14, 24, nil, nil,
259
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
260
+ 42, nil, nil, nil, nil, nil, nil, nil, nil, nil,
261
+ nil, nil, 57, nil, nil, nil, nil, nil, nil, nil,
262
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
263
+ 59 ]
178
264
 
179
265
  racc_goto_check = [
180
- 1, 6, 2, 5, nil, nil, nil, nil, nil, nil,
181
- nil, nil, nil, nil, 6, nil, nil, nil, nil, nil,
182
- nil, nil, nil, 1 ]
266
+ 1, 8, 12, 2, 7, 10, 11, 13, nil, nil,
267
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
268
+ 12, nil, nil, nil, nil, nil, nil, nil, nil, nil,
269
+ nil, nil, 8, nil, nil, nil, nil, nil, nil, nil,
270
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
271
+ 1 ]
183
272
 
184
273
  racc_goto_pointer = [
185
- nil, 0, -9, nil, nil, -6, -8, nil ]
274
+ nil, 0, -16, nil, nil, nil, nil, -13, -16, nil,
275
+ 2, 3, -1, -9 ]
186
276
 
187
277
  racc_goto_default = [
188
- nil, nil, 7, 8, 1, nil, nil, 15 ]
278
+ nil, 16, 8, 9, 10, 11, 12, nil, nil, 30,
279
+ nil, nil, nil, nil ]
189
280
 
190
281
  racc_reduce_table = [
191
282
  0, 0, :racc_error,
192
- 1, 13, :_reduce_none,
193
- 3, 13, :_reduce_2,
194
- 1, 14, :_reduce_none,
195
- 1, 14, :_reduce_none,
196
- 1, 15, :_reduce_5,
197
- 4, 15, :_reduce_6,
198
- 1, 17, :_reduce_none,
199
- 3, 17, :_reduce_8,
200
- 3, 18, :_reduce_9,
201
- 1, 19, :_reduce_none,
202
- 1, 19, :_reduce_none,
203
- 1, 19, :_reduce_none,
204
- 1, 19, :_reduce_none,
205
- 1, 16, :_reduce_14,
206
- 1, 16, :_reduce_15,
207
- 1, 16, :_reduce_16 ]
208
-
209
- racc_reduce_n = 17
210
-
211
- racc_shift_n = 26
283
+ 1, 26, :_reduce_none,
284
+ 3, 26, :_reduce_2,
285
+ 1, 27, :_reduce_none,
286
+ 1, 27, :_reduce_none,
287
+ 1, 27, :_reduce_none,
288
+ 1, 27, :_reduce_none,
289
+ 1, 28, :_reduce_7,
290
+ 4, 28, :_reduce_8,
291
+ 1, 32, :_reduce_none,
292
+ 3, 32, :_reduce_10,
293
+ 3, 33, :_reduce_11,
294
+ 3, 33, :_reduce_12,
295
+ 3, 33, :_reduce_13,
296
+ 1, 34, :_reduce_none,
297
+ 1, 34, :_reduce_none,
298
+ 1, 34, :_reduce_none,
299
+ 1, 34, :_reduce_none,
300
+ 1, 34, :_reduce_none,
301
+ 1, 34, :_reduce_none,
302
+ 1, 34, :_reduce_none,
303
+ 1, 34, :_reduce_none,
304
+ 1, 34, :_reduce_none,
305
+ 1, 34, :_reduce_none,
306
+ 3, 29, :_reduce_24,
307
+ 0, 35, :_reduce_25,
308
+ 1, 35, :_reduce_none,
309
+ 1, 36, :_reduce_27,
310
+ 3, 36, :_reduce_28,
311
+ 1, 37, :_reduce_none,
312
+ 2, 37, :_reduce_30,
313
+ 1, 38, :_reduce_31,
314
+ 1, 38, :_reduce_32,
315
+ 1, 38, :_reduce_33,
316
+ 3, 38, :_reduce_34,
317
+ 4, 38, :_reduce_35,
318
+ 4, 38, :_reduce_36,
319
+ 5, 38, :_reduce_37,
320
+ 3, 38, :_reduce_38,
321
+ 3, 38, :_reduce_39,
322
+ 1, 30, :_reduce_40,
323
+ 1, 30, :_reduce_41,
324
+ 1, 30, :_reduce_42,
325
+ 1, 31, :_reduce_43 ]
326
+
327
+ racc_reduce_n = 44
328
+
329
+ racc_shift_n = 65
212
330
 
213
331
  racc_token_table = {
214
332
  false => 0,
215
333
  :error => 1,
216
- :METHOD_NAME => 2,
217
- :CLASS_NAME => 3,
218
- :SYMBOL => 4,
219
- :INTEGER => 5,
220
- :STRING => 6,
221
- "|" => 7,
222
- "<" => 8,
223
- ">" => 9,
224
- "," => 10,
225
- "=" => 11 }
226
-
227
- racc_nt_base = 12
334
+ :INTEGER => 2,
335
+ :STRING => 3,
336
+ :ANY => 4,
337
+ :EVEN => 5,
338
+ :ODD => 6,
339
+ :METHOD_NAME => 7,
340
+ :CLASS_NAME => 8,
341
+ :SYMBOL => 9,
342
+ "|" => 10,
343
+ "<" => 11,
344
+ ">" => 12,
345
+ "," => 13,
346
+ "=" => 14,
347
+ "^=" => 15,
348
+ "$=" => 16,
349
+ "*" => 17,
350
+ "+" => 18,
351
+ "^" => 19,
352
+ "[" => 20,
353
+ "]" => 21,
354
+ "?" => 22,
355
+ "{" => 23,
356
+ "}" => 24 }
357
+
358
+ racc_nt_base = 25
228
359
 
229
360
  racc_use_result_var = true
230
361
 
@@ -247,24 +378,43 @@ Racc_arg = [
247
378
  Racc_token_to_s_table = [
248
379
  "$end",
249
380
  "error",
381
+ "INTEGER",
382
+ "STRING",
383
+ "ANY",
384
+ "EVEN",
385
+ "ODD",
250
386
  "METHOD_NAME",
251
387
  "CLASS_NAME",
252
388
  "SYMBOL",
253
- "INTEGER",
254
- "STRING",
255
389
  "\"|\"",
256
390
  "\"<\"",
257
391
  "\">\"",
258
392
  "\",\"",
259
393
  "\"=\"",
394
+ "\"^=\"",
395
+ "\"$=\"",
396
+ "\"*\"",
397
+ "\"+\"",
398
+ "\"^\"",
399
+ "\"[\"",
400
+ "\"]\"",
401
+ "\"?\"",
402
+ "\"{\"",
403
+ "\"}\"",
260
404
  "$start",
261
405
  "expression",
262
406
  "primary",
263
407
  "node",
408
+ "array",
264
409
  "literal",
410
+ "any",
265
411
  "attrs",
266
412
  "attr",
267
- "method_name" ]
413
+ "method_name",
414
+ "items_opt",
415
+ "items",
416
+ "item",
417
+ "quantifier" ]
268
418
 
269
419
  Racc_debug_parser = false
270
420
 
@@ -274,7 +424,7 @@ Racc_debug_parser = false
274
424
 
275
425
  # reduce 1 omitted
276
426
 
277
- module_eval(<<'.,.,', 'parser.y', 14)
427
+ module_eval(<<'.,.,', 'parser.y', 17)
278
428
  def _reduce_2(val, _values, result)
279
429
  result = if val[0].is_a?(ChoiceMatcher)
280
430
  ChoiceMatcher.new(val[0].alternatives << val[2])
@@ -290,99 +440,212 @@ module_eval(<<'.,.,', 'parser.y', 14)
290
440
 
291
441
  # reduce 4 omitted
292
442
 
293
- module_eval(<<'.,.,', 'parser.y', 25)
294
- def _reduce_5(val, _values, result)
443
+ # reduce 5 omitted
444
+
445
+ # reduce 6 omitted
446
+
447
+ module_eval(<<'.,.,', 'parser.y', 30)
448
+ def _reduce_7(val, _values, result)
295
449
  result = NodeMatcher.new(val[0].to_sym)
296
450
 
297
451
  result
298
452
  end
299
453
  .,.,
300
454
 
301
- module_eval(<<'.,.,', 'parser.y', 28)
302
- def _reduce_6(val, _values, result)
455
+ module_eval(<<'.,.,', 'parser.y', 33)
456
+ def _reduce_8(val, _values, result)
303
457
  result = NodeMatcher.new(val[0].to_sym, val[2])
304
458
 
305
459
  result
306
460
  end
307
461
  .,.,
308
462
 
309
- # reduce 7 omitted
463
+ # reduce 9 omitted
310
464
 
311
- module_eval(<<'.,.,', 'parser.y', 32)
312
- def _reduce_8(val, _values, result)
465
+ module_eval(<<'.,.,', 'parser.y', 37)
466
+ def _reduce_10(val, _values, result)
313
467
  result = val[0].merge(val[2])
314
468
  result
315
469
  end
316
470
  .,.,
317
471
 
318
- module_eval(<<'.,.,', 'parser.y', 34)
319
- def _reduce_9(val, _values, result)
472
+ module_eval(<<'.,.,', 'parser.y', 39)
473
+ def _reduce_11(val, _values, result)
320
474
  result = { val[0].to_sym => val[2] }
321
475
  result
322
476
  end
323
477
  .,.,
324
478
 
325
- # reduce 10 omitted
479
+ module_eval(<<'.,.,', 'parser.y', 41)
480
+ def _reduce_12(val, _values, result)
481
+ result = {
482
+ val[0].to_sym => StartsWithMatcher.new(string_value(val[2]))
483
+ }
484
+
485
+ result
486
+ end
487
+ .,.,
488
+
489
+ module_eval(<<'.,.,', 'parser.y', 46)
490
+ def _reduce_13(val, _values, result)
491
+ result = {
492
+ val[0].to_sym => EndsWithMatcher.new(string_value(val[2]))
493
+ }
494
+
495
+ result
496
+ end
497
+ .,.,
326
498
 
327
- # reduce 11 omitted
499
+ # reduce 14 omitted
328
500
 
329
- # reduce 12 omitted
501
+ # reduce 15 omitted
330
502
 
331
- # reduce 13 omitted
503
+ # reduce 16 omitted
332
504
 
333
- module_eval(<<'.,.,', 'parser.y', 43)
334
- def _reduce_14(val, _values, result)
505
+ # reduce 17 omitted
506
+
507
+ # reduce 18 omitted
508
+
509
+ # reduce 19 omitted
510
+
511
+ # reduce 20 omitted
512
+
513
+ # reduce 21 omitted
514
+
515
+ # reduce 22 omitted
516
+
517
+ # reduce 23 omitted
518
+
519
+ module_eval(<<'.,.,', 'parser.y', 65)
520
+ def _reduce_24(val, _values, result)
521
+ result = ArrayMatcher.new(val[1])
522
+ result
523
+ end
524
+ .,.,
525
+
526
+ module_eval(<<'.,.,', 'parser.y', 67)
527
+ def _reduce_25(val, _values, result)
528
+ result = []
529
+ result
530
+ end
531
+ .,.,
532
+
533
+ # reduce 26 omitted
534
+
535
+ module_eval(<<'.,.,', 'parser.y', 70)
536
+ def _reduce_27(val, _values, result)
537
+ result = [val[0]]
538
+ result
539
+ end
540
+ .,.,
541
+
542
+ module_eval(<<'.,.,', 'parser.y', 71)
543
+ def _reduce_28(val, _values, result)
544
+ result = val[0] << val[2]
545
+ result
546
+ end
547
+ .,.,
548
+
549
+ # reduce 29 omitted
550
+
551
+ module_eval(<<'.,.,', 'parser.y', 74)
552
+ def _reduce_30(val, _values, result)
553
+ result = Quantifier.new(val[0], *val[1])
554
+ result
555
+ end
556
+ .,.,
557
+
558
+ module_eval(<<'.,.,', 'parser.y', 76)
559
+ def _reduce_31(val, _values, result)
560
+ result = [0, nil, 1]
561
+ result
562
+ end
563
+ .,.,
564
+
565
+ module_eval(<<'.,.,', 'parser.y', 77)
566
+ def _reduce_32(val, _values, result)
567
+ result = [1, nil, 1]
568
+ result
569
+ end
570
+ .,.,
571
+
572
+ module_eval(<<'.,.,', 'parser.y', 78)
573
+ def _reduce_33(val, _values, result)
574
+ result = [0, 1, 1]
575
+ result
576
+ end
577
+ .,.,
578
+
579
+ module_eval(<<'.,.,', 'parser.y', 80)
580
+ def _reduce_34(val, _values, result)
581
+ result = [integer_value(val[1]), integer_value(val[1]), 1]
582
+
583
+ result
584
+ end
585
+ .,.,
586
+
587
+ module_eval(<<'.,.,', 'parser.y', 83)
588
+ def _reduce_35(val, _values, result)
589
+ result = [integer_value(val[1]), nil, 1]
590
+
591
+ result
592
+ end
593
+ .,.,
594
+
595
+ module_eval(<<'.,.,', 'parser.y', 86)
596
+ def _reduce_36(val, _values, result)
597
+ result = [0, integer_value(val[2]), 1]
598
+
599
+ result
600
+ end
601
+ .,.,
602
+
603
+ module_eval(<<'.,.,', 'parser.y', 89)
604
+ def _reduce_37(val, _values, result)
605
+ result = [integer_value(val[1]), integer_value(val[3]), 1]
606
+
607
+ result
608
+ end
609
+ .,.,
610
+
611
+ module_eval(<<'.,.,', 'parser.y', 91)
612
+ def _reduce_38(val, _values, result)
613
+ result = [0, nil, 2]
614
+ result
615
+ end
616
+ .,.,
617
+
618
+ module_eval(<<'.,.,', 'parser.y', 92)
619
+ def _reduce_39(val, _values, result)
620
+ result = [1, nil, 2]
621
+ result
622
+ end
623
+ .,.,
624
+
625
+ module_eval(<<'.,.,', 'parser.y', 94)
626
+ def _reduce_40(val, _values, result)
335
627
  result = LiteralMatcher.new(val[0][1..-1].to_sym)
336
628
  result
337
629
  end
338
630
  .,.,
339
631
 
340
- module_eval(<<'.,.,', 'parser.y', 45)
341
- def _reduce_15(val, _values, result)
342
- value = if val[0] =~ /^0[bB]/
343
- val[0][2..-1].to_i(2)
344
- elsif val[0] =~ /^0[oO]/
345
- val[0][2..-1].to_i(8)
346
- elsif val[0] =~ /^0[dD]/
347
- val[0][2..-1].to_i(10)
348
- elsif val[0] =~ /^0[xX]/
349
- val[0][2..-1].to_i(16)
350
- elsif val[0] =~ /^0/
351
- val[0][1..-1].to_i(8)
352
- else
353
- val[0].to_i
354
- end
355
- result = LiteralMatcher.new(value)
356
-
632
+ module_eval(<<'.,.,', 'parser.y', 95)
633
+ def _reduce_41(val, _values, result)
634
+ result = LiteralMatcher.new(integer_value(val[0]))
635
+ result
636
+ end
637
+ .,.,
638
+
639
+ module_eval(<<'.,.,', 'parser.y', 96)
640
+ def _reduce_42(val, _values, result)
641
+ result = LiteralMatcher.new(string_value(val[0]))
357
642
  result
358
643
  end
359
644
  .,.,
360
645
 
361
- module_eval(<<'.,.,', 'parser.y', 61)
362
- def _reduce_16(val, _values, result)
363
- quote = val[0][0..0]
364
- value = if quote == "'"
365
- val[0][1..-2].gsub("\\\\", "\\").gsub("\\'", "'")
366
- elsif quote == '"'
367
- val[0][1..-2].
368
- gsub("\\\\", "\\").
369
- gsub('\\"', '"').
370
- gsub("\\n", "\n").
371
- gsub("\\t", "\t").
372
- gsub("\\r", "\r").
373
- gsub("\\f", "\f").
374
- gsub("\\v", "\v").
375
- gsub("\\a", "\a").
376
- gsub("\\e", "\e").
377
- gsub("\\b", "\b").
378
- gsub("\\s", "\s").
379
- gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }.
380
- gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr }
381
- else
382
- raise "Unknown quote: #{quote.inspect}."
383
- end
384
- result = LiteralMatcher.new(value)
385
-
646
+ module_eval(<<'.,.,', 'parser.y', 98)
647
+ def _reduce_43(val, _values, result)
648
+ result = AnyMatcher.new
386
649
  result
387
650
  end
388
651
  .,.,