riffraff_jsonpath 0.8.2

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