iregexp 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d81cf113289db245c63cf861b70653dee63e7379e397047db95fe2dc0ecc598
4
- data.tar.gz: 29849bd9536dcdceaf05a9f37876666accbf3bad7ff4ff8acb46ec0a9ed9ebff
3
+ metadata.gz: 5202a3cb240a8a7849884fb8687bde6f35ff10fe4922557a10755c7f056934d3
4
+ data.tar.gz: e3b28251af5dadeecbf3f38ab8f331bdfebb2fe7dd6ee9c8be4ff53188a16c6e
5
5
  SHA512:
6
- metadata.gz: fee297ccae388370273ee44db8922581d331d258fb8578a0b01f054966733d6ac343ddd2ccc39afeda6b232a2ae67270d42fef64244bd5081b9472933432ea38
7
- data.tar.gz: c5587fe22929d89dbfedcec1dbee00939aabe0b3401435d7f76d23b7d29d0055f79df6be5af28cb265bdd52d74adde2c902d21c207526790e38851c2ef1693a5
6
+ metadata.gz: e605b8e6d21851018b876857581ebf45ec8e1f4c46b886bf30eb69ea82f15afeb861df545f172f4f154d4d1a5dd4d0f27a73c2f3548c67f85f2cf92cde3363d7
7
+ data.tar.gz: 47b142bfe32057951c99e5f9ee1b311c2dbf88e1e05ee43607754e25e6a8684dd191dc22c41ed7b0e28f004a7ecaef70a70c1ea1481314d99aa5087ba7c8a462
data/bin/iregexp CHANGED
@@ -15,7 +15,7 @@ FUNCSIG_CHARS = {"l" => :logical, "n" => :nodes, "v" => :value}
15
15
  $options = OpenStruct.new
16
16
  begin
17
17
  op = OptionParser.new do |opts|
18
- opts.banner = "Usage: jpt.rb [options] file.jp"
18
+ opts.banner = "Usage: iregexp [options] file | -e expr"
19
19
 
20
20
  opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
21
21
  $options.verbose = v
data/iregexp.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "iregexp"
3
- s.version = "0.0.2"
3
+ s.version = "0.1.0"
4
4
  s.summary = "I-Regexp Tools"
5
5
  s.description = %q{iregexp implements converters and miscellaneous tools for I-Regexp}
6
6
  s.author = "Carsten Bormann"
data/lib/iregexp.rb CHANGED
@@ -24,7 +24,7 @@ class IREGEXP
24
24
  def self.from_iregexp(s)
25
25
  ast = @@parser.parse s
26
26
  if !ast
27
- fail ParseError.new(self.reason(@@parser, s))
27
+ fail ParseError.new("\n" << self.reason(@@parser, s))
28
28
  end
29
29
  ret = IREGEXP.new(ast)
30
30
 
@@ -196,19 +196,6 @@ module IREGEXPGRAMMAR
196
196
  end
197
197
  end
198
198
 
199
- module Quantifier1
200
- def quantity
201
- elements[1]
202
- end
203
-
204
- end
205
-
206
- module Quantifier2
207
- def ast
208
- quantity.ast
209
- end
210
- end
211
-
212
199
  def _nt_quantifier
213
200
  start_index = index
214
201
  if node_cache[:quantifier].has_key?(index)
@@ -222,11 +209,11 @@ module IREGEXPGRAMMAR
222
209
 
223
210
  i0 = index
224
211
  i1 = index
225
- if has_terminal?(@regexps[gr = '\A[\\*-\\+]'] ||= Regexp.new(gr), :regexp, index)
212
+ if (match_len = has_terminal?("*", false, index))
226
213
  r2 = true
227
- @index += 1
214
+ @index += match_len
228
215
  else
229
- terminal_parse_failure('[\\*-\\+]')
216
+ terminal_parse_failure('"*"')
230
217
  r2 = nil
231
218
  end
