bruce-jsonpath 0.8.0

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