csv_parser 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1342 @@
1
+ # Autogenerated from a Treetop grammar. Edits may be lost.
2
+
3
+
4
+ module CsvParser
5
+ module Csv
6
+ include Treetop::Runtime
7
+
8
+ def root
9
+ @root ||= :records
10
+ end
11
+
12
+ include ParserExtensions
13
+
14
+ def _nt_records
15
+ start_index = index
16
+ if node_cache[:records].has_key?(index)
17
+ cached = node_cache[:records][index]
18
+ if cached
19
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
20
+ @index = cached.interval.end
21
+ end
22
+ return cached
23
+ end
24
+
25
+ i0 = index
26
+ r1 = _nt_non_empty_records
27
+ if r1
28
+ r0 = r1
29
+ else
30
+ r2 = _nt_empty_records
31
+ if r2
32
+ r0 = r2
33
+ else
34
+ @index = i0
35
+ r0 = nil
36
+ end
37
+ end
38
+
39
+ node_cache[:records][start_index] = r0
40
+
41
+ r0
42
+ end
43
+
44
+ module NonEmptyRecords0
45
+ def first_record
46
+ elements[0]
47
+ end
48
+
49
+ def other_records
50
+ elements[1]
51
+ end
52
+ end
53
+
54
+ module NonEmptyRecords1
55
+ def value
56
+ arr = [first_record.value]
57
+ rest = other_records.value
58
+ if rest
59
+ arr.push(*rest)
60
+ end
61
+ arr
62
+ end
63
+ end
64
+
65
+ def _nt_non_empty_records
66
+ start_index = index
67
+ if node_cache[:non_empty_records].has_key?(index)
68
+ cached = node_cache[:non_empty_records][index]
69
+ if cached
70
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
71
+ @index = cached.interval.end
72
+ end
73
+ return cached
74
+ end
75
+
76
+ i0, s0 = index, []
77
+ r1 = _nt_first_record
78
+ s0 << r1
79
+ if r1
80
+ r2 = _nt_other_records
81
+ s0 << r2
82
+ end
83
+ if s0.last
84
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
85
+ r0.extend(NonEmptyRecords0)
86
+ r0.extend(NonEmptyRecords1)
87
+ else
88
+ @index = i0
89
+ r0 = nil
90
+ end
91
+
92
+ node_cache[:non_empty_records][start_index] = r0
93
+
94
+ r0
95
+ end
96
+
97
+ module EmptyRecords0
98
+ def value
99
+ []
100
+ end
101
+ end
102
+
103
+ def _nt_empty_records
104
+ start_index = index
105
+ if node_cache[:empty_records].has_key?(index)
106
+ cached = node_cache[:empty_records][index]
107
+ if cached
108
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
109
+ @index = cached.interval.end
110
+ end
111
+ return cached
112
+ end
113
+
114
+ if has_terminal?('', false, index)
115
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 0))
116
+ r0.extend(EmptyRecords0)
117
+ @index += 0
118
+ else
119
+ terminal_parse_failure('')
120
+ r0 = nil
121
+ end
122
+
123
+ node_cache[:empty_records][start_index] = r0
124
+
125
+ r0
126
+ end
127
+
128
+ module FirstRecord0
129
+ def non_empty_record
130
+ elements[2]
131
+ end
132
+
133
+ end
134
+
135
+ module FirstRecord1
136
+ def value
137
+ non_empty_record.value
138
+ end
139
+ end
140
+
141
+ def _nt_first_record
142
+ start_index = index
143
+ if node_cache[:first_record].has_key?(index)
144
+ cached = node_cache[:first_record][index]
145
+ if cached
146
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
147
+ @index = cached.interval.end
148
+ end
149
+ return cached
150
+ end
151
+
152
+ i0, s0 = index, []
153
+ if has_terminal?('', false, index)
154
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 0))
155
+ @index += 0
156
+ else
157
+ terminal_parse_failure('')
158
+ r1 = nil
159
+ end
160
+ s0 << r1
161
+ if r1
162
+ i2 = index
163
+ r3 = lambda { |s| @first_record = true; true }.call(s0)
164
+ if r3
165
+ @index = i2
166
+ r2 = instantiate_node(SyntaxNode,input, index...index)
167
+ else
168
+ r2 = nil
169
+ end
170
+ s0 << r2
171
+ if r2
172
+ r4 = _nt_non_empty_record
173
+ s0 << r4
174
+ if r4
175
+ i5 = index
176
+ r6 = lambda { |s| @first_record_length = @record_length; true }.call(s0)
177
+ if r6
178
+ @index = i5
179
+ r5 = instantiate_node(SyntaxNode,input, index...index)
180
+ else
181
+ r5 = nil
182
+ end
183
+ s0 << r5
184
+ end
185
+ end
186
+ end
187
+ if s0.last
188
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
189
+ r0.extend(FirstRecord0)
190
+ r0.extend(FirstRecord1)
191
+ else
192
+ @index = i0
193
+ r0 = nil
194
+ end
195
+
196
+ node_cache[:first_record][start_index] = r0
197
+
198
+ r0
199
+ end
200
+
201
+ module OtherRecords0
202
+ def empty_record
203
+ elements[0]
204
+ end
205
+
206
+ def record_sep
207
+ elements[1]
208
+ end
209
+ end
210
+
211
+ module OtherRecords1
212
+ def record_sep
213
+ elements[0]
214
+ end
215
+
216
+ def non_empty_record
217
+ elements[2]
218
+ end
219
+ end
220
+
221
+ module OtherRecords2
222
+ def record_sep
223
+ elements[0]
224
+ end
225
+
226
+ def empty_record
227
+ elements[1]
228
+ end
229
+ end
230
+
231
+ module OtherRecords3
232
+ end
233
+
234
+ module OtherRecords4
235
+ end
236
+
237
+ module OtherRecords5
238
+ def value
239
+ val = elements[1].elements.collect { |elt| elt.non_empty_record.value }
240
+ val.empty? ? nil : val
241
+ end
242
+ end
243
+
244
+ module OtherRecords6
245
+ def record_sep
246
+ elements[0]
247
+ end
248
+
249
+ def record
250
+ elements[1]
251
+ end
252
+ end
253
+
254
+ module OtherRecords7
255
+ end
256
+
257
+ module OtherRecords8
258
+ def value
259
+ val = elements[1].elements.collect { |elt| elt.record.value }
260
+ val.empty? ? nil : val
261
+ end
262
+ end
263
+
264
+ module OtherRecords9
265
+ end
266
+
267
+ module OtherRecords10
268
+ def value
269
+ elements[2].value
270
+ end
271
+ end
272
+
273
+ def _nt_other_records
274
+ start_index = index
275
+ if node_cache[:other_records].has_key?(index)
276
+ cached = node_cache[:other_records][index]
277
+ if cached
278
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
279
+ @index = cached.interval.end
280
+ end
281
+ return cached
282
+ end
283
+
284
+ i0, s0 = index, []
285
+ if has_terminal?('', false, index)
286
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 0))
287
+ @index += 0
288
+ else
289
+ terminal_parse_failure('')
290
+ r1 = nil
291
+ end
292
+ s0 << r1
293
+ if r1
294
+ i2 = index
295
+ r3 = lambda { |s| @first_record = false; true }.call(s0)
296
+ if r3
297
+ @index = i2
298
+ r2 = instantiate_node(SyntaxNode,input, index...index)
299
+ else
300
+ r2 = nil
301
+ end
302
+ s0 << r2
303
+ if r2
304
+ i4 = index
305
+ i5, s5 = index, []
306
+ i6 = index
307
+ r7 = lambda { |s| skip_empty_record? }.call(s5)
308
+ if r7
309
+ @index = i6
310
+ r6 = instantiate_node(SyntaxNode,input, index...index)
311
+ else
312
+ r6 = nil
313
+ end
314
+ s5 << r6
315
+ if r6
316
+ s8, i8 = [], index
317
+ loop do
318
+ i9, s9 = index, []
319
+ r10 = _nt_record_sep
320
+ s9 << r10
321
+ if r10
322
+ s11, i11 = [], index
323
+ loop do
324
+ i12, s12 = index, []
325
+ r13 = _nt_empty_record
326
+ s12 << r13
327
+ if r13
328
+ r14 = _nt_record_sep
329
+ s12 << r14
330
+ end
331
+ if s12.last
332
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
333
+ r12.extend(OtherRecords0)
334
+ else
335
+ @index = i12
336
+ r12 = nil
337
+ end
338
+ if r12
339
+ s11 << r12
340
+ else
341
+ break
342
+ end
343
+ end
344
+ r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
345
+ s9 << r11
346
+ if r11
347
+ r15 = _nt_non_empty_record
348
+ s9 << r15
349
+ end
350
+ end
351
+ if s9.last
352
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
353
+ r9.extend(OtherRecords1)
354
+ else
355
+ @index = i9
356
+ r9 = nil
357
+ end
358
+ if r9
359
+ s8 << r9
360
+ else
361
+ break
362
+ end
363
+ end
364
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
365
+ s5 << r8
366
+ if r8
367
+ i17, s17 = index, []
368
+ i18 = index
369
+ r19 = lambda { |s| skip_empty_record? }.call(s17)
370
+ if r19
371
+ @index = i18
372
+ r18 = instantiate_node(SyntaxNode,input, index...index)
373
+ else
374
+ r18 = nil
375
+ end
376
+ s17 << r18
377
+ if r18
378
+ s20, i20 = [], index
379
+ loop do
380
+ i21, s21 = index, []
381
+ r22 = _nt_record_sep
382
+ s21 << r22
383
+ if r22
384
+ r23 = _nt_empty_record
385
+ s21 << r23
386
+ end
387
+ if s21.last
388
+ r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
389
+ r21.extend(OtherRecords2)
390
+ else
391
+ @index = i21
392
+ r21 = nil
393
+ end
394
+ if r21
395
+ s20 << r21
396
+ else
397
+ break
398
+ end
399
+ end
400
+ if s20.empty?
401
+ @index = i20
402
+ r20 = nil
403
+ else
404
+ r20 = instantiate_node(SyntaxNode,input, i20...index, s20)
405
+ end
406
+ s17 << r20
407
+ end
408
+ if s17.last
409
+ r17 = instantiate_node(SyntaxNode,input, i17...index, s17)
410
+ r17.extend(OtherRecords3)
411
+ else
412
+ @index = i17
413
+ r17 = nil
414
+ end
415
+ if r17
416
+ r16 = r17
417
+ else
418
+ r16 = instantiate_node(SyntaxNode,input, index...index)
419
+ end
420
+ s5 << r16
421
+ end
422
+ end
423
+ if s5.last
424
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
425
+ r5.extend(OtherRecords4)
426
+ r5.extend(OtherRecords5)
427
+ else
428
+ @index = i5
429
+ r5 = nil
430
+ end
431
+ if r5
432
+ r4 = r5
433
+ else
434
+ i24, s24 = index, []
435
+ i25 = index
436
+ r26 = lambda { |s| !skip_empty_record? }.call(s24)
437
+ if r26
438
+ @index = i25
439
+ r25 = instantiate_node(SyntaxNode,input, index...index)
440
+ else
441
+ r25 = nil
442
+ end
443
+ s24 << r25
444
+ if r25
445
+ s27, i27 = [], index
446
+ loop do
447
+ i28, s28 = index, []
448
+ r29 = _nt_record_sep
449
+ s28 << r29
450
+ if r29
451
+ r30 = _nt_record
452
+ s28 << r30
453
+ end
454
+ if s28.last
455
+ r28 = instantiate_node(SyntaxNode,input, i28...index, s28)
456
+ r28.extend(OtherRecords6)
457
+ else
458
+ @index = i28
459
+ r28 = nil
460
+ end
461
+ if r28
462
+ s27 << r28
463
+ else
464
+ break
465
+ end
466
+ end
467
+ r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
468
+ s24 << r27
469
+ end
470
+ if s24.last
471
+ r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
472
+ r24.extend(OtherRecords7)
473
+ r24.extend(OtherRecords8)
474
+ else
475
+ @index = i24
476
+ r24 = nil
477
+ end
478
+ if r24
479
+ r4 = r24
480
+ else
481
+ @index = i4
482
+ r4 = nil
483
+ end
484
+ end
485
+ s0 << r4
486
+ end
487
+ end
488
+ if s0.last
489
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
490
+ r0.extend(OtherRecords9)
491
+ r0.extend(OtherRecords10)
492
+ else
493
+ @index = i0
494
+ r0 = nil
495
+ end
496
+
497
+ node_cache[:other_records][start_index] = r0
498
+
499
+ r0
500
+ end
501
+
502
+ def _nt_record
503
+ start_index = index
504
+ if node_cache[:record].has_key?(index)
505
+ cached = node_cache[:record][index]
506
+ if cached
507
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
508
+ @index = cached.interval.end
509
+ end
510
+ return cached
511
+ end
512
+
513
+ i0 = index
514
+ r1 = _nt_non_empty_record
515
+ if r1
516
+ r0 = r1
517
+ else
518
+ r2 = _nt_empty_record
519
+ if r2
520
+ r0 = r2
521
+ else
522
+ @index = i0
523
+ r0 = nil
524
+ end
525
+ end
526
+
527
+ node_cache[:record][start_index] = r0
528
+
529
+ r0
530
+ end
531
+
532
+ module NonEmptyRecord0
533
+ def field_sep
534
+ elements[1]
535
+ end
536
+
537
+ def field
538
+ elements[2]
539
+ end
540
+
541
+ end
542
+
543
+ module NonEmptyRecord1
544
+ def first
545
+ elements[0]
546
+ end
547
+
548
+ def rest
549
+ elements[2]
550
+ end
551
+
552
+ end
553
+
554
+ module NonEmptyRecord2
555
+ def value
556
+ arr = [first.value]
557
+ rest.elements.each do |elt|
558
+ arr << elt.field.value
559
+ end
560
+ arr
561
+ end
562
+ end
563
+
564
+ def _nt_non_empty_record
565
+ start_index = index
566
+ if node_cache[:non_empty_record].has_key?(index)
567
+ cached = node_cache[:non_empty_record][index]
568
+ if cached
569
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
570
+ @index = cached.interval.end
571
+ end
572
+ return cached
573
+ end
574
+
575
+ i0, s0 = index, []
576
+ r1 = _nt_field
577
+ s0 << r1
578
+ if r1
579
+ i2 = index
580
+ r3 = lambda { |s| @record_length = 1; @warning = nil; true }.call(s0)
581
+ if r3
582
+ @index = i2
583
+ r2 = instantiate_node(SyntaxNode,input, index...index)
584
+ else
585
+ r2 = nil
586
+ end
587
+ s0 << r2
588
+ if r2
589
+ s4, i4 = [], index
590
+ loop do
591
+ i5, s5 = index, []
592
+ i6 = index
593
+ r7 = lambda { |s|
594
+ if @first_record || @record_length < @first_record_length
595
+ true
596
+ else
597
+ if allow_uneven_records?
598
+ @warning ||= [:extra_fields, input.line_of(index + 1), input.column_of(index + 1)]
599
+ true
600
+ else
601
+ @failure_type = :extra_fields
602
+ false
603
+ end
604
+ end
605
+ }.call(s5)
606
+ if r7
607
+ @index = i6
608
+ r6 = instantiate_node(SyntaxNode,input, index...index)
609
+ else
610
+ r6 = nil
611
+ end
612
+ s5 << r6
613
+ if r6
614
+ r8 = _nt_field_sep
615
+ s5 << r8
616
+ if r8
617
+ r9 = _nt_field
618
+ s5 << r9
619
+ if r9
620
+ i10 = index
621
+ r11 = lambda { |s| @record_length += 1; true }.call(s5)
622
+ if r11
623
+ @index = i10
624
+ r10 = instantiate_node(SyntaxNode,input, index...index)
625
+ else
626
+ r10 = nil
627
+ end
628
+ s5 << r10
629
+ end
630
+ end
631
+ end
632
+ if s5.last
633
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
634
+ r5.extend(NonEmptyRecord0)
635
+ else
636
+ @index = i5
637
+ r5 = nil
638
+ end
639
+ if r5
640
+ s4 << r5
641
+ else
642
+ break
643
+ end
644
+ end
645
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
646
+ s0 << r4
647
+ if r4
648
+ i12 = index
649
+ r13 = lambda { |s|
650
+ if @first_record || @record_length >= @first_record_length
651
+ if @warning
652
+ warnings << @warning
653
+ end
654
+ true
655
+ else
656
+ if allow_uneven_records?
657
+ warnings << [:missing_fields, input.line_of(index), input.column_of(index)]
658
+ true
659
+ else
660
+ @failure_type = :missing_fields
661
+ false
662
+ end
663
+ end
664
+ }.call(s0)
665
+ if r13
666
+ @index = i12
667
+ r12 = instantiate_node(SyntaxNode,input, index...index)
668
+ else
669
+ r12 = nil
670
+ end
671
+ s0 << r12
672
+ end
673
+ end
674
+ end
675
+ if s0.last
676
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
677
+ r0.extend(NonEmptyRecord1)
678
+ r0.extend(NonEmptyRecord2)
679
+ else
680
+ @index = i0
681
+ r0 = nil
682
+ end
683
+
684
+ node_cache[:non_empty_record][start_index] = r0
685
+
686
+ r0
687
+ end
688
+
689
+ module EmptyRecord0
690
+ end
691
+
692
+ module EmptyRecord1
693
+ def value
694
+ []
695
+ end
696
+ end
697
+
698
+ def _nt_empty_record
699
+ start_index = index
700
+ if node_cache[:empty_record].has_key?(index)
701
+ cached = node_cache[:empty_record][index]
702
+ if cached
703
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
704
+ @index = cached.interval.end
705
+ end
706
+ return cached
707
+ end
708
+
709
+ i0, s0 = index, []
710
+ if has_terminal?('', false, index)
711
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 0))
712
+ @index += 0
713
+ else
714
+ terminal_parse_failure('')
715
+ r1 = nil
716
+ end
717
+ s0 << r1
718
+ if r1
719
+ i2 = index
720
+ r3 = lambda { |s|
721
+ if allow_empty_record?
722
+ true
723
+ else
724
+ @failure_type = :missing_fields
725
+ false
726
+ end
727
+ }.call(s0)
728
+ if r3
729
+ @index = i2
730
+ r2 = instantiate_node(SyntaxNode,input, index...index)
731
+ else
732
+ r2 = nil
733
+ end
734
+ s0 << r2
735
+ end
736
+ if s0.last
737
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
738
+ r0.extend(EmptyRecord0)
739
+ r0.extend(EmptyRecord1)
740
+ else
741
+ @index = i0
742
+ r0 = nil
743
+ end
744
+
745
+ node_cache[:empty_record][start_index] = r0
746
+
747
+ r0
748
+ end
749
+
750
+ module Field0
751
+ def value
752
+ elements.map(&:text_value).join
753
+ end
754
+ end
755
+
756
+ module Field1
757
+ def value
758
+ elements[1..-2].map(&:text_value).join
759
+ end
760
+ end
761
+
762
+ def _nt_field
763
+ start_index = index
764
+ if node_cache[:field].has_key?(index)
765
+ cached = node_cache[:field][index]
766
+ if cached
767
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
768
+ @index = cached.interval.end
769
+ end
770
+ return cached
771
+ end
772
+
773
+ i0 = index
774
+ r1 = _nt_unquoted_text
775
+ r1.extend(Field0)
776
+ if r1
777
+ r0 = r1
778
+ else
779
+ r2 = _nt_quoted_text
780
+ r2.extend(Field1)
781
+ if r2
782
+ r0 = r2
783
+ else
784
+ @index = i0
785
+ r0 = nil
786
+ end
787
+ end
788
+
789
+ node_cache[:field][start_index] = r0
790
+
791
+ r0
792
+ end
793
+
794
+ module QuotedText0
795
+ end
796
+
797
+ module QuotedText1
798
+ end
799
+
800
+ module QuotedText2
801
+ def quote
802
+ elements[0]
803
+ end
804
+
805
+ end
806
+
807
+ def _nt_quoted_text
808
+ start_index = index
809
+ if node_cache[:quoted_text].has_key?(index)
810
+ cached = node_cache[:quoted_text][index]
811
+ if cached
812
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
813
+ @index = cached.interval.end
814
+ end
815
+ return cached
816
+ end
817
+
818
+ i0, s0 = index, []
819
+ r1 = _nt_quote
820
+ s0 << r1
821
+ if r1
822
+ s2, i2 = [], index
823
+ loop do
824
+ i3, s3 = index, []
825
+ i4 = index
826
+ r5 = _nt_quote
827
+ if r5
828
+ r4 = nil
829
+ else
830
+ @index = i4
831
+ r4 = instantiate_node(SyntaxNode,input, index...index)
832
+ end
833
+ s3 << r4
834
+ if r4
835
+ if index < input_length
836
+ r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
837
+ @index += 1
838
+ else
839
+ terminal_parse_failure("any character")
840
+ r6 = nil
841
+ end
842
+ s3 << r6
843
+ end
844
+ if s3.last
845
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
846
+ r3.extend(QuotedText0)
847
+ else
848
+ @index = i3
849
+ r3 = nil
850
+ end
851
+ if r3
852
+ s2 << r3
853
+ else
854
+ break
855
+ end
856
+ end
857
+ if s2.empty?
858
+ @index = i2
859
+ r2 = nil
860
+ else
861
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
862
+ end
863
+ s0 << r2
864
+ if r2
865
+ i7 = index
866
+ r8 = _nt_quote
867
+ if r8
868
+ r7 = r8
869
+ else
870
+ i9, s9 = index, []
871
+ if has_terminal?('', false, index)
872
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 0))
873
+ @index += 0
874
+ else
875
+ terminal_parse_failure('')
876
+ r10 = nil
877
+ end
878
+ s9 << r10
879
+ if r10
880
+ i11 = index
881
+ r12 = lambda { |s| @failure_type = :missing_quote; @failure_index = start_index; true }.call(s9)
882
+ if r12
883
+ r11 = nil
884
+ else
885
+ @index = i11
886
+ r11 = instantiate_node(SyntaxNode,input, index...index)
887
+ end
888
+ s9 << r11
889
+ end
890
+ if s9.last
891
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
892
+ r9.extend(QuotedText1)
893
+ else
894
+ @index = i9
895
+ r9 = nil
896
+ end
897
+ if r9
898
+ r7 = r9
899
+ else
900
+ @index = i7
901
+ r7 = nil
902
+ end
903
+ end
904
+ s0 << r7
905
+ end
906
+ end
907
+ if s0.last
908
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
909
+ r0.extend(QuotedText2)
910
+ else
911
+ @index = i0
912
+ r0 = nil
913
+ end
914
+
915
+ node_cache[:quoted_text][start_index] = r0
916
+
917
+ r0
918
+ end
919
+
920
+ module UnquotedText0
921
+ end
922
+
923
+ module UnquotedText1
924
+ end
925
+
926
+ def _nt_unquoted_text
927
+ start_index = index
928
+ if node_cache[:unquoted_text].has_key?(index)
929
+ cached = node_cache[:unquoted_text][index]
930
+ if cached
931
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
932
+ @index = cached.interval.end
933
+ end
934
+ return cached
935
+ end
936
+
937
+ s0, i0 = [], index
938
+ loop do
939
+ i1, s1 = index, []
940
+ i2 = index
941
+ r3 = _nt_field_sep
942
+ if r3
943
+ r2 = nil
944
+ else
945
+ @index = i2
946
+ r2 = instantiate_node(SyntaxNode,input, index...index)
947
+ end
948
+ s1 << r2
949
+ if r2
950
+ i4 = index
951
+ r5 = _nt_record_sep
952
+ if r5
953
+ r4 = nil
954
+ else
955
+ @index = i4
956
+ r4 = instantiate_node(SyntaxNode,input, index...index)
957
+ end
958
+ s1 << r4
959
+ if r4
960
+ i6 = index
961
+ i7 = index
962
+ r8 = _nt_quote
963
+ if r8
964
+ r7 = nil
965
+ else
966
+ @index = i7
967
+ r7 = instantiate_node(SyntaxNode,input, index...index)
968
+ end
969
+ if r7
970
+ r6 = r7
971
+ else
972
+ i9, s9 = index, []
973
+ if has_terminal?('', false, index)
974
+ r10 = instantiate_node(SyntaxNode,input, index...(index + 0))
975
+ @index += 0
976
+ else
977
+ terminal_parse_failure('')
978
+ r10 = nil
979
+ end
980
+ s9 << r10
981
+ if r10
982
+ i11 = index
983
+ r12 = lambda { |s| @failure_type = :stray_quote; true }.call(s9)
984
+ if r12
985
+ r11 = nil
986
+ else
987
+ @index = i11
988
+ r11 = instantiate_node(SyntaxNode,input, index...index)
989
+ end
990
+ s9 << r11
991
+ end
992
+ if s9.last
993
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
994
+ r9.extend(UnquotedText0)
995
+ else
996
+ @index = i9
997
+ r9 = nil
998
+ end
999
+ if r9
1000
+ r6 = r9
1001
+ else
1002
+ @index = i6
1003
+ r6 = nil
1004
+ end
1005
+ end
1006
+ s1 << r6
1007
+ if r6
1008
+ if index < input_length
1009
+ r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
1010
+ @index += 1
1011
+ else
1012
+ terminal_parse_failure("any character")
1013
+ r13 = nil
1014
+ end
1015
+ s1 << r13
1016
+ end
1017
+ end
1018
+ end
1019
+ if s1.last
1020
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1021
+ r1.extend(UnquotedText1)
1022
+ else
1023
+ @index = i1
1024
+ r1 = nil
1025
+ end
1026
+ if r1
1027
+ s0 << r1
1028
+ else
1029
+ break
1030
+ end
1031
+ end
1032
+ if s0.empty?
1033
+ @index = i0
1034
+ r0 = nil
1035
+ else
1036
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1037
+ end
1038
+
1039
+ node_cache[:unquoted_text][start_index] = r0
1040
+
1041
+ r0
1042
+ end
1043
+
1044
+ module FieldSep0
1045
+ end
1046
+
1047
+ module FieldSep1
1048
+ end
1049
+
1050
+ def _nt_field_sep
1051
+ start_index = index
1052
+ if node_cache[:field_sep].has_key?(index)
1053
+ cached = node_cache[:field_sep][index]
1054
+ if cached
1055
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1056
+ @index = cached.interval.end
1057
+ end
1058
+ return cached
1059
+ end
1060
+
1061
+ i0, s0 = index, []
1062
+ i1 = index
1063
+ r2 = lambda { |s| @field_sep_index = 0; true }.call(s0)
1064
+ if r2
1065
+ @index = i1
1066
+ r1 = instantiate_node(SyntaxNode,input, index...index)
1067
+ else
1068
+ r1 = nil
1069
+ end
1070
+ s0 << r1
1071
+ if r1
1072
+ s3, i3 = [], index
1073
+ loop do
1074
+ i4, s4 = index, []
1075
+ i5 = index
1076
+ r6 = _nt_record_sep
1077
+ if r6
1078
+ r5 = nil
1079
+ else
1080
+ @index = i5
1081
+ r5 = instantiate_node(SyntaxNode,input, index...index)
1082
+ end
1083
+ s4 << r5
1084
+ if r5
1085
+ i7 = index
1086
+ r8 = _nt_quote
1087
+ if r8
1088
+ r7 = nil
1089
+ else
1090
+ @index = i7
1091
+ r7 = instantiate_node(SyntaxNode,input, index...index)
1092
+ end
1093
+ s4 << r7
1094
+ if r7
1095
+ if index < input_length
1096
+ r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1097
+ @index += 1
1098
+ else
1099
+ terminal_parse_failure("any character")
1100
+ r9 = nil
1101
+ end
1102
+ s4 << r9
1103
+ if r9
1104
+ i10 = index
1105
+ r11 = lambda { |s|
1106
+ if @field_sep_index < field_sep.length &&
1107
+ s[2].text_value == field_sep[@field_sep_index]
1108
+ @field_sep_index += 1
1109
+ true
1110
+ else
1111
+ false
1112
+ end
1113
+ }.call(s4)
1114
+ if r11
1115
+ @index = i10
1116
+ r10 = instantiate_node(SyntaxNode,input, index...index)
1117
+ else
1118
+ r10 = nil
1119
+ end
1120
+ s4 << r10
1121
+ end
1122
+ end
1123
+ end
1124
+ if s4.last
1125
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1126
+ r4.extend(FieldSep0)
1127
+ else
1128
+ @index = i4
1129
+ r4 = nil
1130
+ end
1131
+ if r4
1132
+ s3 << r4
1133
+ else
1134
+ break
1135
+ end
1136
+ end
1137
+ if s3.empty?
1138
+ @index = i3
1139
+ r3 = nil
1140
+ else
1141
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1142
+ end
1143
+ s0 << r3
1144
+ if r3
1145
+ i12 = index
1146
+ r13 = lambda { |s| s.map(&:text_value).join == field_sep }.call(s0)
1147
+ if r13
1148
+ @index = i12
1149
+ r12 = instantiate_node(SyntaxNode,input, index...index)
1150
+ else
1151
+ r12 = nil
1152
+ end
1153
+ s0 << r12
1154
+ end
1155
+ end
1156
+ if s0.last
1157
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1158
+ r0.extend(FieldSep1)
1159
+ else
1160
+ @index = i0
1161
+ r0 = nil
1162
+ end
1163
+
1164
+ node_cache[:field_sep][start_index] = r0
1165
+
1166
+ r0
1167
+ end
1168
+
1169
+ module RecordSep0
1170
+ end
1171
+
1172
+ module RecordSep1
1173
+ end
1174
+
1175
+ def _nt_record_sep
1176
+ start_index = index
1177
+ if node_cache[:record_sep].has_key?(index)
1178
+ cached = node_cache[:record_sep][index]
1179
+ if cached
1180
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1181
+ @index = cached.interval.end
1182
+ end
1183
+ return cached
1184
+ end
1185
+
1186
+ i0, s0 = index, []
1187
+ i1 = index
1188
+ r2 = lambda { |s| @record_sep_index = 0; true }.call(s0)
1189
+ if r2
1190
+ @index = i1
1191
+ r1 = instantiate_node(SyntaxNode,input, index...index)
1192
+ else
1193
+ r1 = nil
1194
+ end
1195
+ s0 << r1
1196
+ if r1
1197
+ s3, i3 = [], index
1198
+ loop do
1199
+ i4, s4 = index, []
1200
+ if index < input_length
1201
+ r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
1202
+ @index += 1
1203
+ else
1204
+ terminal_parse_failure("any character")
1205
+ r5 = nil
1206
+ end
1207
+ s4 << r5
1208
+ if r5
1209
+ i6 = index
1210
+ r7 = lambda { |s|
1211
+ if @record_sep_index < record_sep.length &&
1212
+ s[0].text_value == record_sep[@record_sep_index]
1213
+ @record_sep_index += 1
1214
+ true
1215
+ else
1216
+ false
1217
+ end
1218
+ }.call(s4)
1219
+ if r7
1220
+ @index = i6
1221
+ r6 = instantiate_node(SyntaxNode,input, index...index)
1222
+ else
1223
+ r6 = nil
1224
+ end
1225
+ s4 << r6
1226
+ end
1227
+ if s4.last
1228
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1229
+ r4.extend(RecordSep0)
1230
+ else
1231
+ @index = i4
1232
+ r4 = nil
1233
+ end
1234
+ if r4
1235
+ s3 << r4
1236
+ else
1237
+ break
1238
+ end
1239
+ end
1240
+ if s3.empty?
1241
+ @index = i3
1242
+ r3 = nil
1243
+ else
1244
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1245
+ end
1246
+ s0 << r3
1247
+ if r3
1248
+ i8 = index
1249
+ r9 = lambda { |s| s.map(&:text_value).join == record_sep }.call(s0)
1250
+ if r9
1251
+ @index = i8
1252
+ r8 = instantiate_node(SyntaxNode,input, index...index)
1253
+ else
1254
+ r8 = nil
1255
+ end
1256
+ s0 << r8
1257
+ end
1258
+ end
1259
+ if s0.last
1260
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1261
+ r0.extend(RecordSep1)
1262
+ else
1263
+ @index = i0
1264
+ r0 = nil
1265
+ end
1266
+
1267
+ node_cache[:record_sep][start_index] = r0
1268
+
1269
+ r0
1270
+ end
1271
+
1272
+ module Quote0
1273
+ end
1274
+
1275
+ def _nt_quote
1276
+ start_index = index
1277
+ if node_cache[:quote].has_key?(index)
1278
+ cached = node_cache[:quote][index]
1279
+ if cached
1280
+ cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1281
+ @index = cached.interval.end
1282
+ end
1283
+ return cached
1284
+ end
1285
+
1286
+ i0, s0 = index, []
1287
+ i1 = index
1288
+ if has_terminal?("\\", false, index)
1289
+ r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1290
+ @index += 1
1291
+ else
1292
+ terminal_parse_failure("\\")
1293
+ r2 = nil
1294
+ end
1295
+ if r2
1296
+ r1 = nil
1297
+ else
1298
+ @index = i1
1299
+ r1 = instantiate_node(SyntaxNode,input, index...index)
1300
+ end
1301
+ s0 << r1
1302
+ if r1
1303
+ if index < input_length
1304
+ r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1305
+ @index += 1
1306
+ else
1307
+ terminal_parse_failure("any character")
1308
+ r3 = nil
1309
+ end
1310
+ s0 << r3
1311
+ if r3
1312
+ i4 = index
1313
+ r5 = lambda { |s| s[1].text_value[0] == quote_char[0] }.call(s0)
1314
+ if r5
1315
+ @index = i4
1316
+ r4 = instantiate_node(SyntaxNode,input, index...index)
1317
+ else
1318
+ r4 = nil
1319
+ end
1320
+ s0 << r4
1321
+ end
1322
+ end
1323
+ if s0.last
1324
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1325
+ r0.extend(Quote0)
1326
+ else
1327
+ @index = i0
1328
+ r0 = nil
1329
+ end
1330
+
1331
+ node_cache[:quote][start_index] = r0
1332
+
1333
+ r0
1334
+ end
1335
+
1336
+ end
1337
+
1338
+ class CsvParser < Treetop::Runtime::CompiledParser
1339
+ include Csv
1340
+ end
1341
+
1342
+ end