232
219
  if r2
@@ -235,11 +222,11 @@ module IREGEXPGRAMMAR
235
222
  r1.extend(Quantifier0)
236
223
  r1.extend(Quantifier0)
237
224
  else
238
- if (match_len = has_terminal?("?", false, index))
225
+ if (match_len = has_terminal?("+", false, index))
239
226
  r3 = true
240
227
  @index += match_len
241
228
  else
242
- terminal_parse_failure('"?"')
229
+ terminal_parse_failure('"+"')
243
230
  r3 = nil
244
231
  end
245
232
  if r3
@@ -248,48 +235,32 @@ module IREGEXPGRAMMAR
248
235
  r1.extend(Quantifier0)
249
236
  r1.extend(Quantifier0)
250
237
  else
251
- @index = i1
252
- r1 = nil
238
+ if (match_len = has_terminal?("?", false, index))
239
+ r4 = true
240
+ @index += match_len
241
+ else
242
+ terminal_parse_failure('"?"')
243
+ r4 = nil
244
+ end
245
+ if r4
246
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
247
+ r1 = r4
248
+ r1.extend(Quantifier0)
249
+ r1.extend(Quantifier0)
250
+ else
251
+ @index = i1
252
+ r1 = nil
253
+ end
253
254
  end
254
255
  end
255
256
  if r1
256
257
  r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
257
258
  r0 = r1
258
259
  else
259
- i4, s4 = index, []
260
- if (match_len = has_terminal?("{", false, index))
261
- r5 = true
262
- @index += match_len
263
- else
264
- terminal_parse_failure('"{"')
265
- r5 = nil
266
- end
267
- s4 << r5
260
+ r5 = _nt_range_quantifier
268
261
  if r5
269
- r6 = _nt_quantity
270
- s4 << r6
271
- if r6
272
- if (match_len = has_terminal?("}", false, index))
273
- r7 = true
274
- @index += match_len
275
- else
276
- terminal_parse_failure('"}"')
277
- r7 = nil
278
- end
279
- s4 << r7
280
- end
281
- end
282
- if s4.last
283
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
284
- r4.extend(Quantifier1)
285
- r4.extend(Quantifier2)
286
- else
287
- @index = i4
288
- r4 = nil
289
- end
290
- if r4
291
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
292
- r0 = r4
262
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
263
+ r0 = r5
293
264
  else
294
265
  @index = i0
295
266
  r0 = nil
@@ -301,20 +272,20 @@ module IREGEXPGRAMMAR
301
272
  r0
302
273
  end
303
274
 
304
- module Quantity0
275
+ module RangeQuantifier0
305
276
  end
306
277
 
307
- module Quantity1
278
+ module RangeQuantifier1
308
279
  def QuantExact
309
- elements[0]
280
+ elements[1]
310
281
  end
311
282
 
312
283
  end
313
284
 
314
- module Quantity2
285
+ module RangeQuantifier2
315
286
  def ast
316
- l = elements[0].ast
317
- r = if rp = elements[1].elements
287
+ l = elements[1].ast
288
+ r = if rp = elements[2].elements
318
289
  if rp[1].text_value != ''
319
290
  rp[1].ast
320
291
  else
@@ -327,63 +298,83 @@ module IREGEXPGRAMMAR
327
298
  end
328
299
  end
329
300
 
330
- def _nt_quantity
301
+ def _nt_range_quantifier
331
302
  start_index = index
332
- if node_cache[:quantity].has_key?(index)
333
- cached = node_cache[:quantity][index]
303
+ if node_cache[:range_quantifier].has_key?(index)
304
+ cached = node_cache[:range_quantifier][index]
334
305
  if cached
