riffraff_jsonpath 0.8.2

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.
@@ -0,0 +1,1888 @@
1
+ # Autogenerated from a Treetop grammar. Edits may be lost.
2
+
3
+
4
+ module JSONPathGrammar
5
+ include Treetop::Runtime
6
+
7
+ def root
8
+ @root || :path
9
+ end
10
+
11
+ module Path0
12
+ def root
13
+ elements[0]
14
+ end
15
+
16
+ def selectors
17
+ elements[1]
18
+ end
19
+ end
20
+
21
+ def _nt_path
22
+ start_index = index
23
+ if node_cache[:path].has_key?(index)
24
+ cached = node_cache[:path][index]
25
+ if cached
26
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
27
+ @index = cached.interval.end
28
+ end
29
+ return cached
30
+ end
31
+
32
+ i0, s0 = index, []
33
+ r1 = _nt_root
34
+ s0 << r1
35
+ if r1
36
+ s2, i2 = [], index
37
+ loop do
38
+ r3 = _nt_child
39
+ if r3
40
+ s2 << r3
41
+ else
42
+ break
43
+ end
44
+ end
45
+ if s2.empty?
46
+ @index = i2
47
+ r2 = nil
48
+ else
49
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
50
+ end
51
+ s0 << r2
52
+ end
53
+ if s0.last
54
+ r0 = instantiate_node(JSONPath::Nodes::RootNode,input, i0...index, s0)
55
+ r0.extend(Path0)
56
+ else
57
+ @index = i0
58
+ r0 = nil
59
+ end
60
+
61
+ node_cache[:path][start_index] = r0
62
+
63
+ r0
64
+ end
65
+
66
+ def _nt_root
67
+ start_index = index
68
+ if node_cache[:root].has_key?(index)
69
+ cached = node_cache[:root][index]
70
+ if cached
71
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
72
+ @index = cached.interval.end
73
+ end
74
+ return cached
75
+ end
76
+
77
+ if has_terminal?('$', false, index)
78
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
79
+ @index += 1
80
+ else
81
+ terminal_parse_failure('$')
82
+ r0 = nil
83
+ end
84
+
85
+ node_cache[:root][start_index] = r0
86
+
87
+ r0
88
+ end
89
+
90
+ module Number0
91
+ end
92
+
93
+ def _nt_number
94
+ start_index = index
95
+ if node_cache[:number].has_key?(index)
96
+ cached = node_cache[:number][index]
97
+ if cached
98
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
99
+ @index = cached.interval.end
100
+ end
101
+ return cached
102
+ end
103
+
104
+ i0, s0 = index, []
105
+ if has_terminal?('-', false, index)
106
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
107
+ @index += 1
108
+ else
109
+ terminal_parse_failure('-')
110
+ r2 = nil
111
+ end
112
+ if r2
113
+ r1 = r2
114
+ else
115
+ r1 = instantiate_node(SyntaxNode,input, index...index)
116
+ end
117
+ s0 << r1
118
+ if r1
119
+ s3, i3 = [], index
120
+ loop do
121
+ if has_terminal?('\G[0-9]', true, index)
122
+ r4 = true
123
+ @index += 1
124
+ else
125
+ r4 = nil
126
+ end
127
+ if r4
128
+ s3 << r4
129
+ else
130
+ break
131
+ end
132
+ end
133
+ if s3.empty?
134
+ @index = i3
135
+ r3 = nil
136
+ else
137
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
138
+ end
139
+ s0 << r3
140
+ end
141
+ if s0.last
142
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
143
+ r0.extend(Number0)
144
+ else
145
+ @index = i0
146
+ r0 = nil
147
+ end
148
+
149
+ node_cache[:number][start_index] = r0
150
+
151
+ r0
152
+ end
153
+
154
+ module Wildcard0
155
+ end
156
+
157
+ def _nt_wildcard
158
+ start_index = index
159
+ if node_cache[:wildcard].has_key?(index)
160
+ cached = node_cache[:wildcard][index]
161
+ if cached
162
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
163
+ @index = cached.interval.end
164
+ end
165
+ return cached
166
+ end
167
+
168
+ i0 = index
169
+ if has_terminal?('*', false, index)
170
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
171
+ @index += 1
172
+ else
173
+ terminal_parse_failure('*')
174
+ r1 = nil
175
+ end
176
+ if r1
177
+ r0 = r1
178
+ else
179
+ i2, s2 = index, []
180
+ if has_terminal?('\'', false, index)
181
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
182
+ @index += 1
183
+ else
184
+ terminal_parse_failure('\'')
185
+ r3 = nil
186
+ end
187
+ s2 << r3
188
+ if r3
189
+ if has_terminal?('*', false, index)
190
+ r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
191
+ @index += 1
192
+ else
193
+ terminal_parse_failure('*')
194
+ r4 = nil
195
+ end
196
+ s2 << r4
197
+ if r4
198
+ if has_terminal?('\'', false, index)
199
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
200
+ @index += 1
201
+ else
202
+ terminal_parse_failure('\'')
203
+ r5 = nil
204
+ end
205
+ s2 << r5
206
+ end
207
+ end
208
+ if s2.last
209
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
210
+ r2.extend(Wildcard0)
211
+ else
212
+ @index = i2
213
+ r2 = nil
214
+ end
215
+ if r2
216
+ r0 = r2
217
+ else
218
+ @index = i0
219
+ r0 = nil
220
+ end
221
+ end
222
+
223
+ node_cache[:wildcard][start_index] = r0
224
+
225
+ r0
226
+ end
227
+
228
+ def _nt_lower
229
+ start_index = index
230
+ if node_cache[:lower].has_key?(index)
231
+ cached = node_cache[:lower][index]
232
+ if cached
233
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
234
+ @index = cached.interval.end
235
+ end
236
+ return cached
237
+ end
238
+
239
+ i0 = index
240
+ r1 = _nt_descendant
241
+ if r1
242
+ r0 = r1
243
+ else
244
+ if has_terminal?('.', false, index)
245
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
246
+ @index += 1
247
+ else
248
+ terminal_parse_failure('.')
249
+ r2 = nil
250
+ end
251
+ if r2
252
+ r0 = r2
253
+ else
254
+ @index = i0
255
+ r0 = nil
256
+ end
257
+ end
258
+
259
+ node_cache[:lower][start_index] = r0
260
+
261
+ r0
262
+ end
263
+
264
+ def _nt_descendant
265
+ start_index = index
266
+ if node_cache[:descendant].has_key?(index)
267
+ cached = node_cache[:descendant][index]
268
+ if cached
269
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
270
+ @index = cached.interval.end
271
+ end
272
+ return cached
273
+ end
274
+
275
+ if has_terminal?('..', false, index)
276
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
277
+ @index += 2
278
+ else
279
+ terminal_parse_failure('..')
280
+ r0 = nil
281
+ end
282
+
283
+ node_cache[:descendant][start_index] = r0
284
+
285
+ r0
286
+ end
287
+
288
+ module WordList0
289
+ def quoted_word
290
+ elements[0]
291
+ end
292
+
293
+ def word_list
294
+ elements[3]
295
+ end
296
+ end
297
+
298
+ def _nt_word_list
299
+ start_index = index
300
+ if node_cache[:word_list].has_key?(index)
301
+ cached = node_cache[:word_list][index]
302
+ if cached
303
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
304
+ @index = cached.interval.end
305
+ end
306
+ return cached
307
+ end
308
+
309
+ i0 = index
310
+ i1, s1 = index, []
311
+ r2 = _nt_quoted_word
312
+ s1 << r2
313
+ if r2
314
+ if has_terminal?(',', false, index)
315
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
316
+ @index += 1
317
+ else
318
+ terminal_parse_failure(',')
319
+ r3 = nil
320
+ end
321
+ s1 << r3
322
+ if r3
323
+ s4, i4 = [], index
324
+ loop do
325
+ if has_terminal?(' ', false, index)
326
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
327
+ @index += 1
328
+ else
329
+ terminal_parse_failure(' ')
330
+ r5 = nil
331
+ end
332
+ if r5
333
+ s4 << r5
334
+ else
335
+ break
336
+ end
337
+ end
338
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
339
+ s1 << r4
340
+ if r4
341
+ r6 = _nt_word_list
342
+ s1 << r6
343
+ end
344
+ end
345
+ end
346
+ if s1.last
347
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
348
+ r1.extend(WordList0)
349
+ else
350
+ @index = i1
351
+ r1 = nil
352
+ end
353
+ if r1
354
+ r0 = r1
355
+ else
356
+ r7 = _nt_quoted_word
357
+ if r7
358
+ r0 = r7
359
+ else
360
+ @index = i0
361
+ r0 = nil
362
+ end
363
+ end
364
+
365
+ node_cache[:word_list][start_index] = r0
366
+
367
+ r0
368
+ end
369
+
370
+ module QuotedWord0
371
+ end
372
+
373
+ module QuotedWord1
374
+ def key
375
+ elements[1]
376
+ end
377
+
378
+ end
379
+
380
+ def _nt_quoted_word
381
+ start_index = index
382
+ if node_cache[:quoted_word].has_key?(index)
383
+ cached = node_cache[:quoted_word][index]
384
+ if cached
385
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
386
+ @index = cached.interval.end
387
+ end
388
+ return cached
389
+ end
390
+
391
+ i0, s0 = index, []
392
+ if has_terminal?('\'', false, index)
393
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
394
+ @index += 1
395
+ else
396
+ terminal_parse_failure('\'')
397
+ r1 = nil
398
+ end
399
+ s0 << r1
400
+ if r1
401
+ s2, i2 = [], index
402
+ loop do
403
+ i3, s3 = index, []
404
+ i4 = index
405
+ if has_terminal?('\'', false, index)
406
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
407
+ @index += 1
408
+ else
409
+ terminal_parse_failure('\'')
410
+ r5 = nil
411
+ end
412
+ if r5
413
+ r4 = nil
414
+ else
415
+ @index = i4
416
+ r4 = instantiate_node(SyntaxNode,input, index...index)
417
+ end
418
+ s3 << r4
419
+ if r4
420
+ if index < input_length
421
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
422
+ @index += 1
423
+ else
424
+ terminal_parse_failure("any character")
425
+ r6 = nil
426
+ end
427
+ s3 << r6
428
+ end
429
+ if s3.last
430
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
431
+ r3.extend(QuotedWord0)
432
+ else
433
+ @index = i3
434
+ r3 = nil
435
+ end
436
+ if r3
437
+ s2 << r3
438
+ else
439
+ break
440
+ end
441
+ end
442
+ if s2.empty?
443
+ @index = i2
444
+ r2 = nil
445
+ else
446
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
447
+ end
448
+ s0 << r2
449
+ if r2
450
+ if has_terminal?('\'', false, index)
451
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
452
+ @index += 1
453
+ else
454
+ terminal_parse_failure('\'')
455
+ r7 = nil
456
+ end
457
+ s0 << r7
458
+ end
459
+ end
460
+ if s0.last
461
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
462
+ r0.extend(QuotedWord1)
463
+ else
464
+ @index = i0
465
+ r0 = nil
466
+ end
467
+
468
+ node_cache[:quoted_word][start_index] = r0
469
+
470
+ r0
471
+ end
472
+
473
+ module Child0
474
+ def lower
475
+ elements[0]
476
+ end
477
+
478
+ def key
479
+ elements[1]
480
+ end
481
+ end
482
+
483
+ module Child1
484
+ def lower
485
+ elements[0]
486
+ end
487
+
488
+ def wildcard
489
+ elements[1]
490
+ end
491
+ end
492
+
493
+ module Child2
494
+ end
495
+
496
+ module Child3
497
+ def lower
498
+ elements[0]
499
+ end
500
+
501
+ def template_code
502
+ elements[2]
503
+ end
504
+
505
+ end
506
+
507
+ module Child4
508
+ end
509
+
510
+ module Child5
511
+ def lower
512
+ elements[0]
513
+ end
514
+
515
+ def key
516
+ elements[2]
517
+ end
518
+
519
+ end
520
+
521
+ module Child6
522
+ def wildcard
523
+ elements[1]
524
+ end
525
+
526
+ end
527
+
528
+ module Child7
529
+ def index
530
+ elements[1]
531
+ end
532
+
533
+ end
534
+
535
+ module Child8
536
+ def lower
537
+ elements[0]
538
+ end
539
+
540
+ def index
541
+ elements[2]
542
+ end
543
+
544
+ end
545
+
546
+ module Child9
547
+ def start
548
+ elements[1]
549
+ end
550
+
551
+ def stop
552
+ elements[3]
553
+ end
554
+
555
+ end
556
+
557
+ module Child10
558
+ def lower
559
+ elements[0]
560
+ end
561
+
562
+ def start
563
+ elements[2]
564
+ end
565
+
566
+ def stop
567
+ elements[4]
568
+ end
569
+
570
+ end
571
+
572
+ module Child11
573
+ def start
574
+ elements[1]
575
+ end
576
+
577
+ end
578
+
579
+ module Child12
580
+ def lower
581
+ elements[0]
582
+ end
583
+
584
+ def start
585
+ elements[2]
586
+ end
587
+
588
+ end
589
+
590
+ module Child13
591
+ def start
592
+ elements[1]
593
+ end
594
+
595
+ def stop
596
+ elements[3]
597
+ end
598
+
599
+ def step
600
+ elements[5]
601
+ end
602
+
603
+ end
604
+
605
+ module Child14
606
+ def lower
607
+ elements[0]
608
+ end
609
+
610
+ def start
611
+ elements[2]
612
+ end
613
+
614
+ def stop
615
+ elements[4]
616
+ end
617
+
618
+ def step
619
+ elements[6]
620
+ end
621
+
622
+ end
623
+
624
+ module Child15
625
+ def start
626
+ elements[1]
627
+ end
628
+
629
+ def step
630
+ elements[3]
631
+ end
632
+
633
+ end
634
+
635
+ module Child16
636
+ def lower
637
+ elements[0]
638
+ end
639
+
640
+ def start
641
+ elements[2]
642
+ end
643
+
644
+ def step
645
+ elements[4]
646
+ end
647
+
648
+ end
649
+
650
+ module Child17
651
+ end
652
+
653
+ module Child18
654
+ def template_code
655
+ elements[1]
656
+ end
657
+
658
+ end
659
+
660
+ module Child19
661
+ end
662
+
663
+ module Child20
664
+ def lower
665
+ elements[0]
666
+ end
667
+
668
+ def template_code
669
+ elements[2]
670
+ end
671
+
672
+ end
673
+
674
+ module Child21
675
+ end
676
+
677
+ module Child22
678
+ def template_code
679
+ elements[1]
680
+ end
681
+
682
+ end
683
+
684
+ module Child23
685
+ end
686
+
687
+ module Child24
688
+ def lower
689
+ elements[0]
690
+ end
691
+
692
+ def template_code
693
+ elements[2]
694
+ end
695
+
696
+ end
697
+
698
+ module Child25
699
+ def word_list
700
+ elements[1]
701
+ end
702
+
703
+ end
704
+
705
+ module Child26
706
+ def lower
707
+ elements[0]
708
+ end
709
+
710
+ def word_list
711
+ elements[2]
712
+ end
713
+
714
+ end
715
+
716
+ def _nt_child
717
+ start_index = index
718
+ if node_cache[:child].has_key?(index)
719
+ cached = node_cache[:child][index]
720
+ if cached
721
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
722
+ @index = cached.interval.end
723
+ end
724
+ return cached
725
+ end
726
+
727
+ i0 = index
728
+ i1, s1 = index, []
729
+ r2 = _nt_lower
730
+ s1 << r2
731
+ if r2
732
+ r3 = _nt_bareword
733
+ s1 << r3
734
+ end
735
+ if s1.last
736
+ r1 = instantiate_node(JSONPath::Nodes::KeyNode,input, i1...index, s1)
737
+ r1.extend(Child0)
738
+ else
739
+ @index = i1
740
+ r1 = nil
741
+ end
742
+ if r1
743
+ r0 = r1
744
+ else
745
+ i4, s4 = index, []
746
+ r5 = _nt_lower
747
+ s4 << r5
748
+ if r5
749
+ r6 = _nt_wildcard
750
+ s4 << r6
751
+ end
752
+ if s4.last
753
+ r4 = instantiate_node(JSONPath::Nodes::WildcardNode,input, i4...index, s4)
754
+ r4.extend(Child1)
755
+ else
756
+ @index = i4
757
+ r4 = nil
758
+ end
759
+ if r4
760
+ r0 = r4
761
+ else
762
+ i7, s7 = index, []
763
+ r8 = _nt_lower
764
+ s7 << r8
765
+ if r8
766
+ if has_terminal?('\'?(', false, index)
767
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
768
+ @index += 3
769
+ else
770
+ terminal_parse_failure('\'?(')
771
+ r9 = nil
772
+ end
773
+ s7 << r9
774
+ if r9
775
+ s10, i10 = [], index
776
+ loop do
777
+ i11, s11 = index, []
778
+ i12 = index
779
+ if has_terminal?(')\'', false, index)
780
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 2))
781
+ @index += 2
782
+ else
783
+ terminal_parse_failure(')\'')
784
+ r13 = nil
785
+ end
786
+ if r13
787
+ r12 = nil
788
+ else
789
+ @index = i12
790
+ r12 = instantiate_node(SyntaxNode,input, index...index)
791
+ end
792
+ s11 << r12
793
+ if r12
794
+ if index < input_length
795
+ r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
796
+ @index += 1
797
+ else
798
+ terminal_parse_failure("any character")
799
+ r14 = nil
800
+ end
801
+ s11 << r14
802
+ end
803
+ if s11.last
804
+ r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
805
+ r11.extend(Child2)
806
+ else
807
+ @index = i11
808
+ r11 = nil
809
+ end
810
+ if r11
811
+ s10 << r11
812
+ else
813
+ break
814
+ end
815
+ end
816
+ if s10.empty?
817
+ @index = i10
818
+ r10 = nil
819
+ else
820
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
821
+ end
822
+ s7 << r10
823
+ if r10
824
+ if has_terminal?(')\'', false, index)
825
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 2))
826
+ @index += 2
827
+ else
828
+ terminal_parse_failure(')\'')
829
+ r15 = nil
830
+ end
831
+ s7 << r15
832
+ end
833
+ end
834
+ end
835
+ if s7.last
836
+ r7 = instantiate_node(JSONPath::Nodes::FilterNode,input, i7...index, s7)
837
+ r7.extend(Child3)
838
+ else
839
+ @index = i7
840
+ r7 = nil
841
+ end
842
+ if r7
843
+ r0 = r7
844
+ else
845
+ i16, s16 = index, []
846
+ r17 = _nt_lower
847
+ s16 << r17
848
+ if r17
849
+ if has_terminal?('\'', false, index)
850
+ r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
851
+ @index += 1
852
+ else
853
+ terminal_parse_failure('\'')
854
+ r18 = nil
855
+ end
856
+ s16 << r18
857
+ if r18
858
+ s19, i19 = [], index
859
+ loop do
860
+ i20, s20 = index, []
861
+ i21 = index
862
+ if has_terminal?('\'', false, index)
863
+ r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
864
+ @index += 1
865
+ else
866
+ terminal_parse_failure('\'')
867
+ r22 = nil
868
+ end
869
+ if r22
870
+ r21 = nil
871
+ else
872
+ @index = i21
873
+ r21 = instantiate_node(SyntaxNode,input, index...index)
874
+ end
875
+ s20 << r21
876
+ if r21
877
+ if index < input_length
878
+ r23 = instantiate_node(SyntaxNode,input, index...(index + 1))
879
+ @index += 1
880
+ else
881
+ terminal_parse_failure("any character")
882
+ r23 = nil
883
+ end
884
+ s20 << r23
885
+ end
886
+ if s20.last
887
+ r20 = instantiate_node(SyntaxNode,input, i20...index, s20)
888
+ r20.extend(Child4)
889
+ else
890
+ @index = i20
891
+ r20 = nil
892
+ end
893
+ if r20
894
+ s19 << r20
895
+ else
896
+ break
897
+ end
898
+ end
899
+ if s19.empty?
900
+ @index = i19
901
+ r19 = nil
902
+ else
903
+ r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
904
+ end
905
+ s16 << r19
906
+ if r19
907
+ if has_terminal?('\'', false, index)
908
+ r24 = instantiate_node(SyntaxNode,input, index...(index + 1))
909
+ @index += 1
910
+ else
911
+ terminal_parse_failure('\'')
912
+ r24 = nil
913
+ end
914
+ s16 << r24
915
+ end
916
+ end
917
+ end
918
+ if s16.last
919
+ r16 = instantiate_node(JSONPath::Nodes::KeyNode,input, i16...index, s16)
920
+ r16.extend(Child5)
921
+ else
922
+ @index = i16
923
+ r16 = nil
924
+ end
925
+ if r16
926
+ r0 = r16
927
+ else
928
+ i25, s25 = index, []
929
+ if has_terminal?('[', false, index)
930
+ r26 = instantiate_node(SyntaxNode,input, index...(index + 1))
931
+ @index += 1
932
+ else
933
+ terminal_parse_failure('[')
934
+ r26 = nil
935
+ end
936
+ s25 << r26
937
+ if r26
938
+ r27 = _nt_wildcard
939
+ s25 << r27
940
+ if r27
941
+ if has_terminal?(']', false, index)
942
+ r28 = instantiate_node(SyntaxNode,input, index...(index + 1))
943
+ @index += 1
944
+ else
945
+ terminal_parse_failure(']')
946
+ r28 = nil
947
+ end
948
+ s25 << r28
949
+ end
950
+ end
951
+ if s25.last
952
+ r25 = instantiate_node(JSONPath::Nodes::WildcardNode,input, i25...index, s25)
953
+ r25.extend(Child6)
954
+ else
955
+ @index = i25
956
+ r25 = nil
957
+ end
958
+ if r25
959
+ r0 = r25
960
+ else
961
+ i29, s29 = index, []
962
+ if has_terminal?('[', false, index)
963
+ r30 = instantiate_node(SyntaxNode,input, index...(index + 1))
964
+ @index += 1
965
+ else
966
+ terminal_parse_failure('[')
967
+ r30 = nil
968
+ end
969
+ s29 << r30
970
+ if r30
971
+ r31 = _nt_number
972
+ s29 << r31
973
+ if r31
974
+ if has_terminal?(']', false, index)
975
+ r32 = instantiate_node(SyntaxNode,input, index...(index + 1))
976
+ @index += 1
977
+ else
978
+ terminal_parse_failure(']')
979
+ r32 = nil
980
+ end
981
+ s29 << r32
982
+ end
983
+ end
984
+ if s29.last
985
+ r29 = instantiate_node(JSONPath::Nodes::IndexNode,input, i29...index, s29)
986
+ r29.extend(Child7)
987
+ else
988
+ @index = i29
989
+ r29 = nil
990
+ end
991
+ if r29
992
+ r0 = r29
993
+ else
994
+ i33, s33 = index, []
995
+ r34 = _nt_lower
996
+ s33 << r34
997
+ if r34
998
+ if has_terminal?('[', false, index)
999
+ r35 = instantiate_node(SyntaxNode,input, index...(index + 1))
1000
+ @index += 1
1001
+ else
1002
+ terminal_parse_failure('[')
1003
+ r35 = nil
1004
+ end
1005
+ s33 << r35
1006
+ if r35
1007
+ r36 = _nt_number
1008
+ s33 << r36
1009
+ if r36
1010
+ if has_terminal?(']', false, index)
1011
+ r37 = instantiate_node(SyntaxNode,input, index...(index + 1))
1012
+ @index += 1
1013
+ else
1014
+ terminal_parse_failure(']')
1015
+ r37 = nil
1016
+ end
1017
+ s33 << r37
1018
+ end
1019
+ end
1020
+ end
1021
+ if s33.last
1022
+ r33 = instantiate_node(JSONPath::Nodes::IndexNode,input, i33...index, s33)
1023
+ r33.extend(Child8)
1024
+ else
1025
+ @index = i33
1026
+ r33 = nil
1027
+ end
1028
+ if r33
1029
+ r0 = r33
1030
+ else
1031
+ i38, s38 = index, []
1032
+ if has_terminal?('[', false, index)
1033
+ r39 = instantiate_node(SyntaxNode,input, index...(index + 1))
1034
+ @index += 1
1035
+ else
1036
+ terminal_parse_failure('[')
1037
+ r39 = nil
1038
+ end
1039
+ s38 << r39
1040
+ if r39
1041
+ r40 = _nt_number
1042
+ s38 << r40
1043
+ if r40
1044
+ if has_terminal?(':', false, index)
1045
+ r41 = instantiate_node(SyntaxNode,input, index...(index + 1))
1046
+ @index += 1
1047
+ else
1048
+ terminal_parse_failure(':')
1049
+ r41 = nil
1050
+ end
1051
+ s38 << r41
1052
+ if r41
1053
+ r42 = _nt_number
1054
+ s38 << r42
1055
+ if r42
1056
+ if has_terminal?(']', false, index)
1057
+ r43 = instantiate_node(SyntaxNode,input, index...(index + 1))
1058
+ @index += 1
1059
+ else
1060
+ terminal_parse_failure(']')
1061
+ r43 = nil
1062
+ end
1063
+ s38 << r43
1064
+ end
1065
+ end
1066
+ end
1067
+ end
1068
+ if s38.last
1069
+ r38 = instantiate_node(JSONPath::Nodes::SliceNode,input, i38...index, s38)
1070
+ r38.extend(Child9)
1071
+ else
1072
+ @index = i38
1073
+ r38 = nil
1074
+ end
1075
+ if r38
1076
+ r0 = r38
1077
+ else
1078
+ i44, s44 = index, []
1079
+ r45 = _nt_lower
1080
+ s44 << r45
1081
+ if r45
1082
+ if has_terminal?('[', false, index)
1083
+ r46 = instantiate_node(SyntaxNode,input, index...(index + 1))
1084
+ @index += 1
1085
+ else
1086
+ terminal_parse_failure('[')
1087
+ r46 = nil
1088
+ end
1089
+ s44 << r46
1090
+ if r46
1091
+ r47 = _nt_number
1092
+ s44 << r47
1093
+ if r47
1094
+ if has_terminal?(':', false, index)
1095
+ r48 = instantiate_node(SyntaxNode,input, index...(index + 1))
1096
+ @index += 1
1097
+ else
1098
+ terminal_parse_failure(':')
1099
+ r48 = nil
1100
+ end
1101
+ s44 << r48
1102
+ if r48
1103
+ r49 = _nt_number
1104
+ s44 << r49
1105
+ if r49
1106
+ if has_terminal?(']', false, index)
1107
+ r50 = instantiate_node(SyntaxNode,input, index...(index + 1))
1108
+ @index += 1
1109
+ else
1110
+ terminal_parse_failure(']')
1111
+ r50 = nil
1112
+ end
1113
+ s44 << r50
1114
+ end
1115
+ end
1116
+ end
1117
+ end
1118
+ end
1119
+ if s44.last
1120
+ r44 = instantiate_node(JSONPath::Nodes::SliceNode,input, i44...index, s44)
1121
+ r44.extend(Child10)
1122
+ else
1123
+ @index = i44
1124
+ r44 = nil
1125
+ end
1126
+ if r44
1127
+ r0 = r44
1128
+ else
1129
+ i51, s51 = index, []
1130
+ if has_terminal?('[', false, index)
1131
+ r52 = instantiate_node(SyntaxNode,input, index...(index + 1))
1132
+ @index += 1
1133
+ else
1134
+ terminal_parse_failure('[')
1135
+ r52 = nil
1136
+ end
1137
+ s51 << r52
1138
+ if r52
1139
+ r53 = _nt_number
1140
+ s51 << r53
1141
+ if r53
1142
+ if has_terminal?(':]', false, index)
1143
+ r54 = instantiate_node(SyntaxNode,input, index...(index + 2))
1144
+ @index += 2
1145
+ else
1146
+ terminal_parse_failure(':]')
1147
+ r54 = nil
1148
+ end
1149
+ s51 << r54
1150
+ end
1151
+ end
1152
+ if s51.last
1153
+ r51 = instantiate_node(JSONPath::Nodes::SliceNode,input, i51...index, s51)
1154
+ r51.extend(Child11)
1155
+ else
1156
+ @index = i51
1157
+ r51 = nil
1158
+ end
1159
+ if r51
1160
+ r0 = r51
1161
+ else
1162
+ i55, s55 = index, []
1163
+ r56 = _nt_lower
1164
+ s55 << r56
1165
+ if r56
1166
+ if has_terminal?('[', false, index)
1167
+ r57 = instantiate_node(SyntaxNode,input, index...(index + 1))
1168
+ @index += 1
1169
+ else
1170
+ terminal_parse_failure('[')
1171
+ r57 = nil
1172
+ end
1173
+ s55 << r57
1174
+ if r57
1175
+ r58 = _nt_number
1176
+ s55 << r58
1177
+ if r58
1178
+ if has_terminal?(':]', false, index)
1179
+ r59 = instantiate_node(SyntaxNode,input, index...(index + 2))
1180
+ @index += 2
1181
+ else
1182
+ terminal_parse_failure(':]')
1183
+ r59 = nil
1184
+ end
1185
+ s55 << r59
1186
+ end
1187
+ end
1188
+ end
1189
+ if s55.last
1190
+ r55 = instantiate_node(JSONPath::Nodes::SliceNode,input, i55...index, s55)
1191
+ r55.extend(Child12)
1192
+ else
1193
+ @index = i55
1194
+ r55 = nil
1195
+ end
1196
+ if r55
1197
+ r0 = r55
1198
+ else
1199
+ i60, s60 = index, []
1200
+ if has_terminal?('[', false, index)
1201
+ r61 = instantiate_node(SyntaxNode,input, index...(index + 1))
1202
+ @index += 1
1203
+ else
1204
+ terminal_parse_failure('[')
1205
+ r61 = nil
1206
+ end
1207
+ s60 << r61
1208
+ if r61
1209
+ r62 = _nt_number
1210
+ s60 << r62
1211
+ if r62
1212
+ if has_terminal?(':', false, index)
1213
+ r63 = instantiate_node(SyntaxNode,input, index...(index + 1))
1214
+ @index += 1
1215
+ else
1216
+ terminal_parse_failure(':')
1217
+ r63 = nil
1218
+ end
1219
+ s60 << r63
1220
+ if r63
1221
+ r64 = _nt_number
1222
+ s60 << r64
1223
+ if r64
1224
+ if has_terminal?(':', false, index)
1225
+ r65 = instantiate_node(SyntaxNode,input, index...(index + 1))
1226
+ @index += 1
1227
+ else
1228
+ terminal_parse_failure(':')
1229
+ r65 = nil
1230
+ end
1231
+ s60 << r65
1232
+ if r65
1233
+ r66 = _nt_number
1234
+ s60 << r66
1235
+ if r66
1236
+ if has_terminal?(']', false, index)
1237
+ r67 = instantiate_node(SyntaxNode,input, index...(index + 1))
1238
+ @index += 1
1239
+ else
1240
+ terminal_parse_failure(']')
1241
+ r67 = nil
1242
+ end
1243
+ s60 << r67
1244
+ end
1245
+ end
1246
+ end
1247
+ end
1248
+ end
1249
+ end
1250
+ if s60.last
1251
+ r60 = instantiate_node(JSONPath::Nodes::SliceNode,input, i60...index, s60)
1252
+ r60.extend(Child13)
1253
+ else
1254
+ @index = i60
1255
+ r60 = nil
1256
+ end
1257
+ if r60
1258
+ r0 = r60
1259
+ else
1260
+ i68, s68 = index, []
1261
+ r69 = _nt_lower
1262
+ s68 << r69
1263
+ if r69
1264
+ if has_terminal?('[', false, index)
1265
+ r70 = instantiate_node(SyntaxNode,input, index...(index + 1))
1266
+ @index += 1
1267
+ else
1268
+ terminal_parse_failure('[')
1269
+ r70 = nil
1270
+ end
1271
+ s68 << r70
1272
+ if r70
1273
+ r71 = _nt_number
1274
+ s68 << r71
1275
+ if r71
1276
+ if has_terminal?(':', false, index)
1277
+ r72 = instantiate_node(SyntaxNode,input, index...(index + 1))
1278
+ @index += 1
1279
+ else
1280
+ terminal_parse_failure(':')
1281
+ r72 = nil
1282
+ end
1283
+ s68 << r72
1284
+ if r72
1285
+ r73 = _nt_number
1286
+ s68 << r73
1287
+ if r73
1288
+ if has_terminal?(':', false, index)
1289
+ r74 = instantiate_node(SyntaxNode,input, index...(index + 1))
1290
+ @index += 1
1291
+ else
1292
+ terminal_parse_failure(':')
1293
+ r74 = nil
1294
+ end
1295
+ s68 << r74
1296
+ if r74
1297
+ r75 = _nt_number
1298
+ s68 << r75
1299
+ if r75
1300
+ if has_terminal?(']', false, index)
1301
+ r76 = instantiate_node(SyntaxNode,input, index...(index + 1))
1302
+ @index += 1
1303
+ else
1304
+ terminal_parse_failure(']')
1305
+ r76 = nil
1306
+ end
1307
+ s68 << r76
1308
+ end
1309
+ end
1310
+ end
1311
+ end
1312
+ end
1313
+ end
1314
+ end
1315
+ if s68.last
1316
+ r68 = instantiate_node(JSONPath::Nodes::SliceNode,input, i68...index, s68)
1317
+ r68.extend(Child14)
1318
+ else
1319
+ @index = i68
1320
+ r68 = nil
1321
+ end
1322
+ if r68
1323
+ r0 = r68
1324
+ else
1325
+ i77, s77 = index, []
1326
+ if has_terminal?('[', false, index)
1327
+ r78 = instantiate_node(SyntaxNode,input, index...(index + 1))
1328
+ @index += 1
1329
+ else
1330
+ terminal_parse_failure('[')
1331
+ r78 = nil
1332
+ end
1333
+ s77 << r78
1334
+ if r78
1335
+ r79 = _nt_number
1336
+ s77 << r79
1337
+ if r79
1338
+ if has_terminal?('::', false, index)
1339
+ r80 = instantiate_node(SyntaxNode,input, index...(index + 2))
1340
+ @index += 2
1341
+ else
1342
+ terminal_parse_failure('::')
1343
+ r80 = nil
1344
+ end
1345
+ s77 << r80
1346
+ if r80
1347
+ r81 = _nt_number
1348
+ s77 << r81
1349
+ if r81
1350
+ if has_terminal?(']', false, index)
1351
+ r82 = instantiate_node(SyntaxNode,input, index...(index + 1))
1352
+ @index += 1
1353
+ else
1354
+ terminal_parse_failure(']')
1355
+ r82 = nil
1356
+ end
1357
+ s77 << r82
1358
+ end
1359
+ end
1360
+ end
1361
+ end
1362
+ if s77.last
1363
+ r77 = instantiate_node(JSONPath::Nodes::SliceNode,input, i77...index, s77)
1364
+ r77.extend(Child15)
1365
+ else
1366
+ @index = i77
1367
+ r77 = nil
1368
+ end
1369
+ if r77
1370
+ r0 = r77
1371
+ else
1372
+ i83, s83 = index, []
1373
+ r84 = _nt_lower
1374
+ s83 << r84
1375
+ if r84
1376
+ if has_terminal?('[', false, index)
1377
+ r85 = instantiate_node(SyntaxNode,input, index...(index + 1))
1378
+ @index += 1
1379
+ else
1380
+ terminal_parse_failure('[')
1381
+ r85 = nil
1382
+ end
1383
+ s83 << r85
1384
+ if r85
1385
+ r86 = _nt_number
1386
+ s83 << r86
1387
+ if r86
1388
+ if has_terminal?('::', false, index)
1389
+ r87 = instantiate_node(SyntaxNode,input, index...(index + 2))
1390
+ @index += 2
1391
+ else
1392
+ terminal_parse_failure('::')
1393
+ r87 = nil
1394
+ end
1395
+ s83 << r87
1396
+ if r87
1397
+ r88 = _nt_number
1398
+ s83 << r88
1399
+ if r88
1400
+ if has_terminal?(']', false, index)
1401
+ r89 = instantiate_node(SyntaxNode,input, index...(index + 1))
1402
+ @index += 1
1403
+ else
1404
+ terminal_parse_failure(']')
1405
+ r89 = nil
1406
+ end
1407
+ s83 << r89
1408
+ end
1409
+ end
1410
+ end
1411
+ end
1412
+ end
1413
+ if s83.last
1414
+ r83 = instantiate_node(JSONPath::Nodes::SliceNode,input, i83...index, s83)
1415
+ r83.extend(Child16)
1416
+ else
1417
+ @index = i83
1418
+ r83 = nil
1419
+ end
1420
+ if r83
1421
+ r0 = r83
1422
+ else
1423
+ i90, s90 = index, []
1424
+ if has_terminal?('[(', false, index)
1425
+ r91 = instantiate_node(SyntaxNode,input, index...(index + 2))
1426
+ @index += 2
1427
+ else
1428
+ terminal_parse_failure('[(')
1429
+ r91 = nil
1430
+ end
1431
+ s90 << r91
1432
+ if r91
1433
+ s92, i92 = [], index
1434
+ loop do
1435
+ i93, s93 = index, []
1436
+ i94 = index
1437
+ if has_terminal?(')]', false, index)
1438
+ r95 = instantiate_node(SyntaxNode,input, index...(index + 2))
1439
+ @index += 2
1440
+ else
1441
+ terminal_parse_failure(')]')
1442
+ r95 = nil
1443
+ end
1444
+ if r95
1445
+ r94 = nil
1446
+ else
1447
+ @index = i94
1448
+ r94 = instantiate_node(SyntaxNode,input, index...index)
1449
+ end
1450
+ s93 << r94
1451
+ if r94
1452
+ if index < input_length
1453
+ r96 = instantiate_node(SyntaxNode,input, index...(index + 1))
1454
+ @index += 1
1455
+ else
1456
+ terminal_parse_failure("any character")
1457
+ r96 = nil
1458
+ end
1459
+ s93 << r96
1460
+ end
1461
+ if s93.last
1462
+ r93 = instantiate_node(SyntaxNode,input, i93...index, s93)
1463
+ r93.extend(Child17)
1464
+ else
1465
+ @index = i93
1466
+ r93 = nil
1467
+ end
1468
+ if r93
1469
+ s92 << r93
1470
+ else
1471
+ break
1472
+ end
1473
+ end
1474
+ if s92.empty?
1475
+ @index = i92
1476
+ r92 = nil
1477
+ else
1478
+ r92 = instantiate_node(SyntaxNode,input, i92...index, s92)
1479
+ end
1480
+ s90 << r92
1481
+ if r92
1482
+ if has_terminal?(')]', false, index)
1483
+ r97 = instantiate_node(SyntaxNode,input, index...(index + 2))
1484
+ @index += 2
1485
+ else
1486
+ terminal_parse_failure(')]')
1487
+ r97 = nil
1488
+ end
1489
+ s90 << r97
1490
+ end
1491
+ end
1492
+ if s90.last
1493
+ r90 = instantiate_node(JSONPath::Nodes::ExprNode,input, i90...index, s90)
1494
+ r90.extend(Child18)
1495
+ else
1496
+ @index = i90
1497
+ r90 = nil
1498
+ end
1499
+ if r90
1500
+ r0 = r90
1501
+ else
1502
+ i98, s98 = index, []
1503
+ r99 = _nt_lower
1504
+ s98 << r99
1505
+ if r99
1506
+ if has_terminal?('[(', false, index)
1507
+ r100 = instantiate_node(SyntaxNode,input, index...(index + 2))
1508
+ @index += 2
1509
+ else
1510
+ terminal_parse_failure('[(')
1511
+ r100 = nil
1512
+ end
1513
+ s98 << r100
1514
+ if r100
1515
+ s101, i101 = [], index
1516
+ loop do
1517
+ i102, s102 = index, []
1518
+ i103 = index
1519
+ if has_terminal?(')]', false, index)
1520
+ r104 = instantiate_node(SyntaxNode,input, index...(index + 2))
1521
+ @index += 2
1522
+ else
1523
+ terminal_parse_failure(')]')
1524
+ r104 = nil
1525
+ end
1526
+ if r104
1527
+ r103 = nil
1528
+ else
1529
+ @index = i103
1530
+ r103 = instantiate_node(SyntaxNode,input, index...index)
1531
+ end
1532
+ s102 << r103
1533
+ if r103
1534
+ if index < input_length
1535
+ r105 = instantiate_node(SyntaxNode,input, index...(index + 1))
1536
+ @index += 1
1537
+ else
1538
+ terminal_parse_failure("any character")
1539
+ r105 = nil
1540
+ end
1541
+ s102 << r105
1542
+ end
1543
+ if s102.last
1544
+ r102 = instantiate_node(SyntaxNode,input, i102...index, s102)
1545
+ r102.extend(Child19)
1546
+ else
1547
+ @index = i102
1548
+ r102 = nil
1549
+ end
1550
+ if r102
1551
+ s101 << r102
1552
+ else
1553
+ break
1554
+ end
1555
+ end
1556
+ if s101.empty?
1557
+ @index = i101
1558
+ r101 = nil
1559
+ else
1560
+ r101 = instantiate_node(SyntaxNode,input, i101...index, s101)
1561
+ end
1562
+ s98 << r101
1563
+ if r101
1564
+ if has_terminal?(')]', false, index)
1565
+ r106 = instantiate_node(SyntaxNode,input, index...(index + 2))
1566
+ @index += 2
1567
+ else
1568
+ terminal_parse_failure(')]')
1569
+ r106 = nil
1570
+ end
1571
+ s98 << r106
1572
+ end
1573
+ end
1574
+ end
1575
+ if s98.last
1576
+ r98 = instantiate_node(JSONPath::Nodes::ExprNode,input, i98...index, s98)
1577
+ r98.extend(Child20)
1578
+ else
1579
+ @index = i98
1580
+ r98 = nil
1581
+ end
1582
+ if r98
1583
+ r0 = r98
1584
+ else
1585
+ i107, s107 = index, []
1586
+ if has_terminal?('[?(', false, index)
1587
+ r108 = instantiate_node(SyntaxNode,input, index...(index + 3))
1588
+ @index += 3
1589
+ else
1590
+ terminal_parse_failure('[?(')
1591
+ r108 = nil
1592
+ end
1593
+ s107 << r108
1594
+ if r108
1595
+ s109, i109 = [], index
1596
+ loop do
1597
+ i110, s110 = index, []
1598
+ i111 = index
1599
+ if has_terminal?(')]', false, index)
1600
+ r112 = instantiate_node(SyntaxNode,input, index...(index + 2))
1601
+ @index += 2
1602
+ else
1603
+ terminal_parse_failure(')]')
1604
+ r112 = nil
1605
+ end
1606
+ if r112
1607
+ r111 = nil
1608
+ else
1609
+ @index = i111
1610
+ r111 = instantiate_node(SyntaxNode,input, index...index)
1611
+ end
1612
+ s110 << r111
1613
+ if r111
1614
+ if index < input_length
1615
+ r113 = instantiate_node(SyntaxNode,input, index...(index + 1))
1616
+ @index += 1
1617
+ else
1618
+ terminal_parse_failure("any character")
1619
+ r113 = nil
1620
+ end
1621
+ s110 << r113
1622
+ end
1623
+ if s110.last
1624
+ r110 = instantiate_node(SyntaxNode,input, i110...index, s110)
1625
+ r110.extend(Child21)
1626
+ else
1627
+ @index = i110
1628
+ r110 = nil
1629
+ end
1630
+ if r110
1631
+ s109 << r110
1632
+ else
1633
+ break
1634
+ end
1635
+ end
1636
+ if s109.empty?
1637
+ @index = i109
1638
+ r109 = nil
1639
+ else
1640
+ r109 = instantiate_node(SyntaxNode,input, i109...index, s109)
1641
+ end
1642
+ s107 << r109
1643
+ if r109
1644
+ if has_terminal?(')]', false, index)
1645
+ r114 = instantiate_node(SyntaxNode,input, index...(index + 2))
1646
+ @index += 2
1647
+ else
1648
+ terminal_parse_failure(')]')
1649
+ r114 = nil
1650
+ end
1651
+ s107 << r114
1652
+ end
1653
+ end
1654
+ if s107.last
1655
+ r107 = instantiate_node(JSONPath::Nodes::FilterNode,input, i107...index, s107)
1656
+ r107.extend(Child22)
1657
+ else
1658
+ @index = i107
1659
+ r107 = nil
1660
+ end
1661
+ if r107
1662
+ r0 = r107
1663
+ else
1664
+ i115, s115 = index, []
1665
+ r116 = _nt_lower
1666
+ s115 << r116
1667
+ if r116
1668
+ if has_terminal?('[?(', false, index)
1669
+ r117 = instantiate_node(SyntaxNode,input, index...(index + 3))
1670
+ @index += 3
1671
+ else
1672
+ terminal_parse_failure('[?(')
1673
+ r117 = nil
1674
+ end
1675
+ s115 << r117
1676
+ if r117
1677
+ s118, i118 = [], index
1678
+ loop do
1679
+ i119, s119 = index, []
1680
+ i120 = index
1681
+ if has_terminal?(')]', false, index)
1682
+ r121 = instantiate_node(SyntaxNode,input, index...(index + 2))
1683
+ @index += 2
1684
+ else
1685
+ terminal_parse_failure(')]')
1686
+ r121 = nil
1687
+ end
1688
+ if r121
1689
+ r120 = nil
1690
+ else
1691
+ @index = i120
1692
+ r120 = instantiate_node(SyntaxNode,input, index...index)
1693
+ end
1694
+ s119 << r120
1695
+ if r120
1696
+ if index < input_length
1697
+ r122 = instantiate_node(SyntaxNode,input, index...(index + 1))
1698
+ @index += 1
1699
+ else
1700
+ terminal_parse_failure("any character")
1701
+ r122 = nil
1702
+ end
1703
+ s119 << r122
1704
+ end
1705
+ if s119.last
1706
+ r119 = instantiate_node(SyntaxNode,input, i119...index, s119)
1707
+ r119.extend(Child23)
1708
+ else
1709
+ @index = i119
1710
+ r119 = nil
1711
+ end
1712
+ if r119
1713
+ s118 << r119
1714
+ else
1715
+ break
1716
+ end
1717
+ end
1718
+ if s118.empty?
1719
+ @index = i118
1720
+ r118 = nil
1721
+ else
1722
+ r118 = instantiate_node(SyntaxNode,input, i118...index, s118)
1723
+ end
1724
+ s115 << r118
1725
+ if r118
1726
+ if has_terminal?(')]', false, index)
1727
+ r123 = instantiate_node(SyntaxNode,input, index...(index + 2))
1728
+ @index += 2
1729
+ else
1730
+ terminal_parse_failure(')]')
1731
+ r123 = nil
1732
+ end
1733
+ s115 << r123
1734
+ end
1735
+ end
1736
+ end
1737
+ if s115.last
1738
+ r115 = instantiate_node(JSONPath::Nodes::FilterNode,input, i115...index, s115)
1739
+ r115.extend(Child24)
1740
+ else
1741
+ @index = i115
1742
+ r115 = nil
1743
+ end
1744
+ if r115
1745
+ r0 = r115
1746
+ else
1747
+ i124, s124 = index, []
1748
+ if has_terminal?('[', false, index)
1749
+ r125 = instantiate_node(SyntaxNode,input, index...(index + 1))
1750
+ @index += 1
1751
+ else
1752
+ terminal_parse_failure('[')
1753
+ r125 = nil
1754
+ end
1755
+ s124 << r125
1756
+ if r125
1757
+ r126 = _nt_word_list
1758
+ s124 << r126
1759
+ if r126
1760
+ if has_terminal?(']', false, index)
1761
+ r127 = instantiate_node(SyntaxNode,input, index...(index + 1))
1762
+ @index += 1
1763
+ else
1764
+ terminal_parse_failure(']')
1765
+ r127 = nil
1766
+ end
1767
+ s124 << r127
1768
+ end
1769
+ end
1770
+ if s124.last
1771
+ r124 = instantiate_node(JSONPath::Nodes::KeyNode,input, i124...index, s124)
1772
+ r124.extend(Child25)
1773
+ else
1774
+ @index = i124
1775
+ r124 = nil
1776
+ end
1777
+ if r124
1778
+ r0 = r124
1779
+ else
1780
+ i128, s128 = index, []
1781
+ r129 = _nt_lower
1782
+ s128 << r129
1783
+ if r129
1784
+ if has_terminal?('[', false, index)
1785
+ r130 = instantiate_node(SyntaxNode,input, index...(index + 1))
1786
+ @index += 1
1787
+ else
1788
+ terminal_parse_failure('[')
1789
+ r130 = nil
1790
+ end
1791
+ s128 << r130
1792
+ if r130
1793
+ r131 = _nt_word_list
1794
+ s128 << r131
1795
+ if r131
1796
+ if has_terminal?(']', false, index)
1797
+ r132 = instantiate_node(SyntaxNode,input, index...(index + 1))
1798
+ @index += 1
1799
+ else
1800
+ terminal_parse_failure(']')
1801
+ r132 = nil
1802
+ end
1803
+ s128 << r132
1804
+ end
1805
+ end
1806
+ end
1807
+ if s128.last
1808
+ r128 = instantiate_node(JSONPath::Nodes::KeyNode,input, i128...index, s128)
1809
+ r128.extend(Child26)
1810
+ else
1811
+ @index = i128
1812
+ r128 = nil
1813
+ end
1814
+ if r128
1815
+ r0 = r128
1816
+ else
1817
+ @index = i0
1818
+ r0 = nil
1819
+ end
1820
+ end
1821
+ end
1822
+ end
1823
+ end
1824
+ end
1825
+ end
1826
+ end
1827
+ end
1828
+ end
1829
+ end
1830
+ end
1831
+ end
1832
+ end
1833
+ end
1834
+ end
1835
+ end
1836
+ end
1837
+ end
1838
+ end
1839
+ end
1840
+
1841
+ node_cache[:child][start_index] = r0
1842
+
1843
+ r0
1844
+ end
1845
+
1846
+ def _nt_bareword
1847
+ start_index = index
1848
+ if node_cache[:bareword].has_key?(index)
1849
+ cached = node_cache[:bareword][index]
1850
+ if cached
1851
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1852
+ @index = cached.interval.end
1853
+ end
1854
+ return cached
1855
+ end
1856
+
1857
+ s0, i0 = [], index
1858
+ loop do
1859
+ if has_terminal?('\G[_a-zA-Z0-9]', true, index)
1860
+ r1 = true
1861
+ @index += 1
1862
+ else
1863
+ r1 = nil
1864
+ end
1865
+ if r1
1866
+ s0 << r1
1867
+ else
1868
+ break
1869
+ end
1870
+ end
1871
+ if s0.empty?
1872
+ @index = i0
1873
+ r0 = nil
1874
+ else
1875
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1876
+ end
1877
+
1878
+ node_cache[:bareword][start_index] = r0
1879
+
1880
+ r0
1881
+ end
1882
+
1883
+ end
1884
+
1885
+ class JSONPathGrammarParser < Treetop::Runtime::CompiledParser
1886
+ include JSONPathGrammar
1887
+ end
1888
+