timing 0.0.9 → 0.0.10
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.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/lib/timing/natural_time_language.rb +520 -369
- data/lib/timing/natural_time_language.treetop +1 -1
- data/lib/timing/natural_time_language_interpreters.rb +2 -0
- data/lib/timing/version.rb +1 -1
- metadata +2 -2
@@ -25,7 +25,7 @@ module Timing
|
|
25
25
|
if node_cache[:expression].has_key?(index)
|
26
26
|
cached = node_cache[:expression][index]
|
27
27
|
if cached
|
28
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
28
|
+
node_cache[:expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
29
29
|
@index = cached.interval.end
|
30
30
|
end
|
31
31
|
return cached
|
@@ -100,7 +100,7 @@ module Timing
|
|
100
100
|
if node_cache[:moment].has_key?(index)
|
101
101
|
cached = node_cache[:moment][index]
|
102
102
|
if cached
|
103
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
103
|
+
node_cache[:moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
104
104
|
@index = cached.interval.end
|
105
105
|
end
|
106
106
|
return cached
|
@@ -109,22 +109,27 @@ module Timing
|
|
109
109
|
i0 = index
|
110
110
|
r1 = _nt_timestamp
|
111
111
|
if r1
|
112
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
112
113
|
r0 = r1
|
113
114
|
else
|
114
115
|
r2 = _nt_time_ago
|
115
116
|
if r2
|
117
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
116
118
|
r0 = r2
|
117
119
|
else
|
118
120
|
r3 = _nt_moment_at_time
|
119
121
|
if r3
|
122
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
120
123
|
r0 = r3
|
121
124
|
else
|
122
125
|
r4 = _nt_before_from_moment
|
123
126
|
if r4
|
127
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
124
128
|
r0 = r4
|
125
129
|
else
|
126
130
|
r5 = _nt_date_moment
|
127
131
|
if r5
|
132
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
128
133
|
r0 = r5
|
129
134
|
else
|
130
135
|
@index = i0
|
@@ -145,7 +150,7 @@ module Timing
|
|
145
150
|
if node_cache[:date_moment].has_key?(index)
|
146
151
|
cached = node_cache[:date_moment][index]
|
147
152
|
if cached
|
148
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
153
|
+
node_cache[:date_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
149
154
|
@index = cached.interval.end
|
150
155
|
end
|
151
156
|
return cached
|
@@ -154,22 +159,27 @@ module Timing
|
|
154
159
|
i0 = index
|
155
160
|
r1 = _nt_named_moment
|
156
161
|
if r1
|
162
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
157
163
|
r0 = r1
|
158
164
|
else
|
159
165
|
r2 = _nt_last_next_day_name
|
160
166
|
if r2
|
167
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
161
168
|
r0 = r2
|
162
169
|
else
|
163
170
|
r3 = _nt_day_month_name_year
|
164
171
|
if r3
|
172
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
165
173
|
r0 = r3
|
166
174
|
else
|
167
175
|
r4 = _nt_year_month_day
|
168
176
|
if r4
|
177
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
169
178
|
r0 = r4
|
170
179
|
else
|
171
180
|
r5 = _nt_beginning_end_interval
|
172
181
|
if r5
|
182
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
173
183
|
r0 = r5
|
174
184
|
else
|
175
185
|
@index = i0
|
@@ -190,7 +200,7 @@ module Timing
|
|
190
200
|
if node_cache[:named_moment].has_key?(index)
|
191
201
|
cached = node_cache[:named_moment][index]
|
192
202
|
if cached
|
193
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
203
|
+
node_cache[:named_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
194
204
|
@index = cached.interval.end
|
195
205
|
end
|
196
206
|
return cached
|
@@ -199,18 +209,22 @@ module Timing
|
|
199
209
|
i0 = index
|
200
210
|
r1 = _nt_now
|
201
211
|
if r1
|
212
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
202
213
|
r0 = r1
|
203
214
|
else
|
204
215
|
r2 = _nt_today
|
205
216
|
if r2
|
217
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
206
218
|
r0 = r2
|
207
219
|
else
|
208
220
|
r3 = _nt_tomorrow
|
209
221
|
if r3
|
222
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
210
223
|
r0 = r3
|
211
224
|
else
|
212
225
|
r4 = _nt_yesterday
|
213
226
|
if r4
|
227
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
214
228
|
r0 = r4
|
215
229
|
else
|
216
230
|
@index = i0
|
@@ -233,6 +247,10 @@ module Timing
|
|
233
247
|
def day_name
|
234
248
|
elements[2]
|
235
249
|
end
|
250
|
+
|
251
|
+
def including_today
|
252
|
+
elements[4]
|
253
|
+
end
|
236
254
|
end
|
237
255
|
|
238
256
|
def _nt_last_next_day_name
|
@@ -240,7 +258,7 @@ module Timing
|
|
240
258
|
if node_cache[:last_next_day_name].has_key?(index)
|
241
259
|
cached = node_cache[:last_next_day_name][index]
|
242
260
|
if cached
|
243
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
261
|
+
node_cache[:last_next_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
244
262
|
@index = cached.interval.end
|
245
263
|
end
|
246
264
|
return cached
|
@@ -264,6 +282,34 @@ module Timing
|
|
264
282
|
if r2
|
265
283
|
r4 = _nt_day_name
|
266
284
|
s0 << r4
|
285
|
+
if r4
|
286
|
+
s5, i5 = [], index
|
287
|
+
loop do
|
288
|
+
r6 = _nt_space
|
289
|
+
if r6
|
290
|
+
s5 << r6
|
291
|
+
else
|
292
|
+
break
|
293
|
+
end
|
294
|
+
end
|
295
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
296
|
+
s0 << r5
|
297
|
+
if r5
|
298
|
+
if (match_len = has_terminal?('including today', false, index))
|
299
|
+
r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
300
|
+
@index += match_len
|
301
|
+
else
|
302
|
+
terminal_parse_failure('\'including today\'')
|
303
|
+
r8 = nil
|
304
|
+
end
|
305
|
+
if r8
|
306
|
+
r7 = r8
|
307
|
+
else
|
308
|
+
r7 = instantiate_node(SyntaxNode,input, index...index)
|
309
|
+
end
|
310
|
+
s0 << r7
|
311
|
+
end
|
312
|
+
end
|
267
313
|
end
|
268
314
|
end
|
269
315
|
if s0.last
|
@@ -299,7 +345,7 @@ module Timing
|
|
299
345
|
if node_cache[:day_month_name_year].has_key?(index)
|
300
346
|
cached = node_cache[:day_month_name_year][index]
|
301
347
|
if cached
|
302
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
348
|
+
node_cache[:day_month_name_year][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
303
349
|
@index = cached.interval.end
|
304
350
|
end
|
305
351
|
return cached
|
@@ -392,7 +438,7 @@ module Timing
|
|
392
438
|
if node_cache[:year_month_day].has_key?(index)
|
393
439
|
cached = node_cache[:year_month_day][index]
|
394
440
|
if cached
|
395
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
441
|
+
node_cache[:year_month_day][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
396
442
|
@index = cached.interval.end
|
397
443
|
end
|
398
444
|
return cached
|
@@ -402,11 +448,11 @@ module Timing
|
|
402
448
|
r1 = _nt_integer
|
403
449
|
s0 << r1
|
404
450
|
if r1
|
405
|
-
if has_terminal?('-', false, index)
|
406
|
-
r2 =
|
407
|
-
@index +=
|
451
|
+
if (match_len = has_terminal?('-', false, index))
|
452
|
+
r2 = true
|
453
|
+
@index += match_len
|
408
454
|
else
|
409
|
-
terminal_parse_failure('
|
455
|
+
terminal_parse_failure('\'-\'')
|
410
456
|
r2 = nil
|
411
457
|
end
|
412
458
|
s0 << r2
|
@@ -414,11 +460,11 @@ module Timing
|
|
414
460
|
r3 = _nt_integer
|
415
461
|
s0 << r3
|
416
462
|
if r3
|
417
|
-
if has_terminal?('-', false, index)
|
418
|
-
r4 =
|
419
|
-
@index +=
|
463
|
+
if (match_len = has_terminal?('-', false, index))
|
464
|
+
r4 = true
|
465
|
+
@index += match_len
|
420
466
|
else
|
421
|
-
terminal_parse_failure('
|
467
|
+
terminal_parse_failure('\'-\'')
|
422
468
|
r4 = nil
|
423
469
|
end
|
424
470
|
s0 << r4
|
@@ -457,7 +503,7 @@ module Timing
|
|
457
503
|
if node_cache[:beginning_end_interval].has_key?(index)
|
458
504
|
cached = node_cache[:beginning_end_interval][index]
|
459
505
|
if cached
|
460
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
506
|
+
node_cache[:beginning_end_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
461
507
|
@index = cached.interval.end
|
462
508
|
end
|
463
509
|
return cached
|
@@ -512,7 +558,7 @@ module Timing
|
|
512
558
|
if node_cache[:time_ago].has_key?(index)
|
513
559
|
cached = node_cache[:time_ago][index]
|
514
560
|
if cached
|
515
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
561
|
+
node_cache[:time_ago][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
516
562
|
@index = cached.interval.end
|
517
563
|
end
|
518
564
|
return cached
|
@@ -549,11 +595,11 @@ module Timing
|
|
549
595
|
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
550
596
|
s0 << r5
|
551
597
|
if r5
|
552
|
-
if has_terminal?('ago', false, index)
|
553
|
-
r7 = instantiate_node(SyntaxNode,input, index...(index +
|
554
|
-
@index +=
|
598
|
+
if (match_len = has_terminal?('ago', false, index))
|
599
|
+
r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
600
|
+
@index += match_len
|
555
601
|
else
|
556
|
-
terminal_parse_failure('ago')
|
602
|
+
terminal_parse_failure('\'ago\'')
|
557
603
|
r7 = nil
|
558
604
|
end
|
559
605
|
s0 << r7
|
@@ -589,7 +635,7 @@ module Timing
|
|
589
635
|
if node_cache[:moment_at_time].has_key?(index)
|
590
636
|
cached = node_cache[:moment_at_time][index]
|
591
637
|
if cached
|
592
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
638
|
+
node_cache[:moment_at_time][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
593
639
|
@index = cached.interval.end
|
594
640
|
end
|
595
641
|
return cached
|
@@ -611,11 +657,11 @@ module Timing
|
|
611
657
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
612
658
|
s0 << r2
|
613
659
|
if r2
|
614
|
-
if has_terminal?('at', false, index)
|
615
|
-
r4 = instantiate_node(SyntaxNode,input, index...(index +
|
616
|
-
@index +=
|
660
|
+
if (match_len = has_terminal?('at', false, index))
|
661
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
662
|
+
@index += match_len
|
617
663
|
else
|
618
|
-
terminal_parse_failure('at')
|
664
|
+
terminal_parse_failure('\'at\'')
|
619
665
|
r4 = nil
|
620
666
|
end
|
621
667
|
s0 << r4
|
@@ -674,7 +720,7 @@ module Timing
|
|
674
720
|
if node_cache[:before_from_moment].has_key?(index)
|
675
721
|
cached = node_cache[:before_from_moment][index]
|
676
722
|
if cached
|
677
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
723
|
+
node_cache[:before_from_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
678
724
|
@index = cached.interval.end
|
679
725
|
end
|
680
726
|
return cached
|
@@ -755,7 +801,7 @@ module Timing
|
|
755
801
|
if node_cache[:timestamp].has_key?(index)
|
756
802
|
cached = node_cache[:timestamp][index]
|
757
803
|
if cached
|
758
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
804
|
+
node_cache[:timestamp][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
759
805
|
@index = cached.interval.end
|
760
806
|
end
|
761
807
|
return cached
|
@@ -764,10 +810,11 @@ module Timing
|
|
764
810
|
i0, s0 = index, []
|
765
811
|
s1, i1 = [], index
|
766
812
|
loop do
|
767
|
-
if has_terminal?('\
|
813
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
768
814
|
r2 = true
|
769
815
|
@index += 1
|
770
816
|
else
|
817
|
+
terminal_parse_failure('[\\d]')
|
771
818
|
r2 = nil
|
772
819
|
end
|
773
820
|
if r2
|
@@ -783,25 +830,29 @@ module Timing
|
|
783
830
|
@index = i1
|
784
831
|
r1 = nil
|
785
832
|
else
|
833
|
+
if s1.size < 4
|
834
|
+
@terminal_failures.pop
|
835
|
+
end
|
786
836
|
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
787
837
|
end
|
788
838
|
s0 << r1
|
789
839
|
if r1
|
790
|
-
if has_terminal?('-', false, index)
|
791
|
-
r3 =
|
792
|
-
@index +=
|
840
|
+
if (match_len = has_terminal?('-', false, index))
|
841
|
+
r3 = true
|
842
|
+
@index += match_len
|
793
843
|
else
|
794
|
-
terminal_parse_failure('
|
844
|
+
terminal_parse_failure('\'-\'')
|
795
845
|
r3 = nil
|
796
846
|
end
|
797
847
|
s0 << r3
|
798
848
|
if r3
|
799
849
|
s4, i4 = [], index
|
800
850
|
loop do
|
801
|
-
if has_terminal?('\
|
851
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
802
852
|
r5 = true
|
803
853
|
@index += 1
|
804
854
|
else
|
855
|
+
terminal_parse_failure('[\\d]')
|
805
856
|
r5 = nil
|
806
857
|
end
|
807
858
|
if r5
|
@@ -817,25 +868,29 @@ module Timing
|
|
817
868
|
@index = i4
|
818
869
|
r4 = nil
|
819
870
|
else
|
871
|
+
if s4.size < 2
|
872
|
+
@terminal_failures.pop
|
873
|
+
end
|
820
874
|
r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
|
821
875
|
end
|
822
876
|
s0 << r4
|
823
877
|
if r4
|
824
|
-
if has_terminal?('-', false, index)
|
825
|
-
r6 =
|
826
|
-
@index +=
|
878
|
+
if (match_len = has_terminal?('-', false, index))
|
879
|
+
r6 = true
|
880
|
+
@index += match_len
|
827
881
|
else
|
828
|
-
terminal_parse_failure('
|
882
|
+
terminal_parse_failure('\'-\'')
|
829
883
|
r6 = nil
|
830
884
|
end
|
831
885
|
s0 << r6
|
832
886
|
if r6
|
833
887
|
s7, i7 = [], index
|
834
888
|
loop do
|
835
|
-
if has_terminal?('\
|
889
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
836
890
|
r8 = true
|
837
891
|
@index += 1
|
838
892
|
else
|
893
|
+
terminal_parse_failure('[\\d]')
|
839
894
|
r8 = nil
|
840
895
|
end
|
841
896
|
if r8
|
@@ -851,6 +906,9 @@ module Timing
|
|
851
906
|
@index = i7
|
852
907
|
r7 = nil
|
853
908
|
else
|
909
|
+
if s7.size < 2
|
910
|
+
@terminal_failures.pop
|
911
|
+
end
|
854
912
|
r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
|
855
913
|
end
|
856
914
|
s0 << r7
|
@@ -867,11 +925,11 @@ module Timing
|
|
867
925
|
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
|
868
926
|
s0 << r9
|
869
927
|
if r9
|
870
|
-
if has_terminal?('t', false, index)
|
871
|
-
r12 =
|
872
|
-
@index +=
|
928
|
+
if (match_len = has_terminal?('t', false, index))
|
929
|
+
r12 = true
|
930
|
+
@index += match_len
|
873
931
|
else
|
874
|
-
terminal_parse_failure('t')
|
932
|
+
terminal_parse_failure('\'t\'')
|
875
933
|
r12 = nil
|
876
934
|
end
|
877
935
|
if r12
|
@@ -895,10 +953,11 @@ module Timing
|
|
895
953
|
if r13
|
896
954
|
s15, i15 = [], index
|
897
955
|
loop do
|
898
|
-
if has_terminal?('\
|
956
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
899
957
|
r16 = true
|
900
958
|
@index += 1
|
901
959
|
else
|
960
|
+
terminal_parse_failure('[\\d]')
|
902
961
|
r16 = nil
|
903
962
|
end
|
904
963
|
if r16
|
@@ -914,25 +973,29 @@ module Timing
|
|
914
973
|
@index = i15
|
915
974
|
r15 = nil
|
916
975
|
else
|
976
|
+
if s15.size < 2
|
977
|
+
@terminal_failures.pop
|
978
|
+
end
|
917
979
|
r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
|
918
980
|
end
|
919
981
|
s0 << r15
|
920
982
|
if r15
|
921
|
-
if has_terminal?(':', false, index)
|
922
|
-
r17 =
|
923
|
-
@index +=
|
983
|
+
if (match_len = has_terminal?(':', false, index))
|
984
|
+
r17 = true
|
985
|
+
@index += match_len
|
924
986
|
else
|
925
|
-
terminal_parse_failure('
|
987
|
+
terminal_parse_failure('\':\'')
|
926
988
|
r17 = nil
|
927
989
|
end
|
928
990
|
s0 << r17
|
929
991
|
if r17
|
930
992
|
s18, i18 = [], index
|
931
993
|
loop do
|
932
|
-
if has_terminal?('\
|
994
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
933
995
|
r19 = true
|
934
996
|
@index += 1
|
935
997
|
else
|
998
|
+
terminal_parse_failure('[\\d]')
|
936
999
|
r19 = nil
|
937
1000
|
end
|
938
1001
|
if r19
|
@@ -948,25 +1011,29 @@ module Timing
|
|
948
1011
|
@index = i18
|
949
1012
|
r18 = nil
|
950
1013
|
else
|
1014
|
+
if s18.size < 2
|
1015
|
+
@terminal_failures.pop
|
1016
|
+
end
|
951
1017
|
r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
|
952
1018
|
end
|
953
1019
|
s0 << r18
|
954
1020
|
if r18
|
955
|
-
if has_terminal?(':', false, index)
|
956
|
-
r20 =
|
957
|
-
@index +=
|
1021
|
+
if (match_len = has_terminal?(':', false, index))
|
1022
|
+
r20 = true
|
1023
|
+
@index += match_len
|
958
1024
|
else
|
959
|
-
terminal_parse_failure('
|
1025
|
+
terminal_parse_failure('\':\'')
|
960
1026
|
r20 = nil
|
961
1027
|
end
|
962
1028
|
s0 << r20
|
963
1029
|
if r20
|
964
1030
|
s21, i21 = [], index
|
965
1031
|
loop do
|
966
|
-
if has_terminal?('\
|
1032
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
967
1033
|
r22 = true
|
968
1034
|
@index += 1
|
969
1035
|
else
|
1036
|
+
terminal_parse_failure('[\\d]')
|
970
1037
|
r22 = nil
|
971
1038
|
end
|
972
1039
|
if r22
|
@@ -982,6 +1049,9 @@ module Timing
|
|
982
1049
|
@index = i21
|
983
1050
|
r21 = nil
|
984
1051
|
else
|
1052
|
+
if s21.size < 2
|
1053
|
+
@terminal_failures.pop
|
1054
|
+
end
|
985
1055
|
r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
|
986
1056
|
end
|
987
1057
|
s0 << r21
|
@@ -1015,17 +1085,17 @@ module Timing
|
|
1015
1085
|
if node_cache[:now].has_key?(index)
|
1016
1086
|
cached = node_cache[:now][index]
|
1017
1087
|
if cached
|
1018
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1088
|
+
node_cache[:now][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1019
1089
|
@index = cached.interval.end
|
1020
1090
|
end
|
1021
1091
|
return cached
|
1022
1092
|
end
|
1023
1093
|
|
1024
|
-
if has_terminal?('now', false, index)
|
1025
|
-
r0 = instantiate_node(Now,input, index...(index +
|
1026
|
-
@index +=
|
1094
|
+
if (match_len = has_terminal?('now', false, index))
|
1095
|
+
r0 = instantiate_node(Now,input, index...(index + match_len))
|
1096
|
+
@index += match_len
|
1027
1097
|
else
|
1028
|
-
terminal_parse_failure('now')
|
1098
|
+
terminal_parse_failure('\'now\'')
|
1029
1099
|
r0 = nil
|
1030
1100
|
end
|
1031
1101
|
|
@@ -1039,17 +1109,17 @@ module Timing
|
|
1039
1109
|
if node_cache[:today].has_key?(index)
|
1040
1110
|
cached = node_cache[:today][index]
|
1041
1111
|
if cached
|
1042
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1112
|
+
node_cache[:today][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1043
1113
|
@index = cached.interval.end
|
1044
1114
|
end
|
1045
1115
|
return cached
|
1046
1116
|
end
|
1047
1117
|
|
1048
|
-
if has_terminal?('today', false, index)
|
1049
|
-
r0 = instantiate_node(Today,input, index...(index +
|
1050
|
-
@index +=
|
1118
|
+
if (match_len = has_terminal?('today', false, index))
|
1119
|
+
r0 = instantiate_node(Today,input, index...(index + match_len))
|
1120
|
+
@index += match_len
|
1051
1121
|
else
|
1052
|
-
terminal_parse_failure('today')
|
1122
|
+
terminal_parse_failure('\'today\'')
|
1053
1123
|
r0 = nil
|
1054
1124
|
end
|
1055
1125
|
|
@@ -1063,17 +1133,17 @@ module Timing
|
|
1063
1133
|
if node_cache[:tomorrow].has_key?(index)
|
1064
1134
|
cached = node_cache[:tomorrow][index]
|
1065
1135
|
if cached
|
1066
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1136
|
+
node_cache[:tomorrow][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1067
1137
|
@index = cached.interval.end
|
1068
1138
|
end
|
1069
1139
|
return cached
|
1070
1140
|
end
|
1071
1141
|
|
1072
|
-
if has_terminal?('tomorrow', false, index)
|
1073
|
-
r0 = instantiate_node(Tomorrow,input, index...(index +
|
1074
|
-
@index +=
|
1142
|
+
if (match_len = has_terminal?('tomorrow', false, index))
|
1143
|
+
r0 = instantiate_node(Tomorrow,input, index...(index + match_len))
|
1144
|
+
@index += match_len
|
1075
1145
|
else
|
1076
|
-
terminal_parse_failure('tomorrow')
|
1146
|
+
terminal_parse_failure('\'tomorrow\'')
|
1077
1147
|
r0 = nil
|
1078
1148
|
end
|
1079
1149
|
|
@@ -1087,17 +1157,17 @@ module Timing
|
|
1087
1157
|
if node_cache[:yesterday].has_key?(index)
|
1088
1158
|
cached = node_cache[:yesterday][index]
|
1089
1159
|
if cached
|
1090
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1160
|
+
node_cache[:yesterday][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1091
1161
|
@index = cached.interval.end
|
1092
1162
|
end
|
1093
1163
|
return cached
|
1094
1164
|
end
|
1095
1165
|
|
1096
|
-
if has_terminal?('yesterday', false, index)
|
1097
|
-
r0 = instantiate_node(Yesterday,input, index...(index +
|
1098
|
-
@index +=
|
1166
|
+
if (match_len = has_terminal?('yesterday', false, index))
|
1167
|
+
r0 = instantiate_node(Yesterday,input, index...(index + match_len))
|
1168
|
+
@index += match_len
|
1099
1169
|
else
|
1100
|
-
terminal_parse_failure('yesterday')
|
1170
|
+
terminal_parse_failure('\'yesterday\'')
|
1101
1171
|
r0 = nil
|
1102
1172
|
end
|
1103
1173
|
|
@@ -1111,7 +1181,7 @@ module Timing
|
|
1111
1181
|
if node_cache[:last_next].has_key?(index)
|
1112
1182
|
cached = node_cache[:last_next][index]
|
1113
1183
|
if cached
|
1114
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1184
|
+
node_cache[:last_next][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1115
1185
|
@index = cached.interval.end
|
1116
1186
|
end
|
1117
1187
|
return cached
|
@@ -1120,10 +1190,12 @@ module Timing
|
|
1120
1190
|
i0 = index
|
1121
1191
|
r1 = _nt_last
|
1122
1192
|
if r1
|
1193
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1123
1194
|
r0 = r1
|
1124
1195
|
else
|
1125
1196
|
r2 = _nt_next
|
1126
1197
|
if r2
|
1198
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1127
1199
|
r0 = r2
|
1128
1200
|
else
|
1129
1201
|
@index = i0
|
@@ -1141,17 +1213,17 @@ module Timing
|
|
1141
1213
|
if node_cache[:last].has_key?(index)
|
1142
1214
|
cached = node_cache[:last][index]
|
1143
1215
|
if cached
|
1144
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1216
|
+
node_cache[:last][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1145
1217
|
@index = cached.interval.end
|
1146
1218
|
end
|
1147
1219
|
return cached
|
1148
1220
|
end
|
1149
1221
|
|
1150
|
-
if has_terminal?('last', false, index)
|
1151
|
-
r0 = instantiate_node(LastNext,input, index...(index +
|
1152
|
-
@index +=
|
1222
|
+
if (match_len = has_terminal?('last', false, index))
|
1223
|
+
r0 = instantiate_node(LastNext,input, index...(index + match_len))
|
1224
|
+
@index += match_len
|
1153
1225
|
else
|
1154
|
-
terminal_parse_failure('last')
|
1226
|
+
terminal_parse_failure('\'last\'')
|
1155
1227
|
r0 = nil
|
1156
1228
|
end
|
1157
1229
|
|
@@ -1165,17 +1237,17 @@ module Timing
|
|
1165
1237
|
if node_cache[:next].has_key?(index)
|
1166
1238
|
cached = node_cache[:next][index]
|
1167
1239
|
if cached
|
1168
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1240
|
+
node_cache[:next][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1169
1241
|
@index = cached.interval.end
|
1170
1242
|
end
|
1171
1243
|
return cached
|
1172
1244
|
end
|
1173
1245
|
|
1174
|
-
if has_terminal?('next', false, index)
|
1175
|
-
r0 = instantiate_node(LastNext,input, index...(index +
|
1176
|
-
@index +=
|
1246
|
+
if (match_len = has_terminal?('next', false, index))
|
1247
|
+
r0 = instantiate_node(LastNext,input, index...(index + match_len))
|
1248
|
+
@index += match_len
|
1177
1249
|
else
|
1178
|
-
terminal_parse_failure('next')
|
1250
|
+
terminal_parse_failure('\'next\'')
|
1179
1251
|
r0 = nil
|
1180
1252
|
end
|
1181
1253
|
|
@@ -1189,7 +1261,7 @@ module Timing
|
|
1189
1261
|
if node_cache[:beginning_end].has_key?(index)
|
1190
1262
|
cached = node_cache[:beginning_end][index]
|
1191
1263
|
if cached
|
1192
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1264
|
+
node_cache[:beginning_end][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1193
1265
|
@index = cached.interval.end
|
1194
1266
|
end
|
1195
1267
|
return cached
|
@@ -1198,10 +1270,12 @@ module Timing
|
|
1198
1270
|
i0 = index
|
1199
1271
|
r1 = _nt_beginning_of
|
1200
1272
|
if r1
|
1273
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1201
1274
|
r0 = r1
|
1202
1275
|
else
|
1203
1276
|
r2 = _nt_end_of
|
1204
1277
|
if r2
|
1278
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1205
1279
|
r0 = r2
|
1206
1280
|
else
|
1207
1281
|
@index = i0
|
@@ -1226,18 +1300,18 @@ module Timing
|
|
1226
1300
|
if node_cache[:beginning_of].has_key?(index)
|
1227
1301
|
cached = node_cache[:beginning_of][index]
|
1228
1302
|
if cached
|
1229
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1303
|
+
node_cache[:beginning_of][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1230
1304
|
@index = cached.interval.end
|
1231
1305
|
end
|
1232
1306
|
return cached
|
1233
1307
|
end
|
1234
1308
|
|
1235
1309
|
i0, s0 = index, []
|
1236
|
-
if has_terminal?('beginning', false, index)
|
1237
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1238
|
-
@index +=
|
1310
|
+
if (match_len = has_terminal?('beginning', false, index))
|
1311
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1312
|
+
@index += match_len
|
1239
1313
|
else
|
1240
|
-
terminal_parse_failure('beginning')
|
1314
|
+
terminal_parse_failure('\'beginning\'')
|
1241
1315
|
r1 = nil
|
1242
1316
|
end
|
1243
1317
|
s0 << r1
|
@@ -1254,11 +1328,11 @@ module Timing
|
|
1254
1328
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
1255
1329
|
s0 << r2
|
1256
1330
|
if r2
|
1257
|
-
if has_terminal?('of', false, index)
|
1258
|
-
r4 = instantiate_node(SyntaxNode,input, index...(index +
|
1259
|
-
@index +=
|
1331
|
+
if (match_len = has_terminal?('of', false, index))
|
1332
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1333
|
+
@index += match_len
|
1260
1334
|
else
|
1261
|
-
terminal_parse_failure('of')
|
1335
|
+
terminal_parse_failure('\'of\'')
|
1262
1336
|
r4 = nil
|
1263
1337
|
end
|
1264
1338
|
s0 << r4
|
@@ -1289,18 +1363,18 @@ module Timing
|
|
1289
1363
|
if node_cache[:end_of].has_key?(index)
|
1290
1364
|
cached = node_cache[:end_of][index]
|
1291
1365
|
if cached
|
1292
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1366
|
+
node_cache[:end_of][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1293
1367
|
@index = cached.interval.end
|
1294
1368
|
end
|
1295
1369
|
return cached
|
1296
1370
|
end
|
1297
1371
|
|
1298
1372
|
i0, s0 = index, []
|
1299
|
-
if has_terminal?('end', false, index)
|
1300
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1301
|
-
@index +=
|
1373
|
+
if (match_len = has_terminal?('end', false, index))
|
1374
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1375
|
+
@index += match_len
|
1302
1376
|
else
|
1303
|
-
terminal_parse_failure('end')
|
1377
|
+
terminal_parse_failure('\'end\'')
|
1304
1378
|
r1 = nil
|
1305
1379
|
end
|
1306
1380
|
s0 << r1
|
@@ -1317,11 +1391,11 @@ module Timing
|
|
1317
1391
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
1318
1392
|
s0 << r2
|
1319
1393
|
if r2
|
1320
|
-
if has_terminal?('of', false, index)
|
1321
|
-
r4 = instantiate_node(SyntaxNode,input, index...(index +
|
1322
|
-
@index +=
|
1394
|
+
if (match_len = has_terminal?('of', false, index))
|
1395
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1396
|
+
@index += match_len
|
1323
1397
|
else
|
1324
|
-
terminal_parse_failure('of')
|
1398
|
+
terminal_parse_failure('\'of\'')
|
1325
1399
|
r4 = nil
|
1326
1400
|
end
|
1327
1401
|
s0 << r4
|
@@ -1345,7 +1419,7 @@ module Timing
|
|
1345
1419
|
if node_cache[:before_from].has_key?(index)
|
1346
1420
|
cached = node_cache[:before_from][index]
|
1347
1421
|
if cached
|
1348
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1422
|
+
node_cache[:before_from][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1349
1423
|
@index = cached.interval.end
|
1350
1424
|
end
|
1351
1425
|
return cached
|
@@ -1354,10 +1428,12 @@ module Timing
|
|
1354
1428
|
i0 = index
|
1355
1429
|
r1 = _nt_before
|
1356
1430
|
if r1
|
1431
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1357
1432
|
r0 = r1
|
1358
1433
|
else
|
1359
1434
|
r2 = _nt_from
|
1360
1435
|
if r2
|
1436
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1361
1437
|
r0 = r2
|
1362
1438
|
else
|
1363
1439
|
@index = i0
|
@@ -1375,17 +1451,17 @@ module Timing
|
|
1375
1451
|
if node_cache[:before].has_key?(index)
|
1376
1452
|
cached = node_cache[:before][index]
|
1377
1453
|
if cached
|
1378
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1454
|
+
node_cache[:before][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1379
1455
|
@index = cached.interval.end
|
1380
1456
|
end
|
1381
1457
|
return cached
|
1382
1458
|
end
|
1383
1459
|
|
1384
|
-
if has_terminal?('before', false, index)
|
1385
|
-
r0 = instantiate_node(BeforeFrom,input, index...(index +
|
1386
|
-
@index +=
|
1460
|
+
if (match_len = has_terminal?('before', false, index))
|
1461
|
+
r0 = instantiate_node(BeforeFrom,input, index...(index + match_len))
|
1462
|
+
@index += match_len
|
1387
1463
|
else
|
1388
|
-
terminal_parse_failure('before')
|
1464
|
+
terminal_parse_failure('\'before\'')
|
1389
1465
|
r0 = nil
|
1390
1466
|
end
|
1391
1467
|
|
@@ -1399,17 +1475,17 @@ module Timing
|
|
1399
1475
|
if node_cache[:from].has_key?(index)
|
1400
1476
|
cached = node_cache[:from][index]
|
1401
1477
|
if cached
|
1402
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1478
|
+
node_cache[:from][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1403
1479
|
@index = cached.interval.end
|
1404
1480
|
end
|
1405
1481
|
return cached
|
1406
1482
|
end
|
1407
1483
|
|
1408
|
-
if has_terminal?('from', false, index)
|
1409
|
-
r0 = instantiate_node(BeforeFrom,input, index...(index +
|
1410
|
-
@index +=
|
1484
|
+
if (match_len = has_terminal?('from', false, index))
|
1485
|
+
r0 = instantiate_node(BeforeFrom,input, index...(index + match_len))
|
1486
|
+
@index += match_len
|
1411
1487
|
else
|
1412
|
-
terminal_parse_failure('from')
|
1488
|
+
terminal_parse_failure('\'from\'')
|
1413
1489
|
r0 = nil
|
1414
1490
|
end
|
1415
1491
|
|
@@ -1423,7 +1499,7 @@ module Timing
|
|
1423
1499
|
if node_cache[:interval].has_key?(index)
|
1424
1500
|
cached = node_cache[:interval][index]
|
1425
1501
|
if cached
|
1426
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1502
|
+
node_cache[:interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1427
1503
|
@index = cached.interval.end
|
1428
1504
|
end
|
1429
1505
|
return cached
|
@@ -1432,30 +1508,37 @@ module Timing
|
|
1432
1508
|
i0 = index
|
1433
1509
|
r1 = _nt_second_interval
|
1434
1510
|
if r1
|
1511
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1435
1512
|
r0 = r1
|
1436
1513
|
else
|
1437
1514
|
r2 = _nt_minute_interval
|
1438
1515
|
if r2
|
1516
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1439
1517
|
r0 = r2
|
1440
1518
|
else
|
1441
1519
|
r3 = _nt_hour_interval
|
1442
1520
|
if r3
|
1521
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
1443
1522
|
r0 = r3
|
1444
1523
|
else
|
1445
1524
|
r4 = _nt_day_interval
|
1446
1525
|
if r4
|
1526
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
1447
1527
|
r0 = r4
|
1448
1528
|
else
|
1449
1529
|
r5 = _nt_week_interval
|
1450
1530
|
if r5
|
1531
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
1451
1532
|
r0 = r5
|
1452
1533
|
else
|
1453
1534
|
r6 = _nt_month_interval
|
1454
1535
|
if r6
|
1536
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
1455
1537
|
r0 = r6
|
1456
1538
|
else
|
1457
1539
|
r7 = _nt_year_interval
|
1458
1540
|
if r7
|
1541
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
1459
1542
|
r0 = r7
|
1460
1543
|
else
|
1461
1544
|
@index = i0
|
@@ -1481,27 +1564,27 @@ module Timing
|
|
1481
1564
|
if node_cache[:second_interval].has_key?(index)
|
1482
1565
|
cached = node_cache[:second_interval][index]
|
1483
1566
|
if cached
|
1484
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1567
|
+
node_cache[:second_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1485
1568
|
@index = cached.interval.end
|
1486
1569
|
end
|
1487
1570
|
return cached
|
1488
1571
|
end
|
1489
1572
|
|
1490
1573
|
i0, s0 = index, []
|
1491
|
-
if has_terminal?('second', false, index)
|
1492
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1493
|
-
@index +=
|
1574
|
+
if (match_len = has_terminal?('second', false, index))
|
1575
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1576
|
+
@index += match_len
|
1494
1577
|
else
|
1495
|
-
terminal_parse_failure('second')
|
1578
|
+
terminal_parse_failure('\'second\'')
|
1496
1579
|
r1 = nil
|
1497
1580
|
end
|
1498
1581
|
s0 << r1
|
1499
1582
|
if r1
|
1500
|
-
if has_terminal?('s', false, index)
|
1501
|
-
r3 =
|
1502
|
-
@index +=
|
1583
|
+
if (match_len = has_terminal?('s', false, index))
|
1584
|
+
r3 = true
|
1585
|
+
@index += match_len
|
1503
1586
|
else
|
1504
|
-
terminal_parse_failure('s')
|
1587
|
+
terminal_parse_failure('\'s\'')
|
1505
1588
|
r3 = nil
|
1506
1589
|
end
|
1507
1590
|
if r3
|
@@ -1532,27 +1615,27 @@ module Timing
|
|
1532
1615
|
if node_cache[:minute_interval].has_key?(index)
|
1533
1616
|
cached = node_cache[:minute_interval][index]
|
1534
1617
|
if cached
|
1535
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1618
|
+
node_cache[:minute_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1536
1619
|
@index = cached.interval.end
|
1537
1620
|
end
|
1538
1621
|
return cached
|
1539
1622
|
end
|
1540
1623
|
|
1541
1624
|
i0, s0 = index, []
|
1542
|
-
if has_terminal?('minute', false, index)
|
1543
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1544
|
-
@index +=
|
1625
|
+
if (match_len = has_terminal?('minute', false, index))
|
1626
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1627
|
+
@index += match_len
|
1545
1628
|
else
|
1546
|
-
terminal_parse_failure('minute')
|
1629
|
+
terminal_parse_failure('\'minute\'')
|
1547
1630
|
r1 = nil
|
1548
1631
|
end
|
1549
1632
|
s0 << r1
|
1550
1633
|
if r1
|
1551
|
-
if has_terminal?('s', false, index)
|
1552
|
-
r3 =
|
1553
|
-
@index +=
|
1634
|
+
if (match_len = has_terminal?('s', false, index))
|
1635
|
+
r3 = true
|
1636
|
+
@index += match_len
|
1554
1637
|
else
|
1555
|
-
terminal_parse_failure('s')
|
1638
|
+
terminal_parse_failure('\'s\'')
|
1556
1639
|
r3 = nil
|
1557
1640
|
end
|
1558
1641
|
if r3
|
@@ -1583,27 +1666,27 @@ module Timing
|
|
1583
1666
|
if node_cache[:hour_interval].has_key?(index)
|
1584
1667
|
cached = node_cache[:hour_interval][index]
|
1585
1668
|
if cached
|
1586
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1669
|
+
node_cache[:hour_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1587
1670
|
@index = cached.interval.end
|
1588
1671
|
end
|
1589
1672
|
return cached
|
1590
1673
|
end
|
1591
1674
|
|
1592
1675
|
i0, s0 = index, []
|
1593
|
-
if has_terminal?('hour', false, index)
|
1594
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1595
|
-
@index +=
|
1676
|
+
if (match_len = has_terminal?('hour', false, index))
|
1677
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1678
|
+
@index += match_len
|
1596
1679
|
else
|
1597
|
-
terminal_parse_failure('hour')
|
1680
|
+
terminal_parse_failure('\'hour\'')
|
1598
1681
|
r1 = nil
|
1599
1682
|
end
|
1600
1683
|
s0 << r1
|
1601
1684
|
if r1
|
1602
|
-
if has_terminal?('s', false, index)
|
1603
|
-
r3 =
|
1604
|
-
@index +=
|
1685
|
+
if (match_len = has_terminal?('s', false, index))
|
1686
|
+
r3 = true
|
1687
|
+
@index += match_len
|
1605
1688
|
else
|
1606
|
-
terminal_parse_failure('s')
|
1689
|
+
terminal_parse_failure('\'s\'')
|
1607
1690
|
r3 = nil
|
1608
1691
|
end
|
1609
1692
|
if r3
|
@@ -1634,27 +1717,27 @@ module Timing
|
|
1634
1717
|
if node_cache[:day_interval].has_key?(index)
|
1635
1718
|
cached = node_cache[:day_interval][index]
|
1636
1719
|
if cached
|
1637
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1720
|
+
node_cache[:day_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1638
1721
|
@index = cached.interval.end
|
1639
1722
|
end
|
1640
1723
|
return cached
|
1641
1724
|
end
|
1642
1725
|
|
1643
1726
|
i0, s0 = index, []
|
1644
|
-
if has_terminal?('day', false, index)
|
1645
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1646
|
-
@index +=
|
1727
|
+
if (match_len = has_terminal?('day', false, index))
|
1728
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1729
|
+
@index += match_len
|
1647
1730
|
else
|
1648
|
-
terminal_parse_failure('day')
|
1731
|
+
terminal_parse_failure('\'day\'')
|
1649
1732
|
r1 = nil
|
1650
1733
|
end
|
1651
1734
|
s0 << r1
|
1652
1735
|
if r1
|
1653
|
-
if has_terminal?('s', false, index)
|
1654
|
-
r3 =
|
1655
|
-
@index +=
|
1736
|
+
if (match_len = has_terminal?('s', false, index))
|
1737
|
+
r3 = true
|
1738
|
+
@index += match_len
|
1656
1739
|
else
|
1657
|
-
terminal_parse_failure('s')
|
1740
|
+
terminal_parse_failure('\'s\'')
|
1658
1741
|
r3 = nil
|
1659
1742
|
end
|
1660
1743
|
if r3
|
@@ -1685,27 +1768,27 @@ module Timing
|
|
1685
1768
|
if node_cache[:week_interval].has_key?(index)
|
1686
1769
|
cached = node_cache[:week_interval][index]
|
1687
1770
|
if cached
|
1688
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1771
|
+
node_cache[:week_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1689
1772
|
@index = cached.interval.end
|
1690
1773
|
end
|
1691
1774
|
return cached
|
1692
1775
|
end
|
1693
1776
|
|
1694
1777
|
i0, s0 = index, []
|
1695
|
-
if has_terminal?('week', false, index)
|
1696
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1697
|
-
@index +=
|
1778
|
+
if (match_len = has_terminal?('week', false, index))
|
1779
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1780
|
+
@index += match_len
|
1698
1781
|
else
|
1699
|
-
terminal_parse_failure('week')
|
1782
|
+
terminal_parse_failure('\'week\'')
|
1700
1783
|
r1 = nil
|
1701
1784
|
end
|
1702
1785
|
s0 << r1
|
1703
1786
|
if r1
|
1704
|
-
if has_terminal?('s', false, index)
|
1705
|
-
r3 =
|
1706
|
-
@index +=
|
1787
|
+
if (match_len = has_terminal?('s', false, index))
|
1788
|
+
r3 = true
|
1789
|
+
@index += match_len
|
1707
1790
|
else
|
1708
|
-
terminal_parse_failure('s')
|
1791
|
+
terminal_parse_failure('\'s\'')
|
1709
1792
|
r3 = nil
|
1710
1793
|
end
|
1711
1794
|
if r3
|
@@ -1736,27 +1819,27 @@ module Timing
|
|
1736
1819
|
if node_cache[:month_interval].has_key?(index)
|
1737
1820
|
cached = node_cache[:month_interval][index]
|
1738
1821
|
if cached
|
1739
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1822
|
+
node_cache[:month_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1740
1823
|
@index = cached.interval.end
|
1741
1824
|
end
|
1742
1825
|
return cached
|
1743
1826
|
end
|
1744
1827
|
|
1745
1828
|
i0, s0 = index, []
|
1746
|
-
if has_terminal?('month', false, index)
|
1747
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1748
|
-
@index +=
|
1829
|
+
if (match_len = has_terminal?('month', false, index))
|
1830
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1831
|
+
@index += match_len
|
1749
1832
|
else
|
1750
|
-
terminal_parse_failure('month')
|
1833
|
+
terminal_parse_failure('\'month\'')
|
1751
1834
|
r1 = nil
|
1752
1835
|
end
|
1753
1836
|
s0 << r1
|
1754
1837
|
if r1
|
1755
|
-
if has_terminal?('s', false, index)
|
1756
|
-
r3 =
|
1757
|
-
@index +=
|
1838
|
+
if (match_len = has_terminal?('s', false, index))
|
1839
|
+
r3 = true
|
1840
|
+
@index += match_len
|
1758
1841
|
else
|
1759
|
-
terminal_parse_failure('s')
|
1842
|
+
terminal_parse_failure('\'s\'')
|
1760
1843
|
r3 = nil
|
1761
1844
|
end
|
1762
1845
|
if r3
|
@@ -1787,27 +1870,27 @@ module Timing
|
|
1787
1870
|
if node_cache[:year_interval].has_key?(index)
|
1788
1871
|
cached = node_cache[:year_interval][index]
|
1789
1872
|
if cached
|
1790
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1873
|
+
node_cache[:year_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1791
1874
|
@index = cached.interval.end
|
1792
1875
|
end
|
1793
1876
|
return cached
|
1794
1877
|
end
|
1795
1878
|
|
1796
1879
|
i0, s0 = index, []
|
1797
|
-
if has_terminal?('year', false, index)
|
1798
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1799
|
-
@index +=
|
1880
|
+
if (match_len = has_terminal?('year', false, index))
|
1881
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1882
|
+
@index += match_len
|
1800
1883
|
else
|
1801
|
-
terminal_parse_failure('year')
|
1884
|
+
terminal_parse_failure('\'year\'')
|
1802
1885
|
r1 = nil
|
1803
1886
|
end
|
1804
1887
|
s0 << r1
|
1805
1888
|
if r1
|
1806
|
-
if has_terminal?('s', false, index)
|
1807
|
-
r3 =
|
1808
|
-
@index +=
|
1889
|
+
if (match_len = has_terminal?('s', false, index))
|
1890
|
+
r3 = true
|
1891
|
+
@index += match_len
|
1809
1892
|
else
|
1810
|
-
terminal_parse_failure('s')
|
1893
|
+
terminal_parse_failure('\'s\'')
|
1811
1894
|
r3 = nil
|
1812
1895
|
end
|
1813
1896
|
if r3
|
@@ -1835,7 +1918,7 @@ module Timing
|
|
1835
1918
|
if node_cache[:day_name].has_key?(index)
|
1836
1919
|
cached = node_cache[:day_name][index]
|
1837
1920
|
if cached
|
1838
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1921
|
+
node_cache[:day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1839
1922
|
@index = cached.interval.end
|
1840
1923
|
end
|
1841
1924
|
return cached
|
@@ -1844,10 +1927,12 @@ module Timing
|
|
1844
1927
|
i0 = index
|
1845
1928
|
r1 = _nt_long_day_name
|
1846
1929
|
if r1
|
1930
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1847
1931
|
r0 = r1
|
1848
1932
|
else
|
1849
1933
|
r2 = _nt_short_day_name
|
1850
1934
|
if r2
|
1935
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1851
1936
|
r0 = r2
|
1852
1937
|
else
|
1853
1938
|
@index = i0
|
@@ -1865,81 +1950,88 @@ module Timing
|
|
1865
1950
|
if node_cache[:long_day_name].has_key?(index)
|
1866
1951
|
cached = node_cache[:long_day_name][index]
|
1867
1952
|
if cached
|
1868
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1953
|
+
node_cache[:long_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1869
1954
|
@index = cached.interval.end
|
1870
1955
|
end
|
1871
1956
|
return cached
|
1872
1957
|
end
|
1873
1958
|
|
1874
1959
|
i0 = index
|
1875
|
-
if has_terminal?('sunday', false, index)
|
1876
|
-
r1 = instantiate_node(DayName,input, index...(index +
|
1877
|
-
@index +=
|
1960
|
+
if (match_len = has_terminal?('sunday', false, index))
|
1961
|
+
r1 = instantiate_node(DayName,input, index...(index + match_len))
|
1962
|
+
@index += match_len
|
1878
1963
|
else
|
1879
|
-
terminal_parse_failure('sunday')
|
1964
|
+
terminal_parse_failure('\'sunday\'')
|
1880
1965
|
r1 = nil
|
1881
1966
|
end
|
1882
1967
|
if r1
|
1968
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1883
1969
|
r0 = r1
|
1884
1970
|
else
|
1885
|
-
if has_terminal?('monday', false, index)
|
1886
|
-
r2 = instantiate_node(DayName,input, index...(index +
|
1887
|
-
@index +=
|
1971
|
+
if (match_len = has_terminal?('monday', false, index))
|
1972
|
+
r2 = instantiate_node(DayName,input, index...(index + match_len))
|
1973
|
+
@index += match_len
|
1888
1974
|
else
|
1889
|
-
terminal_parse_failure('monday')
|
1975
|
+
terminal_parse_failure('\'monday\'')
|
1890
1976
|
r2 = nil
|
1891
1977
|
end
|
1892
1978
|
if r2
|
1979
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1893
1980
|
r0 = r2
|
1894
1981
|
else
|
1895
|
-
if has_terminal?('tuesday', false, index)
|
1896
|
-
r3 = instantiate_node(DayName,input, index...(index +
|
1897
|
-
@index +=
|
1982
|
+
if (match_len = has_terminal?('tuesday', false, index))
|
1983
|
+
r3 = instantiate_node(DayName,input, index...(index + match_len))
|
1984
|
+
@index += match_len
|
1898
1985
|
else
|
1899
|
-
terminal_parse_failure('tuesday')
|
1986
|
+
terminal_parse_failure('\'tuesday\'')
|
1900
1987
|
r3 = nil
|
1901
1988
|
end
|
1902
1989
|
if r3
|
1990
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
1903
1991
|
r0 = r3
|
1904
1992
|
else
|
1905
|
-
if has_terminal?('wednesday', false, index)
|
1906
|
-
r4 = instantiate_node(DayName,input, index...(index +
|
1907
|
-
@index +=
|
1993
|
+
if (match_len = has_terminal?('wednesday', false, index))
|
1994
|
+
r4 = instantiate_node(DayName,input, index...(index + match_len))
|
1995
|
+
@index += match_len
|
1908
1996
|
else
|
1909
|
-
terminal_parse_failure('wednesday')
|
1997
|
+
terminal_parse_failure('\'wednesday\'')
|
1910
1998
|
r4 = nil
|
1911
1999
|
end
|
1912
2000
|
if r4
|
2001
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
1913
2002
|
r0 = r4
|
1914
2003
|
else
|
1915
|
-
if has_terminal?('thursday', false, index)
|
1916
|
-
r5 = instantiate_node(DayName,input, index...(index +
|
1917
|
-
@index +=
|
2004
|
+
if (match_len = has_terminal?('thursday', false, index))
|
2005
|
+
r5 = instantiate_node(DayName,input, index...(index + match_len))
|
2006
|
+
@index += match_len
|
1918
2007
|
else
|
1919
|
-
terminal_parse_failure('thursday')
|
2008
|
+
terminal_parse_failure('\'thursday\'')
|
1920
2009
|
r5 = nil
|
1921
2010
|
end
|
1922
2011
|
if r5
|
2012
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
1923
2013
|
r0 = r5
|
1924
2014
|
else
|
1925
|
-
if has_terminal?('friday', false, index)
|
1926
|
-
r6 = instantiate_node(DayName,input, index...(index +
|
1927
|
-
@index +=
|
2015
|
+
if (match_len = has_terminal?('friday', false, index))
|
2016
|
+
r6 = instantiate_node(DayName,input, index...(index + match_len))
|
2017
|
+
@index += match_len
|
1928
2018
|
else
|
1929
|
-
terminal_parse_failure('friday')
|
2019
|
+
terminal_parse_failure('\'friday\'')
|
1930
2020
|
r6 = nil
|
1931
2021
|
end
|
1932
2022
|
if r6
|
2023
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
1933
2024
|
r0 = r6
|
1934
2025
|
else
|
1935
|
-
if has_terminal?('saturday', false, index)
|
1936
|
-
r7 = instantiate_node(DayName,input, index...(index +
|
1937
|
-
@index +=
|
2026
|
+
if (match_len = has_terminal?('saturday', false, index))
|
2027
|
+
r7 = instantiate_node(DayName,input, index...(index + match_len))
|
2028
|
+
@index += match_len
|
1938
2029
|
else
|
1939
|
-
terminal_parse_failure('saturday')
|
2030
|
+
terminal_parse_failure('\'saturday\'')
|
1940
2031
|
r7 = nil
|
1941
2032
|
end
|
1942
2033
|
if r7
|
2034
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
1943
2035
|
r0 = r7
|
1944
2036
|
else
|
1945
2037
|
@index = i0
|
@@ -1962,81 +2054,88 @@ module Timing
|
|
1962
2054
|
if node_cache[:short_day_name].has_key?(index)
|
1963
2055
|
cached = node_cache[:short_day_name][index]
|
1964
2056
|
if cached
|
1965
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2057
|
+
node_cache[:short_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1966
2058
|
@index = cached.interval.end
|
1967
2059
|
end
|
1968
2060
|
return cached
|
1969
2061
|
end
|
1970
2062
|
|
1971
2063
|
i0 = index
|
1972
|
-
if has_terminal?('sun', false, index)
|
1973
|
-
r1 = instantiate_node(DayName,input, index...(index +
|
1974
|
-
@index +=
|
2064
|
+
if (match_len = has_terminal?('sun', false, index))
|
2065
|
+
r1 = instantiate_node(DayName,input, index...(index + match_len))
|
2066
|
+
@index += match_len
|
1975
2067
|
else
|
1976
|
-
terminal_parse_failure('sun')
|
2068
|
+
terminal_parse_failure('\'sun\'')
|
1977
2069
|
r1 = nil
|
1978
2070
|
end
|
1979
2071
|
if r1
|
2072
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1980
2073
|
r0 = r1
|
1981
2074
|
else
|
1982
|
-
if has_terminal?('mon', false, index)
|
1983
|
-
r2 = instantiate_node(DayName,input, index...(index +
|
1984
|
-
@index +=
|
2075
|
+
if (match_len = has_terminal?('mon', false, index))
|
2076
|
+
r2 = instantiate_node(DayName,input, index...(index + match_len))
|
2077
|
+
@index += match_len
|
1985
2078
|
else
|
1986
|
-
terminal_parse_failure('mon')
|
2079
|
+
terminal_parse_failure('\'mon\'')
|
1987
2080
|
r2 = nil
|
1988
2081
|
end
|
1989
2082
|
if r2
|
2083
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1990
2084
|
r0 = r2
|
1991
2085
|
else
|
1992
|
-
if has_terminal?('tue', false, index)
|
1993
|
-
r3 = instantiate_node(DayName,input, index...(index +
|
1994
|
-
@index +=
|
2086
|
+
if (match_len = has_terminal?('tue', false, index))
|
2087
|
+
r3 = instantiate_node(DayName,input, index...(index + match_len))
|
2088
|
+
@index += match_len
|
1995
2089
|
else
|
1996
|
-
terminal_parse_failure('tue')
|
2090
|
+
terminal_parse_failure('\'tue\'')
|
1997
2091
|
r3 = nil
|
1998
2092
|
end
|
1999
2093
|
if r3
|
2094
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2000
2095
|
r0 = r3
|
2001
2096
|
else
|
2002
|
-
if has_terminal?('wed', false, index)
|
2003
|
-
r4 = instantiate_node(DayName,input, index...(index +
|
2004
|
-
@index +=
|
2097
|
+
if (match_len = has_terminal?('wed', false, index))
|
2098
|
+
r4 = instantiate_node(DayName,input, index...(index + match_len))
|
2099
|
+
@index += match_len
|
2005
2100
|
else
|
2006
|
-
terminal_parse_failure('wed')
|
2101
|
+
terminal_parse_failure('\'wed\'')
|
2007
2102
|
r4 = nil
|
2008
2103
|
end
|
2009
2104
|
if r4
|
2105
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2010
2106
|
r0 = r4
|
2011
2107
|
else
|
2012
|
-
if has_terminal?('thu', false, index)
|
2013
|
-
r5 = instantiate_node(DayName,input, index...(index +
|
2014
|
-
@index +=
|
2108
|
+
if (match_len = has_terminal?('thu', false, index))
|
2109
|
+
r5 = instantiate_node(DayName,input, index...(index + match_len))
|
2110
|
+
@index += match_len
|
2015
2111
|
else
|
2016
|
-
terminal_parse_failure('thu')
|
2112
|
+
terminal_parse_failure('\'thu\'')
|
2017
2113
|
r5 = nil
|
2018
2114
|
end
|
2019
2115
|
if r5
|
2116
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
2020
2117
|
r0 = r5
|
2021
2118
|
else
|
2022
|
-
if has_terminal?('fri', false, index)
|
2023
|
-
r6 = instantiate_node(DayName,input, index...(index +
|
2024
|
-
@index +=
|
2119
|
+
if (match_len = has_terminal?('fri', false, index))
|
2120
|
+
r6 = instantiate_node(DayName,input, index...(index + match_len))
|
2121
|
+
@index += match_len
|
2025
2122
|
else
|
2026
|
-
terminal_parse_failure('fri')
|
2123
|
+
terminal_parse_failure('\'fri\'')
|
2027
2124
|
r6 = nil
|
2028
2125
|
end
|
2029
2126
|
if r6
|
2127
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
2030
2128
|
r0 = r6
|
2031
2129
|
else
|
2032
|
-
if has_terminal?('sat', false, index)
|
2033
|
-
r7 = instantiate_node(DayName,input, index...(index +
|
2034
|
-
@index +=
|
2130
|
+
if (match_len = has_terminal?('sat', false, index))
|
2131
|
+
r7 = instantiate_node(DayName,input, index...(index + match_len))
|
2132
|
+
@index += match_len
|
2035
2133
|
else
|
2036
|
-
terminal_parse_failure('sat')
|
2134
|
+
terminal_parse_failure('\'sat\'')
|
2037
2135
|
r7 = nil
|
2038
2136
|
end
|
2039
2137
|
if r7
|
2138
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2040
2139
|
r0 = r7
|
2041
2140
|
else
|
2042
2141
|
@index = i0
|
@@ -2059,7 +2158,7 @@ module Timing
|
|
2059
2158
|
if node_cache[:month_name].has_key?(index)
|
2060
2159
|
cached = node_cache[:month_name][index]
|
2061
2160
|
if cached
|
2062
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2161
|
+
node_cache[:month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2063
2162
|
@index = cached.interval.end
|
2064
2163
|
end
|
2065
2164
|
return cached
|
@@ -2068,10 +2167,12 @@ module Timing
|
|
2068
2167
|
i0 = index
|
2069
2168
|
r1 = _nt_long_month_name
|
2070
2169
|
if r1
|
2170
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2071
2171
|
r0 = r1
|
2072
2172
|
else
|
2073
2173
|
r2 = _nt_short_month_name
|
2074
2174
|
if r2
|
2175
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2075
2176
|
r0 = r2
|
2076
2177
|
else
|
2077
2178
|
@index = i0
|
@@ -2089,131 +2190,143 @@ module Timing
|
|
2089
2190
|
if node_cache[:long_month_name].has_key?(index)
|
2090
2191
|
cached = node_cache[:long_month_name][index]
|
2091
2192
|
if cached
|
2092
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2193
|
+
node_cache[:long_month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2093
2194
|
@index = cached.interval.end
|
2094
2195
|
end
|
2095
2196
|
return cached
|
2096
2197
|
end
|
2097
2198
|
|
2098
2199
|
i0 = index
|
2099
|
-
if has_terminal?('january', false, index)
|
2100
|
-
r1 = instantiate_node(MonthName,input, index...(index +
|
2101
|
-
@index +=
|
2200
|
+
if (match_len = has_terminal?('january', false, index))
|
2201
|
+
r1 = instantiate_node(MonthName,input, index...(index + match_len))
|
2202
|
+
@index += match_len
|
2102
2203
|
else
|
2103
|
-
terminal_parse_failure('january')
|
2204
|
+
terminal_parse_failure('\'january\'')
|
2104
2205
|
r1 = nil
|
2105
2206
|
end
|
2106
2207
|
if r1
|
2208
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2107
2209
|
r0 = r1
|
2108
2210
|
else
|
2109
|
-
if has_terminal?('february', false, index)
|
2110
|
-
r2 = instantiate_node(MonthName,input, index...(index +
|
2111
|
-
@index +=
|
2211
|
+
if (match_len = has_terminal?('february', false, index))
|
2212
|
+
r2 = instantiate_node(MonthName,input, index...(index + match_len))
|
2213
|
+
@index += match_len
|
2112
2214
|
else
|
2113
|
-
terminal_parse_failure('february')
|
2215
|
+
terminal_parse_failure('\'february\'')
|
2114
2216
|
r2 = nil
|
2115
2217
|
end
|
2116
2218
|
if r2
|
2219
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2117
2220
|
r0 = r2
|
2118
2221
|
else
|
2119
|
-
if has_terminal?('march', false, index)
|
2120
|
-
r3 = instantiate_node(MonthName,input, index...(index +
|
2121
|
-
@index +=
|
2222
|
+
if (match_len = has_terminal?('march', false, index))
|
2223
|
+
r3 = instantiate_node(MonthName,input, index...(index + match_len))
|
2224
|
+
@index += match_len
|
2122
2225
|
else
|
2123
|
-
terminal_parse_failure('march')
|
2226
|
+
terminal_parse_failure('\'march\'')
|
2124
2227
|
r3 = nil
|
2125
2228
|
end
|
2126
2229
|
if r3
|
2230
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2127
2231
|
r0 = r3
|
2128
2232
|
else
|
2129
|
-
if has_terminal?('april', false, index)
|
2130
|
-
r4 = instantiate_node(MonthName,input, index...(index +
|
2131
|
-
@index +=
|
2233
|
+
if (match_len = has_terminal?('april', false, index))
|
2234
|
+
r4 = instantiate_node(MonthName,input, index...(index + match_len))
|
2235
|
+
@index += match_len
|
2132
2236
|
else
|
2133
|
-
terminal_parse_failure('april')
|
2237
|
+
terminal_parse_failure('\'april\'')
|
2134
2238
|
r4 = nil
|
2135
2239
|
end
|
2136
2240
|
if r4
|
2241
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2137
2242
|
r0 = r4
|
2138
2243
|
else
|
2139
|
-
if has_terminal?('may', false, index)
|
2140
|
-
r5 = instantiate_node(MonthName,input, index...(index +
|
2141
|
-
@index +=
|
2244
|
+
if (match_len = has_terminal?('may', false, index))
|
2245
|
+
r5 = instantiate_node(MonthName,input, index...(index + match_len))
|
2246
|
+
@index += match_len
|
2142
2247
|
else
|
2143
|
-
terminal_parse_failure('may')
|
2248
|
+
terminal_parse_failure('\'may\'')
|
2144
2249
|
r5 = nil
|
2145
2250
|
end
|
2146
2251
|
if r5
|
2252
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
2147
2253
|
r0 = r5
|
2148
2254
|
else
|
2149
|
-
if has_terminal?('june', false, index)
|
2150
|
-
r6 = instantiate_node(MonthName,input, index...(index +
|
2151
|
-
@index +=
|
2255
|
+
if (match_len = has_terminal?('june', false, index))
|
2256
|
+
r6 = instantiate_node(MonthName,input, index...(index + match_len))
|
2257
|
+
@index += match_len
|
2152
2258
|
else
|
2153
|
-
terminal_parse_failure('june')
|
2259
|
+
terminal_parse_failure('\'june\'')
|
2154
2260
|
r6 = nil
|
2155
2261
|
end
|
2156
2262
|
if r6
|
2263
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
2157
2264
|
r0 = r6
|
2158
2265
|
else
|
2159
|
-
if has_terminal?('july', false, index)
|
2160
|
-
r7 = instantiate_node(MonthName,input, index...(index +
|
2161
|
-
@index +=
|
2266
|
+
if (match_len = has_terminal?('july', false, index))
|
2267
|
+
r7 = instantiate_node(MonthName,input, index...(index + match_len))
|
2268
|
+
@index += match_len
|
2162
2269
|
else
|
2163
|
-
terminal_parse_failure('july')
|
2270
|
+
terminal_parse_failure('\'july\'')
|
2164
2271
|
r7 = nil
|
2165
2272
|
end
|
2166
2273
|
if r7
|
2274
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2167
2275
|
r0 = r7
|
2168
2276
|
else
|
2169
|
-
if has_terminal?('august', false, index)
|
2170
|
-
r8 = instantiate_node(MonthName,input, index...(index +
|
2171
|
-
@index +=
|
2277
|
+
if (match_len = has_terminal?('august', false, index))
|
2278
|
+
r8 = instantiate_node(MonthName,input, index...(index + match_len))
|
2279
|
+
@index += match_len
|
2172
2280
|
else
|
2173
|
-
terminal_parse_failure('august')
|
2281
|
+
terminal_parse_failure('\'august\'')
|
2174
2282
|
r8 = nil
|
2175
2283
|
end
|
2176
2284
|
if r8
|
2285
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
2177
2286
|
r0 = r8
|
2178
2287
|
else
|
2179
|
-
if has_terminal?('september', false, index)
|
2180
|
-
r9 = instantiate_node(MonthName,input, index...(index +
|
2181
|
-
@index +=
|
2288
|
+
if (match_len = has_terminal?('september', false, index))
|
2289
|
+
r9 = instantiate_node(MonthName,input, index...(index + match_len))
|
2290
|
+
@index += match_len
|
2182
2291
|
else
|
2183
|
-
terminal_parse_failure('september')
|
2292
|
+
terminal_parse_failure('\'september\'')
|
2184
2293
|
r9 = nil
|
2185
2294
|
end
|
2186
2295
|
if r9
|
2296
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2187
2297
|
r0 = r9
|
2188
2298
|
else
|
2189
|
-
if has_terminal?('october', false, index)
|
2190
|
-
r10 = instantiate_node(MonthName,input, index...(index +
|
2191
|
-
@index +=
|
2299
|
+
if (match_len = has_terminal?('october', false, index))
|
2300
|
+
r10 = instantiate_node(MonthName,input, index...(index + match_len))
|
2301
|
+
@index += match_len
|
2192
2302
|
else
|
2193
|
-
terminal_parse_failure('october')
|
2303
|
+
terminal_parse_failure('\'october\'')
|
2194
2304
|
r10 = nil
|
2195
2305
|
end
|
2196
2306
|
if r10
|
2307
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
2197
2308
|
r0 = r10
|
2198
2309
|
else
|
2199
|
-
if has_terminal?('november', false, index)
|
2200
|
-
r11 = instantiate_node(MonthName,input, index...(index +
|
2201
|
-
@index +=
|
2310
|
+
if (match_len = has_terminal?('november', false, index))
|
2311
|
+
r11 = instantiate_node(MonthName,input, index...(index + match_len))
|
2312
|
+
@index += match_len
|
2202
2313
|
else
|
2203
|
-
terminal_parse_failure('november')
|
2314
|
+
terminal_parse_failure('\'november\'')
|
2204
2315
|
r11 = nil
|
2205
2316
|
end
|
2206
2317
|
if r11
|
2318
|
+
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
2207
2319
|
r0 = r11
|
2208
2320
|
else
|
2209
|
-
if has_terminal?('december', false, index)
|
2210
|
-
r12 = instantiate_node(MonthName,input, index...(index +
|
2211
|
-
@index +=
|
2321
|
+
if (match_len = has_terminal?('december', false, index))
|
2322
|
+
r12 = instantiate_node(MonthName,input, index...(index + match_len))
|
2323
|
+
@index += match_len
|
2212
2324
|
else
|
2213
|
-
terminal_parse_failure('december')
|
2325
|
+
terminal_parse_failure('\'december\'')
|
2214
2326
|
r12 = nil
|
2215
2327
|
end
|
2216
2328
|
if r12
|
2329
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2217
2330
|
r0 = r12
|
2218
2331
|
else
|
2219
2332
|
@index = i0
|
@@ -2241,131 +2354,143 @@ module Timing
|
|
2241
2354
|
if node_cache[:short_month_name].has_key?(index)
|
2242
2355
|
cached = node_cache[:short_month_name][index]
|
2243
2356
|
if cached
|
2244
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2357
|
+
node_cache[:short_month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2245
2358
|
@index = cached.interval.end
|
2246
2359
|
end
|
2247
2360
|
return cached
|
2248
2361
|
end
|
2249
2362
|
|
2250
2363
|
i0 = index
|
2251
|
-
if has_terminal?('jan', false, index)
|
2252
|
-
r1 = instantiate_node(MonthName,input, index...(index +
|
2253
|
-
@index +=
|
2364
|
+
if (match_len = has_terminal?('jan', false, index))
|
2365
|
+
r1 = instantiate_node(MonthName,input, index...(index + match_len))
|
2366
|
+
@index += match_len
|
2254
2367
|
else
|
2255
|
-
terminal_parse_failure('jan')
|
2368
|
+
terminal_parse_failure('\'jan\'')
|
2256
2369
|
r1 = nil
|
2257
2370
|
end
|
2258
2371
|
if r1
|
2372
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2259
2373
|
r0 = r1
|
2260
2374
|
else
|
2261
|
-
if has_terminal?('feb', false, index)
|
2262
|
-
r2 = instantiate_node(MonthName,input, index...(index +
|
2263
|
-
@index +=
|
2375
|
+
if (match_len = has_terminal?('feb', false, index))
|
2376
|
+
r2 = instantiate_node(MonthName,input, index...(index + match_len))
|
2377
|
+
@index += match_len
|
2264
2378
|
else
|
2265
|
-
terminal_parse_failure('feb')
|
2379
|
+
terminal_parse_failure('\'feb\'')
|
2266
2380
|
r2 = nil
|
2267
2381
|
end
|
2268
2382
|
if r2
|
2383
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2269
2384
|
r0 = r2
|
2270
2385
|
else
|
2271
|
-
if has_terminal?('mar', false, index)
|
2272
|
-
r3 = instantiate_node(MonthName,input, index...(index +
|
2273
|
-
@index +=
|
2386
|
+
if (match_len = has_terminal?('mar', false, index))
|
2387
|
+
r3 = instantiate_node(MonthName,input, index...(index + match_len))
|
2388
|
+
@index += match_len
|
2274
2389
|
else
|
2275
|
-
terminal_parse_failure('mar')
|
2390
|
+
terminal_parse_failure('\'mar\'')
|
2276
2391
|
r3 = nil
|
2277
2392
|
end
|
2278
2393
|
if r3
|
2394
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2279
2395
|
r0 = r3
|
2280
2396
|
else
|
2281
|
-
if has_terminal?('apr', false, index)
|
2282
|
-
r4 = instantiate_node(MonthName,input, index...(index +
|
2283
|
-
@index +=
|
2397
|
+
if (match_len = has_terminal?('apr', false, index))
|
2398
|
+
r4 = instantiate_node(MonthName,input, index...(index + match_len))
|
2399
|
+
@index += match_len
|
2284
2400
|
else
|
2285
|
-
terminal_parse_failure('apr')
|
2401
|
+
terminal_parse_failure('\'apr\'')
|
2286
2402
|
r4 = nil
|
2287
2403
|
end
|
2288
2404
|
if r4
|
2405
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2289
2406
|
r0 = r4
|
2290
2407
|
else
|
2291
|
-
if has_terminal?('may', false, index)
|
2292
|
-
r5 = instantiate_node(MonthName,input, index...(index +
|
2293
|
-
@index +=
|
2408
|
+
if (match_len = has_terminal?('may', false, index))
|
2409
|
+
r5 = instantiate_node(MonthName,input, index...(index + match_len))
|
2410
|
+
@index += match_len
|
2294
2411
|
else
|
2295
|
-
terminal_parse_failure('may')
|
2412
|
+
terminal_parse_failure('\'may\'')
|
2296
2413
|
r5 = nil
|
2297
2414
|
end
|
2298
2415
|
if r5
|
2416
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
2299
2417
|
r0 = r5
|
2300
2418
|
else
|
2301
|
-
if has_terminal?('jun', false, index)
|
2302
|
-
r6 = instantiate_node(MonthName,input, index...(index +
|
2303
|
-
@index +=
|
2419
|
+
if (match_len = has_terminal?('jun', false, index))
|
2420
|
+
r6 = instantiate_node(MonthName,input, index...(index + match_len))
|
2421
|
+
@index += match_len
|
2304
2422
|
else
|
2305
|
-
terminal_parse_failure('jun')
|
2423
|
+
terminal_parse_failure('\'jun\'')
|
2306
2424
|
r6 = nil
|
2307
2425
|
end
|
2308
2426
|
if r6
|
2427
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
2309
2428
|
r0 = r6
|
2310
2429
|
else
|
2311
|
-
if has_terminal?('jul', false, index)
|
2312
|
-
r7 = instantiate_node(MonthName,input, index...(index +
|
2313
|
-
@index +=
|
2430
|
+
if (match_len = has_terminal?('jul', false, index))
|
2431
|
+
r7 = instantiate_node(MonthName,input, index...(index + match_len))
|
2432
|
+
@index += match_len
|
2314
2433
|
else
|
2315
|
-
terminal_parse_failure('jul')
|
2434
|
+
terminal_parse_failure('\'jul\'')
|
2316
2435
|
r7 = nil
|
2317
2436
|
end
|
2318
2437
|
if r7
|
2438
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2319
2439
|
r0 = r7
|
2320
2440
|
else
|
2321
|
-
if has_terminal?('aug', false, index)
|
2322
|
-
r8 = instantiate_node(MonthName,input, index...(index +
|
2323
|
-
@index +=
|
2441
|
+
if (match_len = has_terminal?('aug', false, index))
|
2442
|
+
r8 = instantiate_node(MonthName,input, index...(index + match_len))
|
2443
|
+
@index += match_len
|
2324
2444
|
else
|
2325
|
-
terminal_parse_failure('aug')
|
2445
|
+
terminal_parse_failure('\'aug\'')
|
2326
2446
|
r8 = nil
|
2327
2447
|
end
|
2328
2448
|
if r8
|
2449
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
2329
2450
|
r0 = r8
|
2330
2451
|
else
|
2331
|
-
if has_terminal?('sep', false, index)
|
2332
|
-
r9 = instantiate_node(MonthName,input, index...(index +
|
2333
|
-
@index +=
|
2452
|
+
if (match_len = has_terminal?('sep', false, index))
|
2453
|
+
r9 = instantiate_node(MonthName,input, index...(index + match_len))
|
2454
|
+
@index += match_len
|
2334
2455
|
else
|
2335
|
-
terminal_parse_failure('sep')
|
2456
|
+
terminal_parse_failure('\'sep\'')
|
2336
2457
|
r9 = nil
|
2337
2458
|
end
|
2338
2459
|
if r9
|
2460
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2339
2461
|
r0 = r9
|
2340
2462
|
else
|
2341
|
-
if has_terminal?('oct', false, index)
|
2342
|
-
r10 = instantiate_node(MonthName,input, index...(index +
|
2343
|
-
@index +=
|
2463
|
+
if (match_len = has_terminal?('oct', false, index))
|
2464
|
+
r10 = instantiate_node(MonthName,input, index...(index + match_len))
|
2465
|
+
@index += match_len
|
2344
2466
|
else
|
2345
|
-
terminal_parse_failure('oct')
|
2467
|
+
terminal_parse_failure('\'oct\'')
|
2346
2468
|
r10 = nil
|
2347
2469
|
end
|
2348
2470
|
if r10
|
2471
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
2349
2472
|
r0 = r10
|
2350
2473
|
else
|
2351
|
-
if has_terminal?('nov', false, index)
|
2352
|
-
r11 = instantiate_node(MonthName,input, index...(index +
|
2353
|
-
@index +=
|
2474
|
+
if (match_len = has_terminal?('nov', false, index))
|
2475
|
+
r11 = instantiate_node(MonthName,input, index...(index + match_len))
|
2476
|
+
@index += match_len
|
2354
2477
|
else
|
2355
|
-
terminal_parse_failure('nov')
|
2478
|
+
terminal_parse_failure('\'nov\'')
|
2356
2479
|
r11 = nil
|
2357
2480
|
end
|
2358
2481
|
if r11
|
2482
|
+
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
2359
2483
|
r0 = r11
|
2360
2484
|
else
|
2361
|
-
if has_terminal?('dec', false, index)
|
2362
|
-
r12 = instantiate_node(MonthName,input, index...(index +
|
2363
|
-
@index +=
|
2485
|
+
if (match_len = has_terminal?('dec', false, index))
|
2486
|
+
r12 = instantiate_node(MonthName,input, index...(index + match_len))
|
2487
|
+
@index += match_len
|
2364
2488
|
else
|
2365
|
-
terminal_parse_failure('dec')
|
2489
|
+
terminal_parse_failure('\'dec\'')
|
2366
2490
|
r12 = nil
|
2367
2491
|
end
|
2368
2492
|
if r12
|
2493
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2369
2494
|
r0 = r12
|
2370
2495
|
else
|
2371
2496
|
@index = i0
|
@@ -2396,27 +2521,29 @@ module Timing
|
|
2396
2521
|
if node_cache[:zone_offset].has_key?(index)
|
2397
2522
|
cached = node_cache[:zone_offset][index]
|
2398
2523
|
if cached
|
2399
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2524
|
+
node_cache[:zone_offset][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2400
2525
|
@index = cached.interval.end
|
2401
2526
|
end
|
2402
2527
|
return cached
|
2403
2528
|
end
|
2404
2529
|
|
2405
2530
|
i0, s0 = index, []
|
2406
|
-
if has_terminal?('\
|
2531
|
+
if has_terminal?(@regexps[gr = '\A[+-]'] ||= Regexp.new(gr), :regexp, index)
|
2407
2532
|
r1 = true
|
2408
2533
|
@index += 1
|
2409
2534
|
else
|
2535
|
+
terminal_parse_failure('[+-]')
|
2410
2536
|
r1 = nil
|
2411
2537
|
end
|
2412
2538
|
s0 << r1
|
2413
2539
|
if r1
|
2414
2540
|
s2, i2 = [], index
|
2415
2541
|
loop do
|
2416
|
-
if has_terminal?('\
|
2542
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2417
2543
|
r3 = true
|
2418
2544
|
@index += 1
|
2419
2545
|
else
|
2546
|
+
terminal_parse_failure('[\\d]')
|
2420
2547
|
r3 = nil
|
2421
2548
|
end
|
2422
2549
|
if r3
|
@@ -2432,15 +2559,18 @@ module Timing
|
|
2432
2559
|
@index = i2
|
2433
2560
|
r2 = nil
|
2434
2561
|
else
|
2562
|
+
if s2.size < 2
|
2563
|
+
@terminal_failures.pop
|
2564
|
+
end
|
2435
2565
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
2436
2566
|
end
|
2437
2567
|
s0 << r2
|
2438
2568
|
if r2
|
2439
|
-
if has_terminal?(':', false, index)
|
2440
|
-
r5 =
|
2441
|
-
@index +=
|
2569
|
+
if (match_len = has_terminal?(':', false, index))
|
2570
|
+
r5 = true
|
2571
|
+
@index += match_len
|
2442
2572
|
else
|
2443
|
-
terminal_parse_failure('
|
2573
|
+
terminal_parse_failure('\':\'')
|
2444
2574
|
r5 = nil
|
2445
2575
|
end
|
2446
2576
|
if r5
|
@@ -2452,10 +2582,11 @@ module Timing
|
|
2452
2582
|
if r4
|
2453
2583
|
s6, i6 = [], index
|
2454
2584
|
loop do
|
2455
|
-
if has_terminal?('\
|
2585
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2456
2586
|
r7 = true
|
2457
2587
|
@index += 1
|
2458
2588
|
else
|
2589
|
+
terminal_parse_failure('[\\d]')
|
2459
2590
|
r7 = nil
|
2460
2591
|
end
|
2461
2592
|
if r7
|
@@ -2471,6 +2602,9 @@ module Timing
|
|
2471
2602
|
@index = i6
|
2472
2603
|
r6 = nil
|
2473
2604
|
else
|
2605
|
+
if s6.size < 2
|
2606
|
+
@terminal_failures.pop
|
2607
|
+
end
|
2474
2608
|
r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
|
2475
2609
|
end
|
2476
2610
|
s0 << r6
|
@@ -2501,7 +2635,7 @@ module Timing
|
|
2501
2635
|
if node_cache[:hour_minute_second].has_key?(index)
|
2502
2636
|
cached = node_cache[:hour_minute_second][index]
|
2503
2637
|
if cached
|
2504
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2638
|
+
node_cache[:hour_minute_second][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2505
2639
|
@index = cached.interval.end
|
2506
2640
|
end
|
2507
2641
|
return cached
|
@@ -2511,10 +2645,11 @@ module Timing
|
|
2511
2645
|
i1, s1 = index, []
|
2512
2646
|
s2, i2 = [], index
|
2513
2647
|
loop do
|
2514
|
-
if has_terminal?('\
|
2648
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2515
2649
|
r3 = true
|
2516
2650
|
@index += 1
|
2517
2651
|
else
|
2652
|
+
terminal_parse_failure('[\\d]')
|
2518
2653
|
r3 = nil
|
2519
2654
|
end
|
2520
2655
|
if r3
|
@@ -2530,25 +2665,29 @@ module Timing
|
|
2530
2665
|
@index = i2
|
2531
2666
|
r2 = nil
|
2532
2667
|
else
|
2668
|
+
if s2.size < 2
|
2669
|
+
@terminal_failures.pop
|
2670
|
+
end
|
2533
2671
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
2534
2672
|
end
|
2535
2673
|
s1 << r2
|
2536
2674
|
if r2
|
2537
|
-
if has_terminal?(':', false, index)
|
2538
|
-
r4 =
|
2539
|
-
@index +=
|
2675
|
+
if (match_len = has_terminal?(':', false, index))
|
2676
|
+
r4 = true
|
2677
|
+
@index += match_len
|
2540
2678
|
else
|
2541
|
-
terminal_parse_failure('
|
2679
|
+
terminal_parse_failure('\':\'')
|
2542
2680
|
r4 = nil
|
2543
2681
|
end
|
2544
2682
|
s1 << r4
|
2545
2683
|
if r4
|
2546
2684
|
s5, i5 = [], index
|
2547
2685
|
loop do
|
2548
|
-
if has_terminal?('\
|
2686
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2549
2687
|
r6 = true
|
2550
2688
|
@index += 1
|
2551
2689
|
else
|
2690
|
+
terminal_parse_failure('[\\d]')
|
2552
2691
|
r6 = nil
|
2553
2692
|
end
|
2554
2693
|
if r6
|
@@ -2564,26 +2703,30 @@ module Timing
|
|
2564
2703
|
@index = i5
|
2565
2704
|
r5 = nil
|
2566
2705
|
else
|
2706
|
+
if s5.size < 2
|
2707
|
+
@terminal_failures.pop
|
2708
|
+
end
|
2567
2709
|
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
2568
2710
|
end
|
2569
2711
|
s1 << r5
|
2570
2712
|
if r5
|
2571
2713
|
i8, s8 = index, []
|
2572
|
-
if has_terminal?(':', false, index)
|
2573
|
-
r9 =
|
2574
|
-
@index +=
|
2714
|
+
if (match_len = has_terminal?(':', false, index))
|
2715
|
+
r9 = true
|
2716
|
+
@index += match_len
|
2575
2717
|
else
|
2576
|
-
terminal_parse_failure('
|
2718
|
+
terminal_parse_failure('\':\'')
|
2577
2719
|
r9 = nil
|
2578
2720
|
end
|
2579
2721
|
s8 << r9
|
2580
2722
|
if r9
|
2581
2723
|
s10, i10 = [], index
|
2582
2724
|
loop do
|
2583
|
-
if has_terminal?('\
|
2725
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2584
2726
|
r11 = true
|
2585
2727
|
@index += 1
|
2586
2728
|
else
|
2729
|
+
terminal_parse_failure('[\\d]')
|
2587
2730
|
r11 = nil
|
2588
2731
|
end
|
2589
2732
|
if r11
|
@@ -2599,6 +2742,9 @@ module Timing
|
|
2599
2742
|
@index = i10
|
2600
2743
|
r10 = nil
|
2601
2744
|
else
|
2745
|
+
if s10.size < 2
|
2746
|
+
@terminal_failures.pop
|
2747
|
+
end
|
2602
2748
|
r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
|
2603
2749
|
end
|
2604
2750
|
s8 << r10
|
@@ -2627,26 +2773,29 @@ module Timing
|
|
2627
2773
|
r1 = nil
|
2628
2774
|
end
|
2629
2775
|
if r1
|
2776
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2630
2777
|
r0 = r1
|
2631
2778
|
else
|
2632
|
-
if has_terminal?('beginning', false, index)
|
2633
|
-
r12 = instantiate_node(HourMinuteSecond,input, index...(index +
|
2634
|
-
@index +=
|
2779
|
+
if (match_len = has_terminal?('beginning', false, index))
|
2780
|
+
r12 = instantiate_node(HourMinuteSecond,input, index...(index + match_len))
|
2781
|
+
@index += match_len
|
2635
2782
|
else
|
2636
|
-
terminal_parse_failure('beginning')
|
2783
|
+
terminal_parse_failure('\'beginning\'')
|
2637
2784
|
r12 = nil
|
2638
2785
|
end
|
2639
2786
|
if r12
|
2787
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2640
2788
|
r0 = r12
|
2641
2789
|
else
|
2642
|
-
if has_terminal?('end', false, index)
|
2643
|
-
r13 = instantiate_node(HourMinuteSecond,input, index...(index +
|
2644
|
-
@index +=
|
2790
|
+
if (match_len = has_terminal?('end', false, index))
|
2791
|
+
r13 = instantiate_node(HourMinuteSecond,input, index...(index + match_len))
|
2792
|
+
@index += match_len
|
2645
2793
|
else
|
2646
|
-
terminal_parse_failure('end')
|
2794
|
+
terminal_parse_failure('\'end\'')
|
2647
2795
|
r13 = nil
|
2648
2796
|
end
|
2649
2797
|
if r13
|
2798
|
+
r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
|
2650
2799
|
r0 = r13
|
2651
2800
|
else
|
2652
2801
|
@index = i0
|
@@ -2665,7 +2814,7 @@ module Timing
|
|
2665
2814
|
if node_cache[:integer].has_key?(index)
|
2666
2815
|
cached = node_cache[:integer][index]
|
2667
2816
|
if cached
|
2668
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2817
|
+
node_cache[:integer][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2669
2818
|
@index = cached.interval.end
|
2670
2819
|
end
|
2671
2820
|
return cached
|
@@ -2673,10 +2822,11 @@ module Timing
|
|
2673
2822
|
|
2674
2823
|
s0, i0 = [], index
|
2675
2824
|
loop do
|
2676
|
-
if has_terminal?('\
|
2825
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2677
2826
|
r1 = true
|
2678
2827
|
@index += 1
|
2679
2828
|
else
|
2829
|
+
terminal_parse_failure('[\\d]')
|
2680
2830
|
r1 = nil
|
2681
2831
|
end
|
2682
2832
|
if r1
|
@@ -2702,16 +2852,17 @@ module Timing
|
|
2702
2852
|
if node_cache[:space].has_key?(index)
|
2703
2853
|
cached = node_cache[:space][index]
|
2704
2854
|
if cached
|
2705
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2855
|
+
node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2706
2856
|
@index = cached.interval.end
|
2707
2857
|
end
|
2708
2858
|
return cached
|
2709
2859
|
end
|
2710
2860
|
|
2711
|
-
if has_terminal?('\
|
2861
|
+
if has_terminal?(@regexps[gr = '\A[\\s\\t\\n]'] ||= Regexp.new(gr), :regexp, index)
|
2712
2862
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2713
2863
|
@index += 1
|
2714
2864
|
else
|
2865
|
+
terminal_parse_failure('[\\s\\t\\n]')
|
2715
2866
|
r0 = nil
|
2716
2867
|
end
|
2717
2868
|
|