335
- node_cache[:quantity][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
306
+ node_cache[:range_quantifier][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
336
307
  @index = cached.interval.end
337
308
  end
338
309
  return cached
339
310
  end
340
311
 
341
312
  i0, s0 = index, []
342
- r1 = _nt_QuantExact
313
+ if (match_len = has_terminal?("{", false, index))
314
+ r1 = true
315
+ @index += match_len
316
+ else
317
+ terminal_parse_failure('"{"')
318
+ r1 = nil
319
+ end
343
320
  s0 << r1
344
321
  if r1
345
- i3, s3 = index, []
346
- if (match_len = has_terminal?(",", false, index))
347
- r4 = true
348
- @index += match_len
349
- else
350
- terminal_parse_failure('","')
351
- r4 = nil
352
- end
353
- s3 << r4
354
- if r4
355
- r6 = _nt_QuantExact
356
- if r6
357
- r5 = r6
322
+ r2 = _nt_QuantExact
323
+ s0 << r2
324
+ if r2
325
+ i4, s4 = index, []
326
+ if (match_len = has_terminal?(",", false, index))
327
+ r5 = true
328
+ @index += match_len
358
329
  else
359
- r5 = instantiate_node(SyntaxNode,input, index...index)
330
+ terminal_parse_failure('","')
331
+ r5 = nil
332
+ end
333
+ s4 << r5
334
+ if r5
335
+ r7 = _nt_QuantExact
336
+ if r7
337
+ r6 = r7
338
+ else
339
+ r6 = instantiate_node(SyntaxNode,input, index...index)
340
+ end
341
+ s4 << r6
342
+ end
343
+ if s4.last
344
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
345
+ r4.extend(RangeQuantifier0)
346
+ else
347
+ @index = i4
348
+ r4 = nil
349
+ end
350
+ if r4
351
+ r3 = r4
352
+ else
353
+ r3 = instantiate_node(SyntaxNode,input, index...index)
354
+ end
355
+ s0 << r3
356
+ if r3
357
+ if (match_len = has_terminal?("}", false, index))
358
+ r8 = true
359
+ @index += match_len
360
+ else
361
+ terminal_parse_failure('"}"')
362
+ r8 = nil
363
+ end
364
+ s0 << r8
360
365
  end
361
- s3 << r5
362
- end
363
- if s3.last
364
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
365
- r3.extend(Quantity0)
366
- else
367
- @index = i3
368
- r3 = nil
369
- end
370
- if r3
371
- r2 = r3
372
- else
373
- r2 = instantiate_node(SyntaxNode,input, index...index)
374
366
  end
375
- s0 << r2
376
367
  end
377
368
  if s0.last
378
369
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
379
- r0.extend(Quantity1)
380
- r0.extend(Quantity2)
370
+ r0.extend(RangeQuantifier1)
371
+ r0.extend(RangeQuantifier2)
381
372
  else
382
373
  @index = i0
383
374
  r0 = nil
384
375
  end
385
376
 
386
- node_cache[:quantity][start_index] = r0
377
+ node_cache[:range_quantifier][start_index] = r0
387
378
 
388
379
  r0
389
380
  end
@@ -547,11 +538,11 @@ module IREGEXPGRAMMAR
547
538
  r0.extend(NormalChar0)
548
539
  r0.extend(NormalChar0)
549
540
  else
550
- if has_terminal?(@regexps[gr = '\A[,-\\-]'] ||= Regexp.new(gr), :regexp, index)
541
+ if (match_len = has_terminal?(",", false, index))
551
542
  r2 = true
552
- @index += 1
543
+ @index += match_len
553
544
  else
554
- terminal_parse_failure('[,-\\-]')
545
+ terminal_parse_failure('","')
555
546
  r2 = nil
556
547
  end
557
548
  if r2
@@ -560,11 +551,11 @@ module IREGEXPGRAMMAR
560
551
  r0.extend(NormalChar0)
561
552
  r0.extend(NormalChar0)
562
553
  else
563
- if has_terminal?(@regexps[gr = '\A[/->]'] ||= Regexp.new(gr), :regexp, index)
554
+ if (match_len = has_terminal?("-", false, index))
564
555
  r3 = true
565
- @index += 1
556
+ @index += match_len
566
557
  else
567
- terminal_parse_failure('[/->]')
558
+ terminal_parse_failure('"-"')
568
559
  r3 = nil
569
560
  end
570
561
  if r3
@@ -573,11 +564,11 @@ module IREGEXPGRAMMAR
573
564
  r0.extend(NormalChar0)
574
565
  r0.extend(NormalChar0)
575
566
  else
576
- if has_terminal?(@regexps[gr = '\A[@-Z]'] ||= Regexp.new(gr), :regexp, index)
567
+ if has_terminal?(@regexps[gr = '\A[/->]'] ||= Regexp.new(gr), :regexp, index)
577
568
  r4 = true
578
569
  @index += 1
579
570
  else
580
- terminal_parse_failure('[@-Z]')
571
+ terminal_parse_failure('[/->]')
581
572
  r4 = nil
582
573
  end
583
574
  if r4
@@ -586,11 +577,11 @@ module IREGEXPGRAMMAR
586
577
  r0.extend(NormalChar0)
587
578
  r0.extend(NormalChar0)
588
579
  else
589
- if has_terminal?(@regexps[gr = '\A[\\^-z]'] ||= Regexp.new(gr), :regexp, index)
580
+ if has_terminal?(@regexps[gr = '\A[@-Z]'] ||= Regexp.new(gr), :regexp, index)
590
581
  r5 = true
591
582
  @index += 1
592
583
  else
593
- terminal_parse_failure('[\\^-z]')
584
+ terminal_parse_failure('[@-Z]')
594
585
  r5 = nil
595
586
  end
596
587
  if r5
@@ -599,11 +590,11 @@ module IREGEXPGRAMMAR
599
590
  r0.extend(NormalChar0)
600
591
  r0.extend(NormalChar0)
601
592
  else
602
- if has_terminal?(@regexps[gr = '\A[~-􏿿]'] ||= Regexp.new(gr), :regexp, index)
593
+ if has_terminal?(@regexps[gr = '\A[\\^-z]'] ||= Regexp.new(gr), :regexp, index)
603
594
  r6 = true
604
595
  @index += 1
605
596
  else
606
- terminal_parse_failure('[~-􏿿]')
597
+ terminal_parse_failure('[\\^-z]')
607
598
  r6 = nil
608
599
  end
609
600
  if r6
@@ -612,8 +603,36 @@ module IREGEXPGRAMMAR
612
603
  r0.extend(NormalChar0)
613
604
  r0.extend(NormalChar0)
614
605
  else
615
- @index = i0
616
- r0 = nil
606
+ if has_terminal?(@regexps[gr = '\A[~-퟿]'] ||= Regexp.new(gr), :regexp, index)
607
+ r7 = true
608
+ @index += 1
609
+ else
610
+ terminal_parse_failure('[~-퟿]')
611
+ r7 = nil
612
+ end
613
+ if r7
614
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
615
+ r0 = r7
616
+ r0.extend(NormalChar0)
617
+ r0.extend(NormalChar0)
618
+ else
619
+ if has_terminal?(@regexps[gr = '\A[-􏿿]'] ||= Regexp.new(gr), :regexp, index)
620
+ r8 = true
621
+ @index += 1
622
+ else
623
+ terminal_parse_failure('[-􏿿]')
624
+ r8 = nil
625
+ end
626
+ if r8
627
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
628
+ r0 = r8
629
+ r0.extend(NormalChar0)
630
+ r0.extend(NormalChar0)
631
+ else
632
+ @index = i0
633
+ r0 = nil
634
+ end
635
+ end
617
636
  end
618
637
  end
619
638
  end
@@ -726,85 +745,97 @@ module IREGEXPGRAMMAR
726
745
  r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
727
746
  r2 = r3
728
747
  else
729
- if has_terminal?(@regexps[gr = '\A[\\--\\.]'] ||= Regexp.new(gr), :regexp, index)
748
+ if (match_len = has_terminal?("-", false, index))
730
749
  r4 = true
731
- @index += 1
750
+ @index += match_len
732
751
  else
733
- terminal_parse_failure('[\\--\\.]')
752
+ terminal_parse_failure('"-"')
734
753
  r4 = nil
735
754
  end
736
755
  if r4
737
756
  r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
738
757
  r2 = r4
739
758
  else
740
- if (match_len = has_terminal?("?", false, index))
759
+ if (match_len = has_terminal?(".", false, index))
741
760
  r5 = true
742
761
  @index += match_len
743
762
  else
744
- terminal_parse_failure('"?"')
763
+ terminal_parse_failure('"."')
745
764
  r5 = nil
746
765
  end
747
766
  if r5
748
767
  r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
749
768
  r2 = r5
750
769
  else
751
- if has_terminal?(@regexps[gr = '\A[\\[-\\^]'] ||= Regexp.new(gr), :regexp, index)
770
+ if (match_len = has_terminal?("?", false, index))
752
771
  r6 = true
753
- @index += 1
772
+ @index += match_len
754
773
  else
755
- terminal_parse_failure('[\\[-\\^]')
774
+ terminal_parse_failure('"?"')
756
775
  r6 = nil
757
776
  end
758
777
  if r6
759
778
  r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
760
779
  r2 = r6
761
780
  else
762
- if (match_len = has_terminal?("n", false, index))
781
+ if has_terminal?(@regexps[gr = '\A[\\[-\\^]'] ||= Regexp.new(gr), :regexp, index)
763
782
  r7 = true
764
- @index += match_len
783
+ @index += 1
765
784
  else
766
- terminal_parse_failure('"n"')
785
+ terminal_parse_failure('[\\[-\\^]')
767
786
  r7 = nil
768
787
  end
769
788
  if r7
770
789
  r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
771
790
  r2 = r7
772
791
  else
773
- if (match_len = has_terminal?("r", false, index))
792
+ if (match_len = has_terminal?("n", false, index))
774
793
  r8 = true
775
794
  @index += match_len
776
795
  else
777
- terminal_parse_failure('"r"')
796
+ terminal_parse_failure('"n"')
778
797
  r8 = nil
779
798
  end
780
799
  if r8
781
800
  r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
782
801
  r2 = r8
783
802
  else
784
- if (match_len = has_terminal?("t", false, index))
803
+ if (match_len = has_terminal?("r", false, index))
785
804
  r9 = true
786
805
  @index += match_len
787
806
  else
788
- terminal_parse_failure('"t"')
807
+ terminal_parse_failure('"r"')
789
808
  r9 = nil
790
809
  end
791
810
  if r9
792
811
  r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
793
812
  r2 = r9
794
813
  else
795
- if has_terminal?(@regexps[gr = '\A[\\{-\\}]'] ||= Regexp.new(gr), :regexp, index)
814
+ if (match_len = has_terminal?("t", false, index))
796
815
  r10 = true
797
- @index += 1
816
+ @index += match_len
798
817
  else
799
- terminal_parse_failure('[\\{-\\}]')
818
+ terminal_parse_failure('"t"')
800
819
  r10 = nil
801
820
  end
802
821
  if r10
803
822
  r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
804
823
  r2 = r10
805
824
  else
806
- @index = i2
807
- r2 = nil
825
+ if has_terminal?(@regexps[gr = '\A[\\{-\\}]'] ||= Regexp.new(gr), :regexp, index)
826
+ r11 = true
827
+ @index += 1
828
+ else
829
+ terminal_parse_failure('[\\{-\\}]')
830
+ r11 = nil
831
+ end
832
+ if r11
833
+ r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
834
+ r2 = r11
835
+ else
836
+ @index = i2
837
+ r2 = nil
838
+ end
808
839
  end
809
840
  end
810
841
  end
@@ -1130,11 +1161,11 @@ module IREGEXPGRAMMAR
1130
1161
  r1.extend(CCchar0)
1131
1162
  r1.extend(CCchar0)
1132
1163
  else
1133
- if has_terminal?(@regexps[gr = '\A[\\^-􏿿]'] ||= Regexp.new(gr), :regexp, index)
1164
+ if has_terminal?(@regexps[gr = '\A[\\^-퟿]'] ||= Regexp.new(gr), :regexp, index)
1134
1165
  r4 = true
1135
1166
  @index += 1
1136
1167
  else
1137
- terminal_parse_failure('[\\^-􏿿]')
1168
+ terminal_parse_failure('[\\^-퟿]')
1138
1169
  r4 = nil
1139
1170
  end
1140
1171
  if r4
@@ -1143,8 +1174,22 @@ module IREGEXPGRAMMAR
1143
1174
  r1.extend(CCchar0)
1144
1175
  r1.extend(CCchar0)
1145
1176
  else
1146
- @index = i1
1147
- r1 = nil
1177
+ if has_terminal?(@regexps[gr = '\A[-􏿿]'] ||= Regexp.new(gr), :regexp, index)
1178
+ r5 = true
1179
+ @index += 1
1180
+ else
1181
+ terminal_parse_failure('[-􏿿]')
1182
+ r5 = nil
1183
+ end
1184
+ if r5
1185
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1186
+ r1 = r5
1187
+ r1.extend(CCchar0)
1188
+ r1.extend(CCchar0)
1189
+ else
1190
+ @index = i1
1191
+ r1 = nil
1192
+ end
1148
1193
  end
1149
1194
  end
1150
1195
  end
@@ -1152,10 +1197,10 @@ module IREGEXPGRAMMAR
1152
1197
  r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1153
1198
  r0 = r1
1154
1199
  else
1155
- r5 = _nt_SingleCharEsc
1156
- if r5
1157
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1158
- r0 = r5
1200
+ r6 = _nt_SingleCharEsc
1201
+ if r6
1202
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1203
+ r0 = r6
1159
1204
  else
1160
1205
  @index = i0
1161
1206
  r0 = nil
@@ -1390,41 +1435,65 @@ module IREGEXPGRAMMAR
1390
1435
  s0 << r1
1391
1436
  if r1
1392
1437
  i3 = index
1393
- if has_terminal?(@regexps[gr = '\A[l-m]'] ||= Regexp.new(gr), :regexp, index)
1438
+ if (match_len = has_terminal?("l", false, index))
1394
1439
  r4 = true
1395
- @index += 1
1440
+ @index += match_len
1396
1441
  else
1397
- terminal_parse_failure('[l-m]')
1442
+ terminal_parse_failure('"l"')
1398
1443
  r4 = nil
1399
1444
  end
1400
1445
  if r4
1401
1446
  r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
1402
1447
  r3 = r4
1403
1448
  else
1404
- if (match_len = has_terminal?("o", false, index))
1449
+ if (match_len = has_terminal?("m", false, index))
1405
1450
  r5 = true
1406
1451
  @index += match_len
1407
1452
  else
1408
- terminal_parse_failure('"o"')
1453
+ terminal_parse_failure('"m"')
1409
1454
  r5 = nil
1410
1455
  end
1411
1456
  if r5
1412
1457
  r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1413
1458
  r3 = r5
1414
1459
  else
1415
- if has_terminal?(@regexps[gr = '\A[t-u]'] ||= Regexp.new(gr), :regexp, index)
1460
+ if (match_len = has_terminal?("o", false, index))
1416
1461
  r6 = true
1417
- @index += 1
1462
+ @index += match_len
1418
1463
  else
1419
- terminal_parse_failure('[t-u]')
1464
+ terminal_parse_failure('"o"')
1420
1465
  r6 = nil
1421
1466
  end
1422
1467
  if r6
1423
1468
  r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1424
1469
  r3 = r6
1425
1470
  else
1426
- @index = i3
1427
- r3 = nil
1471
+ if (match_len = has_terminal?("t", false, index))
1472
+ r7 = true
1473
+ @index += match_len
1474
+ else
1475
+ terminal_parse_failure('"t"')
1476
+ r7 = nil
1477
+ end
1478
+ if r7
1479
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
1480
+ r3 = r7
1481
+ else
1482
+ if (match_len = has_terminal?("u", false, index))
1483
+ r8 = true
1484
+ @index += match_len
1485
+ else
1486
+ terminal_parse_failure('"u"')
1487
+ r8 = nil
1488
+ end
1489
+ if r8
1490
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
1491
+ r3 = r8
1492
+ else
1493
+ @index = i3
1494
+ r3 = nil
1495
+ end
1496
+ end
1428
1497
  end
1429
1498
  end
1430
1499
  end
@@ -1934,19 +2003,31 @@ module IREGEXPGRAMMAR
1934
2003
  r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1935
2004
  r3 = r5
1936
2005
  else
1937
- if has_terminal?(@regexps[gr = '\A[n-o]'] ||= Regexp.new(gr), :regexp, index)
2006
+ if (match_len = has_terminal?("n", false, index))
1938
2007
  r6 = true
1939
- @index += 1
2008
+ @index += match_len
1940
2009
  else
1941
- terminal_parse_failure('[n-o]')
2010
+ terminal_parse_failure('"n"')
1942
2011
  r6 = nil
1943
2012
  end
1944
2013
  if r6
1945
2014
  r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1946
2015
  r3 = r6
1947
2016
  else
1948
- @index = i3
1949
- r3 = nil
2017
+ if (match_len = has_terminal?("o", false, index))
2018
+ r7 = true
2019
+ @index += match_len
2020
+ else
2021
+ terminal_parse_failure('"o"')
2022
+ r7 = nil
2023
+ end
2024
+ if r7
2025
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
2026
+ r3 = r7
2027
+ else
2028
+ @index = i3
2029
+ r3 = nil
2030
+ end
1950
2031
  end
1951
2032
  end
1952
2033
  end
data/test-data/simple.out CHANGED
@@ -6,22 +6,22 @@
6
6
  "a"
7
7
  =🤔 "🤔"
8
8
  "🤔"
9
- -\ Expected one of [\(-\+], [\--\.], "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 2 (byte 2):
9
+ -\ Expected one of [\(-\+], "-", ".", "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 2 (byte 2):
10
10
  \
11
11
  ~^
12
- -\v Expected one of [\(-\+], [\--\.], "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 2 (byte 2):
12
+ -\v Expected one of [\(-\+], "-", ".", "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 2 (byte 2):
13
13
  \v
14
14
  ~^
15
- -\\\ Expected one of [\(-\+], [\--\.], "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 4 (byte 4):
15
+ -\\\ Expected one of [\(-\+], "-", ".", "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 4 (byte 4):
16
16
  \\\
17
17
  ~~~^
18
- -\\\v Expected one of [\(-\+], [\--\.], "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 4 (byte 4):
18
+ -\\\v Expected one of [\(-\+], "-", ".", "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 4 (byte 4):
19
19
  \\\v
20
20
  ~~~^
21
- -\\\z Expected one of [\(-\+], [\--\.], "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 4 (byte 4):
21
+ -\\\z Expected one of [\(-\+], "-", ".", "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 4 (byte 4):
22
22
  \\\z
23
23
  ~~~^
24
- -\ca Expected one of [\(-\+], [\--\.], "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 2 (byte 2):
24
+ -\ca Expected one of [\(-\+], "-", ".", "?", [\[-\^], "n", "r", "t", [\{-\}] at line 1, column 2 (byte 2):
25
25
  \ca
26
26
  ~^
27
27
  =\(\)\*\+\.\?\[\\ ["seq", "(", ")", "*", "+", ".", "?", "[", "\\"]
@@ -32,7 +32,7 @@
32
32
  "", "a", "aa", "aaa", "aaaa"
33
33
  =🤔* ["rep", 0, false, "🤔"]
34
34
  "", "🤔", "🤔🤔", "🤔🤔🤔", "🤔🤔🤔🤔"
35
- -a** Expected one of [\u0000-'], [,-\-], [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 3 (byte 3):
35
+ -a** Expected one of [\u0000-'], ",", "-", [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 3 (byte 3):
36
36
  a**
37
37
  ~~^
38
38
  =a|b ["alt", "a", "b"]
@@ -57,18 +57,18 @@
57
57
  "aa", "bbbbbbb", "bbbbbbbb", "bbbbbbbbb"
58
58
  =(aa) ["seq", "a", "a"]
59
59
  "aa"
60
- -aa) Expected one of [\*-\+], "?", "{", [\u0000-'], [,-\-], [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 3 (byte 3):
60
+ -aa) Expected one of "*", "+", "?", "{", [\u0000-'], ",", "-", [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 3 (byte 3):
61
61
  aa)
62
62
  ~~^
63
- -(aa Expected one of [\*-\+], "?", "{", [\u0000-'], [,-\-], [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|", ")" at line 1, column 4 (byte 4):
63
+ -(aa Expected one of "*", "+", "?", "{", [\u0000-'], ",", "-", [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|", ")" at line 1, column 4 (byte 4):
64
64
  (aa
65
65
  ~~~^
66
66
  =aa(bb|cc)dd ["seq", "a", "a", ["alt", ["seq", "b", "b"], ["seq", "c", "c"]], "d", "d"]
67
67
  "aabbdd", "aaccdd"
68
- -aabb|cc)dd Expected one of [\*-\+], "?", "{", [\u0000-'], [,-\-], [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 8 (byte 8):
68
+ -aabb|cc)dd Expected one of "*", "+", "?", "{", [\u0000-'], ",", "-", [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 8 (byte 8):
69
69
  aabb|cc)dd
70
70
  ~~~~~~~^
71
- -aa(bb|ccdd Expected one of [\*-\+], "?", "{", [\u0000-'], [,-\-], [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|", ")" at line 1, column 11 (byte 11):
71
+ -aa(bb|ccdd Expected one of "*", "+", "?", "{", [\u0000-'], ",", "-", [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|", ")" at line 1, column 11 (byte 11):
72
72
  aa(bb|ccdd
73
73
  ~~~~~~~~~~^
74
74
  =[abc] ["pos", "a", "b", "c"]
@@ -76,7 +76,7 @@
76
76
  -[a Expected one of "-", [\u0000-,], [\.-Z], [\^-􏿿], "\\", "\\p{", "\\P{", "]" at line 1, column 3 (byte 3):
77
77
  [a
78
78
  ~~^
79
- -a] Expected one of [\*-\+], "?", "{", [\u0000-'], [,-\-], [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 2 (byte 2):
79
+ -a] Expected one of "*", "+", "?", "{", [\u0000-'], ",", "-", [/->], [@-Z], [\^-z], [~-􏿿], ".", "\\", "\\p{", "\\P{", "[", "(", "|" at line 1, column 2 (byte 2):
80
80
  a]
81
81
  ~^
82
82
  =[a🤔b] ["pos", "a", "🤔", "b"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iregexp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-29 00:00:00.000000000 Z
11
+ date: 2023-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  requirements: []
103
- rubygems_version: 3.4.6
103
+ rubygems_version: 3.4.10
104
104
  signing_key:
105
105
  specification_version: 4
106
106
  summary: I-Regexp Tools