timing 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +13 -1
- data/Rakefile +2 -1
- data/lib/timing/natural_time_language.rb +550 -375
- data/lib/timing/natural_time_language.treetop +10 -1
- data/lib/timing/natural_time_language_interpreters.rb +15 -4
- data/lib/timing/version.rb +1 -1
- data/timing.gemspec +1 -1
- metadata +4 -4
@@ -14,7 +14,7 @@ module Timing
|
|
14
14
|
elements[1]
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def zone_info
|
18
18
|
elements[3]
|
19
19
|
end
|
20
20
|
|
@@ -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
|
@@ -59,7 +59,7 @@ module Timing
|
|
59
59
|
r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
|
60
60
|
s0 << r4
|
61
61
|
if r4
|
62
|
-
r7 =
|
62
|
+
r7 = _nt_zone_info
|
63
63
|
if r7
|
64
64
|
r6 = r7
|
65
65
|
else
|
@@ -95,12 +95,44 @@ module Timing
|
|
95
95
|
r0
|
96
96
|
end
|
97
97
|
|
98
|
+
def _nt_zone_info
|
99
|
+
start_index = index
|
100
|
+
if node_cache[:zone_info].has_key?(index)
|
101
|
+
cached = node_cache[:zone_info][index]
|
102
|
+
if cached
|
103
|
+
node_cache[:zone_info][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
104
|
+
@index = cached.interval.end
|
105
|
+
end
|
106
|
+
return cached
|
107
|
+
end
|
108
|
+
|
109
|
+
i0 = index
|
110
|
+
r1 = _nt_zone_offset
|
111
|
+
if r1
|
112
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
113
|
+
r0 = r1
|
114
|
+
else
|
115
|
+
r2 = _nt_zone_name
|
116
|
+
if r2
|
117
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
118
|
+
r0 = r2
|
119
|
+
else
|
120
|
+
@index = i0
|
121
|
+
r0 = nil
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
node_cache[:zone_info][start_index] = r0
|
126
|
+
|
127
|
+
r0
|
128
|
+
end
|
129
|
+
|
98
130
|
def _nt_moment
|
99
131
|
start_index = index
|
100
132
|
if node_cache[:moment].has_key?(index)
|
101
133
|
cached = node_cache[:moment][index]
|
102
134
|
if cached
|
103
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
135
|
+
node_cache[:moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
104
136
|
@index = cached.interval.end
|
105
137
|
end
|
106
138
|
return cached
|
@@ -109,22 +141,27 @@ module Timing
|
|
109
141
|
i0 = index
|
110
142
|
r1 = _nt_timestamp
|
111
143
|
if r1
|
144
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
112
145
|
r0 = r1
|
113
146
|
else
|
114
147
|
r2 = _nt_time_ago
|
115
148
|
if r2
|
149
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
116
150
|
r0 = r2
|
117
151
|
else
|
118
152
|
r3 = _nt_moment_at_time
|
119
153
|
if r3
|
154
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
120
155
|
r0 = r3
|
121
156
|
else
|
122
157
|
r4 = _nt_before_from_moment
|
123
158
|
if r4
|
159
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
124
160
|
r0 = r4
|
125
161
|
else
|
126
162
|
r5 = _nt_date_moment
|
127
163
|
if r5
|
164
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
128
165
|
r0 = r5
|
129
166
|
else
|
130
167
|
@index = i0
|
@@ -145,7 +182,7 @@ module Timing
|
|
145
182
|
if node_cache[:date_moment].has_key?(index)
|
146
183
|
cached = node_cache[:date_moment][index]
|
147
184
|
if cached
|
148
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
185
|
+
node_cache[:date_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
149
186
|
@index = cached.interval.end
|
150
187
|
end
|
151
188
|
return cached
|
@@ -154,22 +191,27 @@ module Timing
|
|
154
191
|
i0 = index
|
155
192
|
r1 = _nt_named_moment
|
156
193
|
if r1
|
194
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
157
195
|
r0 = r1
|
158
196
|
else
|
159
197
|
r2 = _nt_last_next_day_name
|
160
198
|
if r2
|
199
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
161
200
|
r0 = r2
|
162
201
|
else
|
163
202
|
r3 = _nt_day_month_name_year
|
164
203
|
if r3
|
204
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
165
205
|
r0 = r3
|
166
206
|
else
|
167
207
|
r4 = _nt_year_month_day
|
168
208
|
if r4
|
209
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
169
210
|
r0 = r4
|
170
211
|
else
|
171
212
|
r5 = _nt_beginning_end_interval
|
172
213
|
if r5
|
214
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
173
215
|
r0 = r5
|
174
216
|
else
|
175
217
|
@index = i0
|
@@ -190,7 +232,7 @@ module Timing
|
|
190
232
|
if node_cache[:named_moment].has_key?(index)
|
191
233
|
cached = node_cache[:named_moment][index]
|
192
234
|
if cached
|
193
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
235
|
+
node_cache[:named_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
194
236
|
@index = cached.interval.end
|
195
237
|
end
|
196
238
|
return cached
|
@@ -199,18 +241,22 @@ module Timing
|
|
199
241
|
i0 = index
|
200
242
|
r1 = _nt_now
|
201
243
|
if r1
|
244
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
202
245
|
r0 = r1
|
203
246
|
else
|
204
247
|
r2 = _nt_today
|
205
248
|
if r2
|
249
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
206
250
|
r0 = r2
|
207
251
|
else
|
208
252
|
r3 = _nt_tomorrow
|
209
253
|
if r3
|
254
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
210
255
|
r0 = r3
|
211
256
|
else
|
212
257
|
r4 = _nt_yesterday
|
213
258
|
if r4
|
259
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
214
260
|
r0 = r4
|
215
261
|
else
|
216
262
|
@index = i0
|
@@ -244,7 +290,7 @@ module Timing
|
|
244
290
|
if node_cache[:last_next_day_name].has_key?(index)
|
245
291
|
cached = node_cache[:last_next_day_name][index]
|
246
292
|
if cached
|
247
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
293
|
+
node_cache[:last_next_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
248
294
|
@index = cached.interval.end
|
249
295
|
end
|
250
296
|
return cached
|
@@ -281,11 +327,11 @@ module Timing
|
|
281
327
|
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
282
328
|
s0 << r5
|
283
329
|
if r5
|
284
|
-
if has_terminal?('including today', false, index)
|
285
|
-
r8 = instantiate_node(SyntaxNode,input, index...(index +
|
286
|
-
@index +=
|
330
|
+
if (match_len = has_terminal?('including today', false, index))
|
331
|
+
r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
332
|
+
@index += match_len
|
287
333
|
else
|
288
|
-
terminal_parse_failure('including today')
|
334
|
+
terminal_parse_failure('\'including today\'')
|
289
335
|
r8 = nil
|
290
336
|
end
|
291
337
|
if r8
|
@@ -331,7 +377,7 @@ module Timing
|
|
331
377
|
if node_cache[:day_month_name_year].has_key?(index)
|
332
378
|
cached = node_cache[:day_month_name_year][index]
|
333
379
|
if cached
|
334
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
380
|
+
node_cache[:day_month_name_year][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
335
381
|
@index = cached.interval.end
|
336
382
|
end
|
337
383
|
return cached
|
@@ -424,7 +470,7 @@ module Timing
|
|
424
470
|
if node_cache[:year_month_day].has_key?(index)
|
425
471
|
cached = node_cache[:year_month_day][index]
|
426
472
|
if cached
|
427
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
473
|
+
node_cache[:year_month_day][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
428
474
|
@index = cached.interval.end
|
429
475
|
end
|
430
476
|
return cached
|
@@ -434,11 +480,11 @@ module Timing
|
|
434
480
|
r1 = _nt_integer
|
435
481
|
s0 << r1
|
436
482
|
if r1
|
437
|
-
if has_terminal?('-', false, index)
|
438
|
-
r2 =
|
439
|
-
@index +=
|
483
|
+
if (match_len = has_terminal?('-', false, index))
|
484
|
+
r2 = true
|
485
|
+
@index += match_len
|
440
486
|
else
|
441
|
-
terminal_parse_failure('
|
487
|
+
terminal_parse_failure('\'-\'')
|
442
488
|
r2 = nil
|
443
489
|
end
|
444
490
|
s0 << r2
|
@@ -446,11 +492,11 @@ module Timing
|
|
446
492
|
r3 = _nt_integer
|
447
493
|
s0 << r3
|
448
494
|
if r3
|
449
|
-
if has_terminal?('-', false, index)
|
450
|
-
r4 =
|
451
|
-
@index +=
|
495
|
+
if (match_len = has_terminal?('-', false, index))
|
496
|
+
r4 = true
|
497
|
+
@index += match_len
|
452
498
|
else
|
453
|
-
terminal_parse_failure('
|
499
|
+
terminal_parse_failure('\'-\'')
|
454
500
|
r4 = nil
|
455
501
|
end
|
456
502
|
s0 << r4
|
@@ -489,7 +535,7 @@ module Timing
|
|
489
535
|
if node_cache[:beginning_end_interval].has_key?(index)
|
490
536
|
cached = node_cache[:beginning_end_interval][index]
|
491
537
|
if cached
|
492
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
538
|
+
node_cache[:beginning_end_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
493
539
|
@index = cached.interval.end
|
494
540
|
end
|
495
541
|
return cached
|
@@ -544,7 +590,7 @@ module Timing
|
|
544
590
|
if node_cache[:time_ago].has_key?(index)
|
545
591
|
cached = node_cache[:time_ago][index]
|
546
592
|
if cached
|
547
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
593
|
+
node_cache[:time_ago][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
548
594
|
@index = cached.interval.end
|
549
595
|
end
|
550
596
|
return cached
|
@@ -581,11 +627,11 @@ module Timing
|
|
581
627
|
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
582
628
|
s0 << r5
|
583
629
|
if r5
|
584
|
-
if has_terminal?('ago', false, index)
|
585
|
-
r7 = instantiate_node(SyntaxNode,input, index...(index +
|
586
|
-
@index +=
|
630
|
+
if (match_len = has_terminal?('ago', false, index))
|
631
|
+
r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
632
|
+
@index += match_len
|
587
633
|
else
|
588
|
-
terminal_parse_failure('ago')
|
634
|
+
terminal_parse_failure('\'ago\'')
|
589
635
|
r7 = nil
|
590
636
|
end
|
591
637
|
s0 << r7
|
@@ -621,7 +667,7 @@ module Timing
|
|
621
667
|
if node_cache[:moment_at_time].has_key?(index)
|
622
668
|
cached = node_cache[:moment_at_time][index]
|
623
669
|
if cached
|
624
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
670
|
+
node_cache[:moment_at_time][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
625
671
|
@index = cached.interval.end
|
626
672
|
end
|
627
673
|
return cached
|
@@ -643,11 +689,11 @@ module Timing
|
|
643
689
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
644
690
|
s0 << r2
|
645
691
|
if r2
|
646
|
-
if has_terminal?('at', false, index)
|
647
|
-
r4 = instantiate_node(SyntaxNode,input, index...(index +
|
648
|
-
@index +=
|
692
|
+
if (match_len = has_terminal?('at', false, index))
|
693
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
694
|
+
@index += match_len
|
649
695
|
else
|
650
|
-
terminal_parse_failure('at')
|
696
|
+
terminal_parse_failure('\'at\'')
|
651
697
|
r4 = nil
|
652
698
|
end
|
653
699
|
s0 << r4
|
@@ -706,7 +752,7 @@ module Timing
|
|
706
752
|
if node_cache[:before_from_moment].has_key?(index)
|
707
753
|
cached = node_cache[:before_from_moment][index]
|
708
754
|
if cached
|
709
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
755
|
+
node_cache[:before_from_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
710
756
|
@index = cached.interval.end
|
711
757
|
end
|
712
758
|
return cached
|
@@ -787,7 +833,7 @@ module Timing
|
|
787
833
|
if node_cache[:timestamp].has_key?(index)
|
788
834
|
cached = node_cache[:timestamp][index]
|
789
835
|
if cached
|
790
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
836
|
+
node_cache[:timestamp][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
791
837
|
@index = cached.interval.end
|
792
838
|
end
|
793
839
|
return cached
|
@@ -796,10 +842,11 @@ module Timing
|
|
796
842
|
i0, s0 = index, []
|
797
843
|
s1, i1 = [], index
|
798
844
|
loop do
|
799
|
-
if has_terminal?('\
|
845
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
800
846
|
r2 = true
|
801
847
|
@index += 1
|
802
848
|
else
|
849
|
+
terminal_parse_failure('[\\d]')
|
803
850
|
r2 = nil
|
804
851
|
end
|
805
852
|
if r2
|
@@ -815,25 +862,29 @@ module Timing
|
|
815
862
|
@index = i1
|
816
863
|
r1 = nil
|
817
864
|
else
|
865
|
+
if s1.size < 4
|
866
|
+
@terminal_failures.pop
|
867
|
+
end
|
818
868
|
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
819
869
|
end
|
820
870
|
s0 << r1
|
821
871
|
if r1
|
822
|
-
if has_terminal?('-', false, index)
|
823
|
-
r3 =
|
824
|
-
@index +=
|
872
|
+
if (match_len = has_terminal?('-', false, index))
|
873
|
+
r3 = true
|
874
|
+
@index += match_len
|
825
875
|
else
|
826
|
-
terminal_parse_failure('
|
876
|
+
terminal_parse_failure('\'-\'')
|
827
877
|
r3 = nil
|
828
878
|
end
|
829
879
|
s0 << r3
|
830
880
|
if r3
|
831
881
|
s4, i4 = [], index
|
832
882
|
loop do
|
833
|
-
if has_terminal?('\
|
883
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
834
884
|
r5 = true
|
835
885
|
@index += 1
|
836
886
|
else
|
887
|
+
terminal_parse_failure('[\\d]')
|
837
888
|
r5 = nil
|
838
889
|
end
|
839
890
|
if r5
|
@@ -849,25 +900,29 @@ module Timing
|
|
849
900
|
@index = i4
|
850
901
|
r4 = nil
|
851
902
|
else
|
903
|
+
if s4.size < 2
|
904
|
+
@terminal_failures.pop
|
905
|
+
end
|
852
906
|
r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
|
853
907
|
end
|
854
908
|
s0 << r4
|
855
909
|
if r4
|
856
|
-
if has_terminal?('-', false, index)
|
857
|
-
r6 =
|
858
|
-
@index +=
|
910
|
+
if (match_len = has_terminal?('-', false, index))
|
911
|
+
r6 = true
|
912
|
+
@index += match_len
|
859
913
|
else
|
860
|
-
terminal_parse_failure('
|
914
|
+
terminal_parse_failure('\'-\'')
|
861
915
|
r6 = nil
|
862
916
|
end
|
863
917
|
s0 << r6
|
864
918
|
if r6
|
865
919
|
s7, i7 = [], index
|
866
920
|
loop do
|
867
|
-
if has_terminal?('\
|
921
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
868
922
|
r8 = true
|
869
923
|
@index += 1
|
870
924
|
else
|
925
|
+
terminal_parse_failure('[\\d]')
|
871
926
|
r8 = nil
|
872
927
|
end
|
873
928
|
if r8
|
@@ -883,6 +938,9 @@ module Timing
|
|
883
938
|
@index = i7
|
884
939
|
r7 = nil
|
885
940
|
else
|
941
|
+
if s7.size < 2
|
942
|
+
@terminal_failures.pop
|
943
|
+
end
|
886
944
|
r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
|
887
945
|
end
|
888
946
|
s0 << r7
|
@@ -899,11 +957,11 @@ module Timing
|
|
899
957
|
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
|
900
958
|
s0 << r9
|
901
959
|
if r9
|
902
|
-
if has_terminal?('t', false, index)
|
903
|
-
r12 =
|
904
|
-
@index +=
|
960
|
+
if (match_len = has_terminal?('t', false, index))
|
961
|
+
r12 = true
|
962
|
+
@index += match_len
|
905
963
|
else
|
906
|
-
terminal_parse_failure('t')
|
964
|
+
terminal_parse_failure('\'t\'')
|
907
965
|
r12 = nil
|
908
966
|
end
|
909
967
|
if r12
|
@@ -927,10 +985,11 @@ module Timing
|
|
927
985
|
if r13
|
928
986
|
s15, i15 = [], index
|
929
987
|
loop do
|
930
|
-
if has_terminal?('\
|
988
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
931
989
|
r16 = true
|
932
990
|
@index += 1
|
933
991
|
else
|
992
|
+
terminal_parse_failure('[\\d]')
|
934
993
|
r16 = nil
|
935
994
|
end
|
936
995
|
if r16
|
@@ -946,25 +1005,29 @@ module Timing
|
|
946
1005
|
@index = i15
|
947
1006
|
r15 = nil
|
948
1007
|
else
|
1008
|
+
if s15.size < 2
|
1009
|
+
@terminal_failures.pop
|
1010
|
+
end
|
949
1011
|
r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
|
950
1012
|
end
|
951
1013
|
s0 << r15
|
952
1014
|
if r15
|
953
|
-
if has_terminal?(':', false, index)
|
954
|
-
r17 =
|
955
|
-
@index +=
|
1015
|
+
if (match_len = has_terminal?(':', false, index))
|
1016
|
+
r17 = true
|
1017
|
+
@index += match_len
|
956
1018
|
else
|
957
|
-
terminal_parse_failure('
|
1019
|
+
terminal_parse_failure('\':\'')
|
958
1020
|
r17 = nil
|
959
1021
|
end
|
960
1022
|
s0 << r17
|
961
1023
|
if r17
|
962
1024
|
s18, i18 = [], index
|
963
1025
|
loop do
|
964
|
-
if has_terminal?('\
|
1026
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
965
1027
|
r19 = true
|
966
1028
|
@index += 1
|
967
1029
|
else
|
1030
|
+
terminal_parse_failure('[\\d]')
|
968
1031
|
r19 = nil
|
969
1032
|
end
|
970
1033
|
if r19
|
@@ -980,25 +1043,29 @@ module Timing
|
|
980
1043
|
@index = i18
|
981
1044
|
r18 = nil
|
982
1045
|
else
|
1046
|
+
if s18.size < 2
|
1047
|
+
@terminal_failures.pop
|
1048
|
+
end
|
983
1049
|
r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
|
984
1050
|
end
|
985
1051
|
s0 << r18
|
986
1052
|
if r18
|
987
|
-
if has_terminal?(':', false, index)
|
988
|
-
r20 =
|
989
|
-
@index +=
|
1053
|
+
if (match_len = has_terminal?(':', false, index))
|
1054
|
+
r20 = true
|
1055
|
+
@index += match_len
|
990
1056
|
else
|
991
|
-
terminal_parse_failure('
|
1057
|
+
terminal_parse_failure('\':\'')
|
992
1058
|
r20 = nil
|
993
1059
|
end
|
994
1060
|
s0 << r20
|
995
1061
|
if r20
|
996
1062
|
s21, i21 = [], index
|
997
1063
|
loop do
|
998
|
-
if has_terminal?('\
|
1064
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
999
1065
|
r22 = true
|
1000
1066
|
@index += 1
|
1001
1067
|
else
|
1068
|
+
terminal_parse_failure('[\\d]')
|
1002
1069
|
r22 = nil
|
1003
1070
|
end
|
1004
1071
|
if r22
|
@@ -1014,6 +1081,9 @@ module Timing
|
|
1014
1081
|
@index = i21
|
1015
1082
|
r21 = nil
|
1016
1083
|
else
|
1084
|
+
if s21.size < 2
|
1085
|
+
@terminal_failures.pop
|
1086
|
+
end
|
1017
1087
|
r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
|
1018
1088
|
end
|
1019
1089
|
s0 << r21
|
@@ -1047,17 +1117,17 @@ module Timing
|
|
1047
1117
|
if node_cache[:now].has_key?(index)
|
1048
1118
|
cached = node_cache[:now][index]
|
1049
1119
|
if cached
|
1050
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1120
|
+
node_cache[:now][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1051
1121
|
@index = cached.interval.end
|
1052
1122
|
end
|
1053
1123
|
return cached
|
1054
1124
|
end
|
1055
1125
|
|
1056
|
-
if has_terminal?('now', false, index)
|
1057
|
-
r0 = instantiate_node(Now,input, index...(index +
|
1058
|
-
@index +=
|
1126
|
+
if (match_len = has_terminal?('now', false, index))
|
1127
|
+
r0 = instantiate_node(Now,input, index...(index + match_len))
|
1128
|
+
@index += match_len
|
1059
1129
|
else
|
1060
|
-
terminal_parse_failure('now')
|
1130
|
+
terminal_parse_failure('\'now\'')
|
1061
1131
|
r0 = nil
|
1062
1132
|
end
|
1063
1133
|
|
@@ -1071,17 +1141,17 @@ module Timing
|
|
1071
1141
|
if node_cache[:today].has_key?(index)
|
1072
1142
|
cached = node_cache[:today][index]
|
1073
1143
|
if cached
|
1074
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1144
|
+
node_cache[:today][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1075
1145
|
@index = cached.interval.end
|
1076
1146
|
end
|
1077
1147
|
return cached
|
1078
1148
|
end
|
1079
1149
|
|
1080
|
-
if has_terminal?('today', false, index)
|
1081
|
-
r0 = instantiate_node(Today,input, index...(index +
|
1082
|
-
@index +=
|
1150
|
+
if (match_len = has_terminal?('today', false, index))
|
1151
|
+
r0 = instantiate_node(Today,input, index...(index + match_len))
|
1152
|
+
@index += match_len
|
1083
1153
|
else
|
1084
|
-
terminal_parse_failure('today')
|
1154
|
+
terminal_parse_failure('\'today\'')
|
1085
1155
|
r0 = nil
|
1086
1156
|
end
|
1087
1157
|
|
@@ -1095,17 +1165,17 @@ module Timing
|
|
1095
1165
|
if node_cache[:tomorrow].has_key?(index)
|
1096
1166
|
cached = node_cache[:tomorrow][index]
|
1097
1167
|
if cached
|
1098
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1168
|
+
node_cache[:tomorrow][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1099
1169
|
@index = cached.interval.end
|
1100
1170
|
end
|
1101
1171
|
return cached
|
1102
1172
|
end
|
1103
1173
|
|
1104
|
-
if has_terminal?('tomorrow', false, index)
|
1105
|
-
r0 = instantiate_node(Tomorrow,input, index...(index +
|
1106
|
-
@index +=
|
1174
|
+
if (match_len = has_terminal?('tomorrow', false, index))
|
1175
|
+
r0 = instantiate_node(Tomorrow,input, index...(index + match_len))
|
1176
|
+
@index += match_len
|
1107
1177
|
else
|
1108
|
-
terminal_parse_failure('tomorrow')
|
1178
|
+
terminal_parse_failure('\'tomorrow\'')
|
1109
1179
|
r0 = nil
|
1110
1180
|
end
|
1111
1181
|
|
@@ -1119,17 +1189,17 @@ module Timing
|
|
1119
1189
|
if node_cache[:yesterday].has_key?(index)
|
1120
1190
|
cached = node_cache[:yesterday][index]
|
1121
1191
|
if cached
|
1122
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1192
|
+
node_cache[:yesterday][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1123
1193
|
@index = cached.interval.end
|
1124
1194
|
end
|
1125
1195
|
return cached
|
1126
1196
|
end
|
1127
1197
|
|
1128
|
-
if has_terminal?('yesterday', false, index)
|
1129
|
-
r0 = instantiate_node(Yesterday,input, index...(index +
|
1130
|
-
@index +=
|
1198
|
+
if (match_len = has_terminal?('yesterday', false, index))
|
1199
|
+
r0 = instantiate_node(Yesterday,input, index...(index + match_len))
|
1200
|
+
@index += match_len
|
1131
1201
|
else
|
1132
|
-
terminal_parse_failure('yesterday')
|
1202
|
+
terminal_parse_failure('\'yesterday\'')
|
1133
1203
|
r0 = nil
|
1134
1204
|
end
|
1135
1205
|
|
@@ -1143,7 +1213,7 @@ module Timing
|
|
1143
1213
|
if node_cache[:last_next].has_key?(index)
|
1144
1214
|
cached = node_cache[:last_next][index]
|
1145
1215
|
if cached
|
1146
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1216
|
+
node_cache[:last_next][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1147
1217
|
@index = cached.interval.end
|
1148
1218
|
end
|
1149
1219
|
return cached
|
@@ -1152,10 +1222,12 @@ module Timing
|
|
1152
1222
|
i0 = index
|
1153
1223
|
r1 = _nt_last
|
1154
1224
|
if r1
|
1225
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1155
1226
|
r0 = r1
|
1156
1227
|
else
|
1157
1228
|
r2 = _nt_next
|
1158
1229
|
if r2
|
1230
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1159
1231
|
r0 = r2
|
1160
1232
|
else
|
1161
1233
|
@index = i0
|
@@ -1173,17 +1245,17 @@ module Timing
|
|
1173
1245
|
if node_cache[:last].has_key?(index)
|
1174
1246
|
cached = node_cache[:last][index]
|
1175
1247
|
if cached
|
1176
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1248
|
+
node_cache[:last][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1177
1249
|
@index = cached.interval.end
|
1178
1250
|
end
|
1179
1251
|
return cached
|
1180
1252
|
end
|
1181
1253
|
|
1182
|
-
if has_terminal?('last', false, index)
|
1183
|
-
r0 = instantiate_node(LastNext,input, index...(index +
|
1184
|
-
@index +=
|
1254
|
+
if (match_len = has_terminal?('last', false, index))
|
1255
|
+
r0 = instantiate_node(LastNext,input, index...(index + match_len))
|
1256
|
+
@index += match_len
|
1185
1257
|
else
|
1186
|
-
terminal_parse_failure('last')
|
1258
|
+
terminal_parse_failure('\'last\'')
|
1187
1259
|
r0 = nil
|
1188
1260
|
end
|
1189
1261
|
|
@@ -1197,17 +1269,17 @@ module Timing
|
|
1197
1269
|
if node_cache[:next].has_key?(index)
|
1198
1270
|
cached = node_cache[:next][index]
|
1199
1271
|
if cached
|
1200
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1272
|
+
node_cache[:next][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1201
1273
|
@index = cached.interval.end
|
1202
1274
|
end
|
1203
1275
|
return cached
|
1204
1276
|
end
|
1205
1277
|
|
1206
|
-
if has_terminal?('next', false, index)
|
1207
|
-
r0 = instantiate_node(LastNext,input, index...(index +
|
1208
|
-
@index +=
|
1278
|
+
if (match_len = has_terminal?('next', false, index))
|
1279
|
+
r0 = instantiate_node(LastNext,input, index...(index + match_len))
|
1280
|
+
@index += match_len
|
1209
1281
|
else
|
1210
|
-
terminal_parse_failure('next')
|
1282
|
+
terminal_parse_failure('\'next\'')
|
1211
1283
|
r0 = nil
|
1212
1284
|
end
|
1213
1285
|
|
@@ -1221,7 +1293,7 @@ module Timing
|
|
1221
1293
|
if node_cache[:beginning_end].has_key?(index)
|
1222
1294
|
cached = node_cache[:beginning_end][index]
|
1223
1295
|
if cached
|
1224
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1296
|
+
node_cache[:beginning_end][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1225
1297
|
@index = cached.interval.end
|
1226
1298
|
end
|
1227
1299
|
return cached
|
@@ -1230,10 +1302,12 @@ module Timing
|
|
1230
1302
|
i0 = index
|
1231
1303
|
r1 = _nt_beginning_of
|
1232
1304
|
if r1
|
1305
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1233
1306
|
r0 = r1
|
1234
1307
|
else
|
1235
1308
|
r2 = _nt_end_of
|
1236
1309
|
if r2
|
1310
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1237
1311
|
r0 = r2
|
1238
1312
|
else
|
1239
1313
|
@index = i0
|
@@ -1258,18 +1332,18 @@ module Timing
|
|
1258
1332
|
if node_cache[:beginning_of].has_key?(index)
|
1259
1333
|
cached = node_cache[:beginning_of][index]
|
1260
1334
|
if cached
|
1261
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1335
|
+
node_cache[:beginning_of][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1262
1336
|
@index = cached.interval.end
|
1263
1337
|
end
|
1264
1338
|
return cached
|
1265
1339
|
end
|
1266
1340
|
|
1267
1341
|
i0, s0 = index, []
|
1268
|
-
if has_terminal?('beginning', false, index)
|
1269
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1270
|
-
@index +=
|
1342
|
+
if (match_len = has_terminal?('beginning', false, index))
|
1343
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1344
|
+
@index += match_len
|
1271
1345
|
else
|
1272
|
-
terminal_parse_failure('beginning')
|
1346
|
+
terminal_parse_failure('\'beginning\'')
|
1273
1347
|
r1 = nil
|
1274
1348
|
end
|
1275
1349
|
s0 << r1
|
@@ -1286,11 +1360,11 @@ module Timing
|
|
1286
1360
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
1287
1361
|
s0 << r2
|
1288
1362
|
if r2
|
1289
|
-
if has_terminal?('of', false, index)
|
1290
|
-
r4 = instantiate_node(SyntaxNode,input, index...(index +
|
1291
|
-
@index +=
|
1363
|
+
if (match_len = has_terminal?('of', false, index))
|
1364
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1365
|
+
@index += match_len
|
1292
1366
|
else
|
1293
|
-
terminal_parse_failure('of')
|
1367
|
+
terminal_parse_failure('\'of\'')
|
1294
1368
|
r4 = nil
|
1295
1369
|
end
|
1296
1370
|
s0 << r4
|
@@ -1321,18 +1395,18 @@ module Timing
|
|
1321
1395
|
if node_cache[:end_of].has_key?(index)
|
1322
1396
|
cached = node_cache[:end_of][index]
|
1323
1397
|
if cached
|
1324
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1398
|
+
node_cache[:end_of][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1325
1399
|
@index = cached.interval.end
|
1326
1400
|
end
|
1327
1401
|
return cached
|
1328
1402
|
end
|
1329
1403
|
|
1330
1404
|
i0, s0 = index, []
|
1331
|
-
if has_terminal?('end', false, index)
|
1332
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1333
|
-
@index +=
|
1405
|
+
if (match_len = has_terminal?('end', false, index))
|
1406
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1407
|
+
@index += match_len
|
1334
1408
|
else
|
1335
|
-
terminal_parse_failure('end')
|
1409
|
+
terminal_parse_failure('\'end\'')
|
1336
1410
|
r1 = nil
|
1337
1411
|
end
|
1338
1412
|
s0 << r1
|
@@ -1349,11 +1423,11 @@ module Timing
|
|
1349
1423
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
1350
1424
|
s0 << r2
|
1351
1425
|
if r2
|
1352
|
-
if has_terminal?('of', false, index)
|
1353
|
-
r4 = instantiate_node(SyntaxNode,input, index...(index +
|
1354
|
-
@index +=
|
1426
|
+
if (match_len = has_terminal?('of', false, index))
|
1427
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1428
|
+
@index += match_len
|
1355
1429
|
else
|
1356
|
-
terminal_parse_failure('of')
|
1430
|
+
terminal_parse_failure('\'of\'')
|
1357
1431
|
r4 = nil
|
1358
1432
|
end
|
1359
1433
|
s0 << r4
|
@@ -1377,7 +1451,7 @@ module Timing
|
|
1377
1451
|
if node_cache[:before_from].has_key?(index)
|
1378
1452
|
cached = node_cache[:before_from][index]
|
1379
1453
|
if cached
|
1380
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1454
|
+
node_cache[:before_from][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1381
1455
|
@index = cached.interval.end
|
1382
1456
|
end
|
1383
1457
|
return cached
|
@@ -1386,10 +1460,12 @@ module Timing
|
|
1386
1460
|
i0 = index
|
1387
1461
|
r1 = _nt_before
|
1388
1462
|
if r1
|
1463
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1389
1464
|
r0 = r1
|
1390
1465
|
else
|
1391
1466
|
r2 = _nt_from
|
1392
1467
|
if r2
|
1468
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1393
1469
|
r0 = r2
|
1394
1470
|
else
|
1395
1471
|
@index = i0
|
@@ -1407,17 +1483,17 @@ module Timing
|
|
1407
1483
|
if node_cache[:before].has_key?(index)
|
1408
1484
|
cached = node_cache[:before][index]
|
1409
1485
|
if cached
|
1410
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1486
|
+
node_cache[:before][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1411
1487
|
@index = cached.interval.end
|
1412
1488
|
end
|
1413
1489
|
return cached
|
1414
1490
|
end
|
1415
1491
|
|
1416
|
-
if has_terminal?('before', false, index)
|
1417
|
-
r0 = instantiate_node(BeforeFrom,input, index...(index +
|
1418
|
-
@index +=
|
1492
|
+
if (match_len = has_terminal?('before', false, index))
|
1493
|
+
r0 = instantiate_node(BeforeFrom,input, index...(index + match_len))
|
1494
|
+
@index += match_len
|
1419
1495
|
else
|
1420
|
-
terminal_parse_failure('before')
|
1496
|
+
terminal_parse_failure('\'before\'')
|
1421
1497
|
r0 = nil
|
1422
1498
|
end
|
1423
1499
|
|
@@ -1431,17 +1507,17 @@ module Timing
|
|
1431
1507
|
if node_cache[:from].has_key?(index)
|
1432
1508
|
cached = node_cache[:from][index]
|
1433
1509
|
if cached
|
1434
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1510
|
+
node_cache[:from][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1435
1511
|
@index = cached.interval.end
|
1436
1512
|
end
|
1437
1513
|
return cached
|
1438
1514
|
end
|
1439
1515
|
|
1440
|
-
if has_terminal?('from', false, index)
|
1441
|
-
r0 = instantiate_node(BeforeFrom,input, index...(index +
|
1442
|
-
@index +=
|
1516
|
+
if (match_len = has_terminal?('from', false, index))
|
1517
|
+
r0 = instantiate_node(BeforeFrom,input, index...(index + match_len))
|
1518
|
+
@index += match_len
|
1443
1519
|
else
|
1444
|
-
terminal_parse_failure('from')
|
1520
|
+
terminal_parse_failure('\'from\'')
|
1445
1521
|
r0 = nil
|
1446
1522
|
end
|
1447
1523
|
|
@@ -1455,7 +1531,7 @@ module Timing
|
|
1455
1531
|
if node_cache[:interval].has_key?(index)
|
1456
1532
|
cached = node_cache[:interval][index]
|
1457
1533
|
if cached
|
1458
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1534
|
+
node_cache[:interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1459
1535
|
@index = cached.interval.end
|
1460
1536
|
end
|
1461
1537
|
return cached
|
@@ -1464,30 +1540,37 @@ module Timing
|
|
1464
1540
|
i0 = index
|
1465
1541
|
r1 = _nt_second_interval
|
1466
1542
|
if r1
|
1543
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1467
1544
|
r0 = r1
|
1468
1545
|
else
|
1469
1546
|
r2 = _nt_minute_interval
|
1470
1547
|
if r2
|
1548
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1471
1549
|
r0 = r2
|
1472
1550
|
else
|
1473
1551
|
r3 = _nt_hour_interval
|
1474
1552
|
if r3
|
1553
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
1475
1554
|
r0 = r3
|
1476
1555
|
else
|
1477
1556
|
r4 = _nt_day_interval
|
1478
1557
|
if r4
|
1558
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
1479
1559
|
r0 = r4
|
1480
1560
|
else
|
1481
1561
|
r5 = _nt_week_interval
|
1482
1562
|
if r5
|
1563
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
1483
1564
|
r0 = r5
|
1484
1565
|
else
|
1485
1566
|
r6 = _nt_month_interval
|
1486
1567
|
if r6
|
1568
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
1487
1569
|
r0 = r6
|
1488
1570
|
else
|
1489
1571
|
r7 = _nt_year_interval
|
1490
1572
|
if r7
|
1573
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
1491
1574
|
r0 = r7
|
1492
1575
|
else
|
1493
1576
|
@index = i0
|
@@ -1513,27 +1596,27 @@ module Timing
|
|
1513
1596
|
if node_cache[:second_interval].has_key?(index)
|
1514
1597
|
cached = node_cache[:second_interval][index]
|
1515
1598
|
if cached
|
1516
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1599
|
+
node_cache[:second_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1517
1600
|
@index = cached.interval.end
|
1518
1601
|
end
|
1519
1602
|
return cached
|
1520
1603
|
end
|
1521
1604
|
|
1522
1605
|
i0, s0 = index, []
|
1523
|
-
if has_terminal?('second', false, index)
|
1524
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1525
|
-
@index +=
|
1606
|
+
if (match_len = has_terminal?('second', false, index))
|
1607
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1608
|
+
@index += match_len
|
1526
1609
|
else
|
1527
|
-
terminal_parse_failure('second')
|
1610
|
+
terminal_parse_failure('\'second\'')
|
1528
1611
|
r1 = nil
|
1529
1612
|
end
|
1530
1613
|
s0 << r1
|
1531
1614
|
if r1
|
1532
|
-
if has_terminal?('s', false, index)
|
1533
|
-
r3 =
|
1534
|
-
@index +=
|
1615
|
+
if (match_len = has_terminal?('s', false, index))
|
1616
|
+
r3 = true
|
1617
|
+
@index += match_len
|
1535
1618
|
else
|
1536
|
-
terminal_parse_failure('s')
|
1619
|
+
terminal_parse_failure('\'s\'')
|
1537
1620
|
r3 = nil
|
1538
1621
|
end
|
1539
1622
|
if r3
|
@@ -1564,27 +1647,27 @@ module Timing
|
|
1564
1647
|
if node_cache[:minute_interval].has_key?(index)
|
1565
1648
|
cached = node_cache[:minute_interval][index]
|
1566
1649
|
if cached
|
1567
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1650
|
+
node_cache[:minute_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1568
1651
|
@index = cached.interval.end
|
1569
1652
|
end
|
1570
1653
|
return cached
|
1571
1654
|
end
|
1572
1655
|
|
1573
1656
|
i0, s0 = index, []
|
1574
|
-
if has_terminal?('minute', false, index)
|
1575
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1576
|
-
@index +=
|
1657
|
+
if (match_len = has_terminal?('minute', false, index))
|
1658
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1659
|
+
@index += match_len
|
1577
1660
|
else
|
1578
|
-
terminal_parse_failure('minute')
|
1661
|
+
terminal_parse_failure('\'minute\'')
|
1579
1662
|
r1 = nil
|
1580
1663
|
end
|
1581
1664
|
s0 << r1
|
1582
1665
|
if r1
|
1583
|
-
if has_terminal?('s', false, index)
|
1584
|
-
r3 =
|
1585
|
-
@index +=
|
1666
|
+
if (match_len = has_terminal?('s', false, index))
|
1667
|
+
r3 = true
|
1668
|
+
@index += match_len
|
1586
1669
|
else
|
1587
|
-
terminal_parse_failure('s')
|
1670
|
+
terminal_parse_failure('\'s\'')
|
1588
1671
|
r3 = nil
|
1589
1672
|
end
|
1590
1673
|
if r3
|
@@ -1615,27 +1698,27 @@ module Timing
|
|
1615
1698
|
if node_cache[:hour_interval].has_key?(index)
|
1616
1699
|
cached = node_cache[:hour_interval][index]
|
1617
1700
|
if cached
|
1618
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1701
|
+
node_cache[:hour_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1619
1702
|
@index = cached.interval.end
|
1620
1703
|
end
|
1621
1704
|
return cached
|
1622
1705
|
end
|
1623
1706
|
|
1624
1707
|
i0, s0 = index, []
|
1625
|
-
if has_terminal?('hour', false, index)
|
1626
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1627
|
-
@index +=
|
1708
|
+
if (match_len = has_terminal?('hour', false, index))
|
1709
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1710
|
+
@index += match_len
|
1628
1711
|
else
|
1629
|
-
terminal_parse_failure('hour')
|
1712
|
+
terminal_parse_failure('\'hour\'')
|
1630
1713
|
r1 = nil
|
1631
1714
|
end
|
1632
1715
|
s0 << r1
|
1633
1716
|
if r1
|
1634
|
-
if has_terminal?('s', false, index)
|
1635
|
-
r3 =
|
1636
|
-
@index +=
|
1717
|
+
if (match_len = has_terminal?('s', false, index))
|
1718
|
+
r3 = true
|
1719
|
+
@index += match_len
|
1637
1720
|
else
|
1638
|
-
terminal_parse_failure('s')
|
1721
|
+
terminal_parse_failure('\'s\'')
|
1639
1722
|
r3 = nil
|
1640
1723
|
end
|
1641
1724
|
if r3
|
@@ -1666,27 +1749,27 @@ module Timing
|
|
1666
1749
|
if node_cache[:day_interval].has_key?(index)
|
1667
1750
|
cached = node_cache[:day_interval][index]
|
1668
1751
|
if cached
|
1669
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1752
|
+
node_cache[:day_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1670
1753
|
@index = cached.interval.end
|
1671
1754
|
end
|
1672
1755
|
return cached
|
1673
1756
|
end
|
1674
1757
|
|
1675
1758
|
i0, s0 = index, []
|
1676
|
-
if has_terminal?('day', false, index)
|
1677
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1678
|
-
@index +=
|
1759
|
+
if (match_len = has_terminal?('day', false, index))
|
1760
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1761
|
+
@index += match_len
|
1679
1762
|
else
|
1680
|
-
terminal_parse_failure('day')
|
1763
|
+
terminal_parse_failure('\'day\'')
|
1681
1764
|
r1 = nil
|
1682
1765
|
end
|
1683
1766
|
s0 << r1
|
1684
1767
|
if r1
|
1685
|
-
if has_terminal?('s', false, index)
|
1686
|
-
r3 =
|
1687
|
-
@index +=
|
1768
|
+
if (match_len = has_terminal?('s', false, index))
|
1769
|
+
r3 = true
|
1770
|
+
@index += match_len
|
1688
1771
|
else
|
1689
|
-
terminal_parse_failure('s')
|
1772
|
+
terminal_parse_failure('\'s\'')
|
1690
1773
|
r3 = nil
|
1691
1774
|
end
|
1692
1775
|
if r3
|
@@ -1717,27 +1800,27 @@ module Timing
|
|
1717
1800
|
if node_cache[:week_interval].has_key?(index)
|
1718
1801
|
cached = node_cache[:week_interval][index]
|
1719
1802
|
if cached
|
1720
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1803
|
+
node_cache[:week_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1721
1804
|
@index = cached.interval.end
|
1722
1805
|
end
|
1723
1806
|
return cached
|
1724
1807
|
end
|
1725
1808
|
|
1726
1809
|
i0, s0 = index, []
|
1727
|
-
if has_terminal?('week', false, index)
|
1728
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1729
|
-
@index +=
|
1810
|
+
if (match_len = has_terminal?('week', false, index))
|
1811
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1812
|
+
@index += match_len
|
1730
1813
|
else
|
1731
|
-
terminal_parse_failure('week')
|
1814
|
+
terminal_parse_failure('\'week\'')
|
1732
1815
|
r1 = nil
|
1733
1816
|
end
|
1734
1817
|
s0 << r1
|
1735
1818
|
if r1
|
1736
|
-
if has_terminal?('s', false, index)
|
1737
|
-
r3 =
|
1738
|
-
@index +=
|
1819
|
+
if (match_len = has_terminal?('s', false, index))
|
1820
|
+
r3 = true
|
1821
|
+
@index += match_len
|
1739
1822
|
else
|
1740
|
-
terminal_parse_failure('s')
|
1823
|
+
terminal_parse_failure('\'s\'')
|
1741
1824
|
r3 = nil
|
1742
1825
|
end
|
1743
1826
|
if r3
|
@@ -1768,27 +1851,27 @@ module Timing
|
|
1768
1851
|
if node_cache[:month_interval].has_key?(index)
|
1769
1852
|
cached = node_cache[:month_interval][index]
|
1770
1853
|
if cached
|
1771
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1854
|
+
node_cache[:month_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1772
1855
|
@index = cached.interval.end
|
1773
1856
|
end
|
1774
1857
|
return cached
|
1775
1858
|
end
|
1776
1859
|
|
1777
1860
|
i0, s0 = index, []
|
1778
|
-
if has_terminal?('month', false, index)
|
1779
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1780
|
-
@index +=
|
1861
|
+
if (match_len = has_terminal?('month', false, index))
|
1862
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1863
|
+
@index += match_len
|
1781
1864
|
else
|
1782
|
-
terminal_parse_failure('month')
|
1865
|
+
terminal_parse_failure('\'month\'')
|
1783
1866
|
r1 = nil
|
1784
1867
|
end
|
1785
1868
|
s0 << r1
|
1786
1869
|
if r1
|
1787
|
-
if has_terminal?('s', false, index)
|
1788
|
-
r3 =
|
1789
|
-
@index +=
|
1870
|
+
if (match_len = has_terminal?('s', false, index))
|
1871
|
+
r3 = true
|
1872
|
+
@index += match_len
|
1790
1873
|
else
|
1791
|
-
terminal_parse_failure('s')
|
1874
|
+
terminal_parse_failure('\'s\'')
|
1792
1875
|
r3 = nil
|
1793
1876
|
end
|
1794
1877
|
if r3
|
@@ -1819,27 +1902,27 @@ module Timing
|
|
1819
1902
|
if node_cache[:year_interval].has_key?(index)
|
1820
1903
|
cached = node_cache[:year_interval][index]
|
1821
1904
|
if cached
|
1822
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1905
|
+
node_cache[:year_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1823
1906
|
@index = cached.interval.end
|
1824
1907
|
end
|
1825
1908
|
return cached
|
1826
1909
|
end
|
1827
1910
|
|
1828
1911
|
i0, s0 = index, []
|
1829
|
-
if has_terminal?('year', false, index)
|
1830
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index +
|
1831
|
-
@index +=
|
1912
|
+
if (match_len = has_terminal?('year', false, index))
|
1913
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
1914
|
+
@index += match_len
|
1832
1915
|
else
|
1833
|
-
terminal_parse_failure('year')
|
1916
|
+
terminal_parse_failure('\'year\'')
|
1834
1917
|
r1 = nil
|
1835
1918
|
end
|
1836
1919
|
s0 << r1
|
1837
1920
|
if r1
|
1838
|
-
if has_terminal?('s', false, index)
|
1839
|
-
r3 =
|
1840
|
-
@index +=
|
1921
|
+
if (match_len = has_terminal?('s', false, index))
|
1922
|
+
r3 = true
|
1923
|
+
@index += match_len
|
1841
1924
|
else
|
1842
|
-
terminal_parse_failure('s')
|
1925
|
+
terminal_parse_failure('\'s\'')
|
1843
1926
|
r3 = nil
|
1844
1927
|
end
|
1845
1928
|
if r3
|
@@ -1867,7 +1950,7 @@ module Timing
|
|
1867
1950
|
if node_cache[:day_name].has_key?(index)
|
1868
1951
|
cached = node_cache[:day_name][index]
|
1869
1952
|
if cached
|
1870
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1953
|
+
node_cache[:day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1871
1954
|
@index = cached.interval.end
|
1872
1955
|
end
|
1873
1956
|
return cached
|
@@ -1876,10 +1959,12 @@ module Timing
|
|
1876
1959
|
i0 = index
|
1877
1960
|
r1 = _nt_long_day_name
|
1878
1961
|
if r1
|
1962
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1879
1963
|
r0 = r1
|
1880
1964
|
else
|
1881
1965
|
r2 = _nt_short_day_name
|
1882
1966
|
if r2
|
1967
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1883
1968
|
r0 = r2
|
1884
1969
|
else
|
1885
1970
|
@index = i0
|
@@ -1897,81 +1982,88 @@ module Timing
|
|
1897
1982
|
if node_cache[:long_day_name].has_key?(index)
|
1898
1983
|
cached = node_cache[:long_day_name][index]
|
1899
1984
|
if cached
|
1900
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1985
|
+
node_cache[:long_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1901
1986
|
@index = cached.interval.end
|
1902
1987
|
end
|
1903
1988
|
return cached
|
1904
1989
|
end
|
1905
1990
|
|
1906
1991
|
i0 = index
|
1907
|
-
if has_terminal?('sunday', false, index)
|
1908
|
-
r1 = instantiate_node(DayName,input, index...(index +
|
1909
|
-
@index +=
|
1992
|
+
if (match_len = has_terminal?('sunday', false, index))
|
1993
|
+
r1 = instantiate_node(DayName,input, index...(index + match_len))
|
1994
|
+
@index += match_len
|
1910
1995
|
else
|
1911
|
-
terminal_parse_failure('sunday')
|
1996
|
+
terminal_parse_failure('\'sunday\'')
|
1912
1997
|
r1 = nil
|
1913
1998
|
end
|
1914
1999
|
if r1
|
2000
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1915
2001
|
r0 = r1
|
1916
2002
|
else
|
1917
|
-
if has_terminal?('monday', false, index)
|
1918
|
-
r2 = instantiate_node(DayName,input, index...(index +
|
1919
|
-
@index +=
|
2003
|
+
if (match_len = has_terminal?('monday', false, index))
|
2004
|
+
r2 = instantiate_node(DayName,input, index...(index + match_len))
|
2005
|
+
@index += match_len
|
1920
2006
|
else
|
1921
|
-
terminal_parse_failure('monday')
|
2007
|
+
terminal_parse_failure('\'monday\'')
|
1922
2008
|
r2 = nil
|
1923
2009
|
end
|
1924
2010
|
if r2
|
2011
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1925
2012
|
r0 = r2
|
1926
2013
|
else
|
1927
|
-
if has_terminal?('tuesday', false, index)
|
1928
|
-
r3 = instantiate_node(DayName,input, index...(index +
|
1929
|
-
@index +=
|
2014
|
+
if (match_len = has_terminal?('tuesday', false, index))
|
2015
|
+
r3 = instantiate_node(DayName,input, index...(index + match_len))
|
2016
|
+
@index += match_len
|
1930
2017
|
else
|
1931
|
-
terminal_parse_failure('tuesday')
|
2018
|
+
terminal_parse_failure('\'tuesday\'')
|
1932
2019
|
r3 = nil
|
1933
2020
|
end
|
1934
2021
|
if r3
|
2022
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
1935
2023
|
r0 = r3
|
1936
2024
|
else
|
1937
|
-
if has_terminal?('wednesday', false, index)
|
1938
|
-
r4 = instantiate_node(DayName,input, index...(index +
|
1939
|
-
@index +=
|
2025
|
+
if (match_len = has_terminal?('wednesday', false, index))
|
2026
|
+
r4 = instantiate_node(DayName,input, index...(index + match_len))
|
2027
|
+
@index += match_len
|
1940
2028
|
else
|
1941
|
-
terminal_parse_failure('wednesday')
|
2029
|
+
terminal_parse_failure('\'wednesday\'')
|
1942
2030
|
r4 = nil
|
1943
2031
|
end
|
1944
2032
|
if r4
|
2033
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
1945
2034
|
r0 = r4
|
1946
2035
|
else
|
1947
|
-
if has_terminal?('thursday', false, index)
|
1948
|
-
r5 = instantiate_node(DayName,input, index...(index +
|
1949
|
-
@index +=
|
2036
|
+
if (match_len = has_terminal?('thursday', false, index))
|
2037
|
+
r5 = instantiate_node(DayName,input, index...(index + match_len))
|
2038
|
+
@index += match_len
|
1950
2039
|
else
|
1951
|
-
terminal_parse_failure('thursday')
|
2040
|
+
terminal_parse_failure('\'thursday\'')
|
1952
2041
|
r5 = nil
|
1953
2042
|
end
|
1954
2043
|
if r5
|
2044
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
1955
2045
|
r0 = r5
|
1956
2046
|
else
|
1957
|
-
if has_terminal?('friday', false, index)
|
1958
|
-
r6 = instantiate_node(DayName,input, index...(index +
|
1959
|
-
@index +=
|
2047
|
+
if (match_len = has_terminal?('friday', false, index))
|
2048
|
+
r6 = instantiate_node(DayName,input, index...(index + match_len))
|
2049
|
+
@index += match_len
|
1960
2050
|
else
|
1961
|
-
terminal_parse_failure('friday')
|
2051
|
+
terminal_parse_failure('\'friday\'')
|
1962
2052
|
r6 = nil
|
1963
2053
|
end
|
1964
2054
|
if r6
|
2055
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
1965
2056
|
r0 = r6
|
1966
2057
|
else
|
1967
|
-
if has_terminal?('saturday', false, index)
|
1968
|
-
r7 = instantiate_node(DayName,input, index...(index +
|
1969
|
-
@index +=
|
2058
|
+
if (match_len = has_terminal?('saturday', false, index))
|
2059
|
+
r7 = instantiate_node(DayName,input, index...(index + match_len))
|
2060
|
+
@index += match_len
|
1970
2061
|
else
|
1971
|
-
terminal_parse_failure('saturday')
|
2062
|
+
terminal_parse_failure('\'saturday\'')
|
1972
2063
|
r7 = nil
|
1973
2064
|
end
|
1974
2065
|
if r7
|
2066
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
1975
2067
|
r0 = r7
|
1976
2068
|
else
|
1977
2069
|
@index = i0
|
@@ -1994,81 +2086,88 @@ module Timing
|
|
1994
2086
|
if node_cache[:short_day_name].has_key?(index)
|
1995
2087
|
cached = node_cache[:short_day_name][index]
|
1996
2088
|
if cached
|
1997
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2089
|
+
node_cache[:short_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1998
2090
|
@index = cached.interval.end
|
1999
2091
|
end
|
2000
2092
|
return cached
|
2001
2093
|
end
|
2002
2094
|
|
2003
2095
|
i0 = index
|
2004
|
-
if has_terminal?('sun', false, index)
|
2005
|
-
r1 = instantiate_node(DayName,input, index...(index +
|
2006
|
-
@index +=
|
2096
|
+
if (match_len = has_terminal?('sun', false, index))
|
2097
|
+
r1 = instantiate_node(DayName,input, index...(index + match_len))
|
2098
|
+
@index += match_len
|
2007
2099
|
else
|
2008
|
-
terminal_parse_failure('sun')
|
2100
|
+
terminal_parse_failure('\'sun\'')
|
2009
2101
|
r1 = nil
|
2010
2102
|
end
|
2011
2103
|
if r1
|
2104
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2012
2105
|
r0 = r1
|
2013
2106
|
else
|
2014
|
-
if has_terminal?('mon', false, index)
|
2015
|
-
r2 = instantiate_node(DayName,input, index...(index +
|
2016
|
-
@index +=
|
2107
|
+
if (match_len = has_terminal?('mon', false, index))
|
2108
|
+
r2 = instantiate_node(DayName,input, index...(index + match_len))
|
2109
|
+
@index += match_len
|
2017
2110
|
else
|
2018
|
-
terminal_parse_failure('mon')
|
2111
|
+
terminal_parse_failure('\'mon\'')
|
2019
2112
|
r2 = nil
|
2020
2113
|
end
|
2021
2114
|
if r2
|
2115
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2022
2116
|
r0 = r2
|
2023
2117
|
else
|
2024
|
-
if has_terminal?('tue', false, index)
|
2025
|
-
r3 = instantiate_node(DayName,input, index...(index +
|
2026
|
-
@index +=
|
2118
|
+
if (match_len = has_terminal?('tue', false, index))
|
2119
|
+
r3 = instantiate_node(DayName,input, index...(index + match_len))
|
2120
|
+
@index += match_len
|
2027
2121
|
else
|
2028
|
-
terminal_parse_failure('tue')
|
2122
|
+
terminal_parse_failure('\'tue\'')
|
2029
2123
|
r3 = nil
|
2030
2124
|
end
|
2031
2125
|
if r3
|
2126
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2032
2127
|
r0 = r3
|
2033
2128
|
else
|
2034
|
-
if has_terminal?('wed', false, index)
|
2035
|
-
r4 = instantiate_node(DayName,input, index...(index +
|
2036
|
-
@index +=
|
2129
|
+
if (match_len = has_terminal?('wed', false, index))
|
2130
|
+
r4 = instantiate_node(DayName,input, index...(index + match_len))
|
2131
|
+
@index += match_len
|
2037
2132
|
else
|
2038
|
-
terminal_parse_failure('wed')
|
2133
|
+
terminal_parse_failure('\'wed\'')
|
2039
2134
|
r4 = nil
|
2040
2135
|
end
|
2041
2136
|
if r4
|
2137
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2042
2138
|
r0 = r4
|
2043
2139
|
else
|
2044
|
-
if has_terminal?('thu', false, index)
|
2045
|
-
r5 = instantiate_node(DayName,input, index...(index +
|
2046
|
-
@index +=
|
2140
|
+
if (match_len = has_terminal?('thu', false, index))
|
2141
|
+
r5 = instantiate_node(DayName,input, index...(index + match_len))
|
2142
|
+
@index += match_len
|
2047
2143
|
else
|
2048
|
-
terminal_parse_failure('thu')
|
2144
|
+
terminal_parse_failure('\'thu\'')
|
2049
2145
|
r5 = nil
|
2050
2146
|
end
|
2051
2147
|
if r5
|
2148
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
2052
2149
|
r0 = r5
|
2053
2150
|
else
|
2054
|
-
if has_terminal?('fri', false, index)
|
2055
|
-
r6 = instantiate_node(DayName,input, index...(index +
|
2056
|
-
@index +=
|
2151
|
+
if (match_len = has_terminal?('fri', false, index))
|
2152
|
+
r6 = instantiate_node(DayName,input, index...(index + match_len))
|
2153
|
+
@index += match_len
|
2057
2154
|
else
|
2058
|
-
terminal_parse_failure('fri')
|
2155
|
+
terminal_parse_failure('\'fri\'')
|
2059
2156
|
r6 = nil
|
2060
2157
|
end
|
2061
2158
|
if r6
|
2159
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
2062
2160
|
r0 = r6
|
2063
2161
|
else
|
2064
|
-
if has_terminal?('sat', false, index)
|
2065
|
-
r7 = instantiate_node(DayName,input, index...(index +
|
2066
|
-
@index +=
|
2162
|
+
if (match_len = has_terminal?('sat', false, index))
|
2163
|
+
r7 = instantiate_node(DayName,input, index...(index + match_len))
|
2164
|
+
@index += match_len
|
2067
2165
|
else
|
2068
|
-
terminal_parse_failure('sat')
|
2166
|
+
terminal_parse_failure('\'sat\'')
|
2069
2167
|
r7 = nil
|
2070
2168
|
end
|
2071
2169
|
if r7
|
2170
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2072
2171
|
r0 = r7
|
2073
2172
|
else
|
2074
2173
|
@index = i0
|
@@ -2091,7 +2190,7 @@ module Timing
|
|
2091
2190
|
if node_cache[:month_name].has_key?(index)
|
2092
2191
|
cached = node_cache[:month_name][index]
|
2093
2192
|
if cached
|
2094
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2193
|
+
node_cache[:month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2095
2194
|
@index = cached.interval.end
|
2096
2195
|
end
|
2097
2196
|
return cached
|
@@ -2100,10 +2199,12 @@ module Timing
|
|
2100
2199
|
i0 = index
|
2101
2200
|
r1 = _nt_long_month_name
|
2102
2201
|
if r1
|
2202
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2103
2203
|
r0 = r1
|
2104
2204
|
else
|
2105
2205
|
r2 = _nt_short_month_name
|
2106
2206
|
if r2
|
2207
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2107
2208
|
r0 = r2
|
2108
2209
|
else
|
2109
2210
|
@index = i0
|
@@ -2121,131 +2222,143 @@ module Timing
|
|
2121
2222
|
if node_cache[:long_month_name].has_key?(index)
|
2122
2223
|
cached = node_cache[:long_month_name][index]
|
2123
2224
|
if cached
|
2124
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2225
|
+
node_cache[:long_month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2125
2226
|
@index = cached.interval.end
|
2126
2227
|
end
|
2127
2228
|
return cached
|
2128
2229
|
end
|
2129
2230
|
|
2130
2231
|
i0 = index
|
2131
|
-
if has_terminal?('january', false, index)
|
2132
|
-
r1 = instantiate_node(MonthName,input, index...(index +
|
2133
|
-
@index +=
|
2232
|
+
if (match_len = has_terminal?('january', false, index))
|
2233
|
+
r1 = instantiate_node(MonthName,input, index...(index + match_len))
|
2234
|
+
@index += match_len
|
2134
2235
|
else
|
2135
|
-
terminal_parse_failure('january')
|
2236
|
+
terminal_parse_failure('\'january\'')
|
2136
2237
|
r1 = nil
|
2137
2238
|
end
|
2138
2239
|
if r1
|
2240
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2139
2241
|
r0 = r1
|
2140
2242
|
else
|
2141
|
-
if has_terminal?('february', false, index)
|
2142
|
-
r2 = instantiate_node(MonthName,input, index...(index +
|
2143
|
-
@index +=
|
2243
|
+
if (match_len = has_terminal?('february', false, index))
|
2244
|
+
r2 = instantiate_node(MonthName,input, index...(index + match_len))
|
2245
|
+
@index += match_len
|
2144
2246
|
else
|
2145
|
-
terminal_parse_failure('february')
|
2247
|
+
terminal_parse_failure('\'february\'')
|
2146
2248
|
r2 = nil
|
2147
2249
|
end
|
2148
2250
|
if r2
|
2251
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2149
2252
|
r0 = r2
|
2150
2253
|
else
|
2151
|
-
if has_terminal?('march', false, index)
|
2152
|
-
r3 = instantiate_node(MonthName,input, index...(index +
|
2153
|
-
@index +=
|
2254
|
+
if (match_len = has_terminal?('march', false, index))
|
2255
|
+
r3 = instantiate_node(MonthName,input, index...(index + match_len))
|
2256
|
+
@index += match_len
|
2154
2257
|
else
|
2155
|
-
terminal_parse_failure('march')
|
2258
|
+
terminal_parse_failure('\'march\'')
|
2156
2259
|
r3 = nil
|
2157
2260
|
end
|
2158
2261
|
if r3
|
2262
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2159
2263
|
r0 = r3
|
2160
2264
|
else
|
2161
|
-
if has_terminal?('april', false, index)
|
2162
|
-
r4 = instantiate_node(MonthName,input, index...(index +
|
2163
|
-
@index +=
|
2265
|
+
if (match_len = has_terminal?('april', false, index))
|
2266
|
+
r4 = instantiate_node(MonthName,input, index...(index + match_len))
|
2267
|
+
@index += match_len
|
2164
2268
|
else
|
2165
|
-
terminal_parse_failure('april')
|
2269
|
+
terminal_parse_failure('\'april\'')
|
2166
2270
|
r4 = nil
|
2167
2271
|
end
|
2168
2272
|
if r4
|
2273
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2169
2274
|
r0 = r4
|
2170
2275
|
else
|
2171
|
-
if has_terminal?('may', false, index)
|
2172
|
-
r5 = instantiate_node(MonthName,input, index...(index +
|
2173
|
-
@index +=
|
2276
|
+
if (match_len = has_terminal?('may', false, index))
|
2277
|
+
r5 = instantiate_node(MonthName,input, index...(index + match_len))
|
2278
|
+
@index += match_len
|
2174
2279
|
else
|
2175
|
-
terminal_parse_failure('may')
|
2280
|
+
terminal_parse_failure('\'may\'')
|
2176
2281
|
r5 = nil
|
2177
2282
|
end
|
2178
2283
|
if r5
|
2284
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
2179
2285
|
r0 = r5
|
2180
2286
|
else
|
2181
|
-
if has_terminal?('june', false, index)
|
2182
|
-
r6 = instantiate_node(MonthName,input, index...(index +
|
2183
|
-
@index +=
|
2287
|
+
if (match_len = has_terminal?('june', false, index))
|
2288
|
+
r6 = instantiate_node(MonthName,input, index...(index + match_len))
|
2289
|
+
@index += match_len
|
2184
2290
|
else
|
2185
|
-
terminal_parse_failure('june')
|
2291
|
+
terminal_parse_failure('\'june\'')
|
2186
2292
|
r6 = nil
|
2187
2293
|
end
|
2188
2294
|
if r6
|
2295
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
2189
2296
|
r0 = r6
|
2190
2297
|
else
|
2191
|
-
if has_terminal?('july', false, index)
|
2192
|
-
r7 = instantiate_node(MonthName,input, index...(index +
|
2193
|
-
@index +=
|
2298
|
+
if (match_len = has_terminal?('july', false, index))
|
2299
|
+
r7 = instantiate_node(MonthName,input, index...(index + match_len))
|
2300
|
+
@index += match_len
|
2194
2301
|
else
|
2195
|
-
terminal_parse_failure('july')
|
2302
|
+
terminal_parse_failure('\'july\'')
|
2196
2303
|
r7 = nil
|
2197
2304
|
end
|
2198
2305
|
if r7
|
2306
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2199
2307
|
r0 = r7
|
2200
2308
|
else
|
2201
|
-
if has_terminal?('august', false, index)
|
2202
|
-
r8 = instantiate_node(MonthName,input, index...(index +
|
2203
|
-
@index +=
|
2309
|
+
if (match_len = has_terminal?('august', false, index))
|
2310
|
+
r8 = instantiate_node(MonthName,input, index...(index + match_len))
|
2311
|
+
@index += match_len
|
2204
2312
|
else
|
2205
|
-
terminal_parse_failure('august')
|
2313
|
+
terminal_parse_failure('\'august\'')
|
2206
2314
|
r8 = nil
|
2207
2315
|
end
|
2208
2316
|
if r8
|
2317
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
2209
2318
|
r0 = r8
|
2210
2319
|
else
|
2211
|
-
if has_terminal?('september', false, index)
|
2212
|
-
r9 = instantiate_node(MonthName,input, index...(index +
|
2213
|
-
@index +=
|
2320
|
+
if (match_len = has_terminal?('september', false, index))
|
2321
|
+
r9 = instantiate_node(MonthName,input, index...(index + match_len))
|
2322
|
+
@index += match_len
|
2214
2323
|
else
|
2215
|
-
terminal_parse_failure('september')
|
2324
|
+
terminal_parse_failure('\'september\'')
|
2216
2325
|
r9 = nil
|
2217
2326
|
end
|
2218
2327
|
if r9
|
2328
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2219
2329
|
r0 = r9
|
2220
2330
|
else
|
2221
|
-
if has_terminal?('october', false, index)
|
2222
|
-
r10 = instantiate_node(MonthName,input, index...(index +
|
2223
|
-
@index +=
|
2331
|
+
if (match_len = has_terminal?('october', false, index))
|
2332
|
+
r10 = instantiate_node(MonthName,input, index...(index + match_len))
|
2333
|
+
@index += match_len
|
2224
2334
|
else
|
2225
|
-
terminal_parse_failure('october')
|
2335
|
+
terminal_parse_failure('\'october\'')
|
2226
2336
|
r10 = nil
|
2227
2337
|
end
|
2228
2338
|
if r10
|
2339
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
2229
2340
|
r0 = r10
|
2230
2341
|
else
|
2231
|
-
if has_terminal?('november', false, index)
|
2232
|
-
r11 = instantiate_node(MonthName,input, index...(index +
|
2233
|
-
@index +=
|
2342
|
+
if (match_len = has_terminal?('november', false, index))
|
2343
|
+
r11 = instantiate_node(MonthName,input, index...(index + match_len))
|
2344
|
+
@index += match_len
|
2234
2345
|
else
|
2235
|
-
terminal_parse_failure('november')
|
2346
|
+
terminal_parse_failure('\'november\'')
|
2236
2347
|
r11 = nil
|
2237
2348
|
end
|
2238
2349
|
if r11
|
2350
|
+
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
2239
2351
|
r0 = r11
|
2240
2352
|
else
|
2241
|
-
if has_terminal?('december', false, index)
|
2242
|
-
r12 = instantiate_node(MonthName,input, index...(index +
|
2243
|
-
@index +=
|
2353
|
+
if (match_len = has_terminal?('december', false, index))
|
2354
|
+
r12 = instantiate_node(MonthName,input, index...(index + match_len))
|
2355
|
+
@index += match_len
|
2244
2356
|
else
|
2245
|
-
terminal_parse_failure('december')
|
2357
|
+
terminal_parse_failure('\'december\'')
|
2246
2358
|
r12 = nil
|
2247
2359
|
end
|
2248
2360
|
if r12
|
2361
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2249
2362
|
r0 = r12
|
2250
2363
|
else
|
2251
2364
|
@index = i0
|
@@ -2273,131 +2386,143 @@ module Timing
|
|
2273
2386
|
if node_cache[:short_month_name].has_key?(index)
|
2274
2387
|
cached = node_cache[:short_month_name][index]
|
2275
2388
|
if cached
|
2276
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2389
|
+
node_cache[:short_month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2277
2390
|
@index = cached.interval.end
|
2278
2391
|
end
|
2279
2392
|
return cached
|
2280
2393
|
end
|
2281
2394
|
|
2282
2395
|
i0 = index
|
2283
|
-
if has_terminal?('jan', false, index)
|
2284
|
-
r1 = instantiate_node(MonthName,input, index...(index +
|
2285
|
-
@index +=
|
2396
|
+
if (match_len = has_terminal?('jan', false, index))
|
2397
|
+
r1 = instantiate_node(MonthName,input, index...(index + match_len))
|
2398
|
+
@index += match_len
|
2286
2399
|
else
|
2287
|
-
terminal_parse_failure('jan')
|
2400
|
+
terminal_parse_failure('\'jan\'')
|
2288
2401
|
r1 = nil
|
2289
2402
|
end
|
2290
2403
|
if r1
|
2404
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2291
2405
|
r0 = r1
|
2292
2406
|
else
|
2293
|
-
if has_terminal?('feb', false, index)
|
2294
|
-
r2 = instantiate_node(MonthName,input, index...(index +
|
2295
|
-
@index +=
|
2407
|
+
if (match_len = has_terminal?('feb', false, index))
|
2408
|
+
r2 = instantiate_node(MonthName,input, index...(index + match_len))
|
2409
|
+
@index += match_len
|
2296
2410
|
else
|
2297
|
-
terminal_parse_failure('feb')
|
2411
|
+
terminal_parse_failure('\'feb\'')
|
2298
2412
|
r2 = nil
|
2299
2413
|
end
|
2300
2414
|
if r2
|
2415
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2301
2416
|
r0 = r2
|
2302
2417
|
else
|
2303
|
-
if has_terminal?('mar', false, index)
|
2304
|
-
r3 = instantiate_node(MonthName,input, index...(index +
|
2305
|
-
@index +=
|
2418
|
+
if (match_len = has_terminal?('mar', false, index))
|
2419
|
+
r3 = instantiate_node(MonthName,input, index...(index + match_len))
|
2420
|
+
@index += match_len
|
2306
2421
|
else
|
2307
|
-
terminal_parse_failure('mar')
|
2422
|
+
terminal_parse_failure('\'mar\'')
|
2308
2423
|
r3 = nil
|
2309
2424
|
end
|
2310
2425
|
if r3
|
2426
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2311
2427
|
r0 = r3
|
2312
2428
|
else
|
2313
|
-
if has_terminal?('apr', false, index)
|
2314
|
-
r4 = instantiate_node(MonthName,input, index...(index +
|
2315
|
-
@index +=
|
2429
|
+
if (match_len = has_terminal?('apr', false, index))
|
2430
|
+
r4 = instantiate_node(MonthName,input, index...(index + match_len))
|
2431
|
+
@index += match_len
|
2316
2432
|
else
|
2317
|
-
terminal_parse_failure('apr')
|
2433
|
+
terminal_parse_failure('\'apr\'')
|
2318
2434
|
r4 = nil
|
2319
2435
|
end
|
2320
2436
|
if r4
|
2437
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2321
2438
|
r0 = r4
|
2322
2439
|
else
|
2323
|
-
if has_terminal?('may', false, index)
|
2324
|
-
r5 = instantiate_node(MonthName,input, index...(index +
|
2325
|
-
@index +=
|
2440
|
+
if (match_len = has_terminal?('may', false, index))
|
2441
|
+
r5 = instantiate_node(MonthName,input, index...(index + match_len))
|
2442
|
+
@index += match_len
|
2326
2443
|
else
|
2327
|
-
terminal_parse_failure('may')
|
2444
|
+
terminal_parse_failure('\'may\'')
|
2328
2445
|
r5 = nil
|
2329
2446
|
end
|
2330
2447
|
if r5
|
2448
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
2331
2449
|
r0 = r5
|
2332
2450
|
else
|
2333
|
-
if has_terminal?('jun', false, index)
|
2334
|
-
r6 = instantiate_node(MonthName,input, index...(index +
|
2335
|
-
@index +=
|
2451
|
+
if (match_len = has_terminal?('jun', false, index))
|
2452
|
+
r6 = instantiate_node(MonthName,input, index...(index + match_len))
|
2453
|
+
@index += match_len
|
2336
2454
|
else
|
2337
|
-
terminal_parse_failure('jun')
|
2455
|
+
terminal_parse_failure('\'jun\'')
|
2338
2456
|
r6 = nil
|
2339
2457
|
end
|
2340
2458
|
if r6
|
2459
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
2341
2460
|
r0 = r6
|
2342
2461
|
else
|
2343
|
-
if has_terminal?('jul', false, index)
|
2344
|
-
r7 = instantiate_node(MonthName,input, index...(index +
|
2345
|
-
@index +=
|
2462
|
+
if (match_len = has_terminal?('jul', false, index))
|
2463
|
+
r7 = instantiate_node(MonthName,input, index...(index + match_len))
|
2464
|
+
@index += match_len
|
2346
2465
|
else
|
2347
|
-
terminal_parse_failure('jul')
|
2466
|
+
terminal_parse_failure('\'jul\'')
|
2348
2467
|
r7 = nil
|
2349
2468
|
end
|
2350
2469
|
if r7
|
2470
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2351
2471
|
r0 = r7
|
2352
2472
|
else
|
2353
|
-
if has_terminal?('aug', false, index)
|
2354
|
-
r8 = instantiate_node(MonthName,input, index...(index +
|
2355
|
-
@index +=
|
2473
|
+
if (match_len = has_terminal?('aug', false, index))
|
2474
|
+
r8 = instantiate_node(MonthName,input, index...(index + match_len))
|
2475
|
+
@index += match_len
|
2356
2476
|
else
|
2357
|
-
terminal_parse_failure('aug')
|
2477
|
+
terminal_parse_failure('\'aug\'')
|
2358
2478
|
r8 = nil
|
2359
2479
|
end
|
2360
2480
|
if r8
|
2481
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
2361
2482
|
r0 = r8
|
2362
2483
|
else
|
2363
|
-
if has_terminal?('sep', false, index)
|
2364
|
-
r9 = instantiate_node(MonthName,input, index...(index +
|
2365
|
-
@index +=
|
2484
|
+
if (match_len = has_terminal?('sep', false, index))
|
2485
|
+
r9 = instantiate_node(MonthName,input, index...(index + match_len))
|
2486
|
+
@index += match_len
|
2366
2487
|
else
|
2367
|
-
terminal_parse_failure('sep')
|
2488
|
+
terminal_parse_failure('\'sep\'')
|
2368
2489
|
r9 = nil
|
2369
2490
|
end
|
2370
2491
|
if r9
|
2492
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2371
2493
|
r0 = r9
|
2372
2494
|
else
|
2373
|
-
if has_terminal?('oct', false, index)
|
2374
|
-
r10 = instantiate_node(MonthName,input, index...(index +
|
2375
|
-
@index +=
|
2495
|
+
if (match_len = has_terminal?('oct', false, index))
|
2496
|
+
r10 = instantiate_node(MonthName,input, index...(index + match_len))
|
2497
|
+
@index += match_len
|
2376
2498
|
else
|
2377
|
-
terminal_parse_failure('oct')
|
2499
|
+
terminal_parse_failure('\'oct\'')
|
2378
2500
|
r10 = nil
|
2379
2501
|
end
|
2380
2502
|
if r10
|
2503
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
2381
2504
|
r0 = r10
|
2382
2505
|
else
|
2383
|
-
if has_terminal?('nov', false, index)
|
2384
|
-
r11 = instantiate_node(MonthName,input, index...(index +
|
2385
|
-
@index +=
|
2506
|
+
if (match_len = has_terminal?('nov', false, index))
|
2507
|
+
r11 = instantiate_node(MonthName,input, index...(index + match_len))
|
2508
|
+
@index += match_len
|
2386
2509
|
else
|
2387
|
-
terminal_parse_failure('nov')
|
2510
|
+
terminal_parse_failure('\'nov\'')
|
2388
2511
|
r11 = nil
|
2389
2512
|
end
|
2390
2513
|
if r11
|
2514
|
+
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
2391
2515
|
r0 = r11
|
2392
2516
|
else
|
2393
|
-
if has_terminal?('dec', false, index)
|
2394
|
-
r12 = instantiate_node(MonthName,input, index...(index +
|
2395
|
-
@index +=
|
2517
|
+
if (match_len = has_terminal?('dec', false, index))
|
2518
|
+
r12 = instantiate_node(MonthName,input, index...(index + match_len))
|
2519
|
+
@index += match_len
|
2396
2520
|
else
|
2397
|
-
terminal_parse_failure('dec')
|
2521
|
+
terminal_parse_failure('\'dec\'')
|
2398
2522
|
r12 = nil
|
2399
2523
|
end
|
2400
2524
|
if r12
|
2525
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2401
2526
|
r0 = r12
|
2402
2527
|
else
|
2403
2528
|
@index = i0
|
@@ -2428,27 +2553,29 @@ module Timing
|
|
2428
2553
|
if node_cache[:zone_offset].has_key?(index)
|
2429
2554
|
cached = node_cache[:zone_offset][index]
|
2430
2555
|
if cached
|
2431
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2556
|
+
node_cache[:zone_offset][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2432
2557
|
@index = cached.interval.end
|
2433
2558
|
end
|
2434
2559
|
return cached
|
2435
2560
|
end
|
2436
2561
|
|
2437
2562
|
i0, s0 = index, []
|
2438
|
-
if has_terminal?('\
|
2563
|
+
if has_terminal?(@regexps[gr = '\A[+-]'] ||= Regexp.new(gr), :regexp, index)
|
2439
2564
|
r1 = true
|
2440
2565
|
@index += 1
|
2441
2566
|
else
|
2567
|
+
terminal_parse_failure('[+-]')
|
2442
2568
|
r1 = nil
|
2443
2569
|
end
|
2444
2570
|
s0 << r1
|
2445
2571
|
if r1
|
2446
2572
|
s2, i2 = [], index
|
2447
2573
|
loop do
|
2448
|
-
if has_terminal?('\
|
2574
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2449
2575
|
r3 = true
|
2450
2576
|
@index += 1
|
2451
2577
|
else
|
2578
|
+
terminal_parse_failure('[\\d]')
|
2452
2579
|
r3 = nil
|
2453
2580
|
end
|
2454
2581
|
if r3
|
@@ -2464,15 +2591,18 @@ module Timing
|
|
2464
2591
|
@index = i2
|
2465
2592
|
r2 = nil
|
2466
2593
|
else
|
2594
|
+
if s2.size < 2
|
2595
|
+
@terminal_failures.pop
|
2596
|
+
end
|
2467
2597
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
2468
2598
|
end
|
2469
2599
|
s0 << r2
|
2470
2600
|
if r2
|
2471
|
-
if has_terminal?(':', false, index)
|
2472
|
-
r5 =
|
2473
|
-
@index +=
|
2601
|
+
if (match_len = has_terminal?(':', false, index))
|
2602
|
+
r5 = true
|
2603
|
+
@index += match_len
|
2474
2604
|
else
|
2475
|
-
terminal_parse_failure('
|
2605
|
+
terminal_parse_failure('\':\'')
|
2476
2606
|
r5 = nil
|
2477
2607
|
end
|
2478
2608
|
if r5
|
@@ -2484,10 +2614,11 @@ module Timing
|
|
2484
2614
|
if r4
|
2485
2615
|
s6, i6 = [], index
|
2486
2616
|
loop do
|
2487
|
-
if has_terminal?('\
|
2617
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2488
2618
|
r7 = true
|
2489
2619
|
@index += 1
|
2490
2620
|
else
|
2621
|
+
terminal_parse_failure('[\\d]')
|
2491
2622
|
r7 = nil
|
2492
2623
|
end
|
2493
2624
|
if r7
|
@@ -2503,6 +2634,9 @@ module Timing
|
|
2503
2634
|
@index = i6
|
2504
2635
|
r6 = nil
|
2505
2636
|
else
|
2637
|
+
if s6.size < 2
|
2638
|
+
@terminal_failures.pop
|
2639
|
+
end
|
2506
2640
|
r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
|
2507
2641
|
end
|
2508
2642
|
s0 << r6
|
@@ -2522,6 +2656,30 @@ module Timing
|
|
2522
2656
|
r0
|
2523
2657
|
end
|
2524
2658
|
|
2659
|
+
def _nt_zone_name
|
2660
|
+
start_index = index
|
2661
|
+
if node_cache[:zone_name].has_key?(index)
|
2662
|
+
cached = node_cache[:zone_name][index]
|
2663
|
+
if cached
|
2664
|
+
node_cache[:zone_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2665
|
+
@index = cached.interval.end
|
2666
|
+
end
|
2667
|
+
return cached
|
2668
|
+
end
|
2669
|
+
|
2670
|
+
if (match_len = has_terminal?('utc', false, index))
|
2671
|
+
r0 = instantiate_node(ZoneName,input, index...(index + match_len))
|
2672
|
+
@index += match_len
|
2673
|
+
else
|
2674
|
+
terminal_parse_failure('\'utc\'')
|
2675
|
+
r0 = nil
|
2676
|
+
end
|
2677
|
+
|
2678
|
+
node_cache[:zone_name][start_index] = r0
|
2679
|
+
|
2680
|
+
r0
|
2681
|
+
end
|
2682
|
+
|
2525
2683
|
module HourMinuteSecond0
|
2526
2684
|
end
|
2527
2685
|
|
@@ -2533,7 +2691,7 @@ module Timing
|
|
2533
2691
|
if node_cache[:hour_minute_second].has_key?(index)
|
2534
2692
|
cached = node_cache[:hour_minute_second][index]
|
2535
2693
|
if cached
|
2536
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2694
|
+
node_cache[:hour_minute_second][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2537
2695
|
@index = cached.interval.end
|
2538
2696
|
end
|
2539
2697
|
return cached
|
@@ -2543,10 +2701,11 @@ module Timing
|
|
2543
2701
|
i1, s1 = index, []
|
2544
2702
|
s2, i2 = [], index
|
2545
2703
|
loop do
|
2546
|
-
if has_terminal?('\
|
2704
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2547
2705
|
r3 = true
|
2548
2706
|
@index += 1
|
2549
2707
|
else
|
2708
|
+
terminal_parse_failure('[\\d]')
|
2550
2709
|
r3 = nil
|
2551
2710
|
end
|
2552
2711
|
if r3
|
@@ -2562,25 +2721,29 @@ module Timing
|
|
2562
2721
|
@index = i2
|
2563
2722
|
r2 = nil
|
2564
2723
|
else
|
2724
|
+
if s2.size < 2
|
2725
|
+
@terminal_failures.pop
|
2726
|
+
end
|
2565
2727
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
2566
2728
|
end
|
2567
2729
|
s1 << r2
|
2568
2730
|
if r2
|
2569
|
-
if has_terminal?(':', false, index)
|
2570
|
-
r4 =
|
2571
|
-
@index +=
|
2731
|
+
if (match_len = has_terminal?(':', false, index))
|
2732
|
+
r4 = true
|
2733
|
+
@index += match_len
|
2572
2734
|
else
|
2573
|
-
terminal_parse_failure('
|
2735
|
+
terminal_parse_failure('\':\'')
|
2574
2736
|
r4 = nil
|
2575
2737
|
end
|
2576
2738
|
s1 << r4
|
2577
2739
|
if r4
|
2578
2740
|
s5, i5 = [], index
|
2579
2741
|
loop do
|
2580
|
-
if has_terminal?('\
|
2742
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2581
2743
|
r6 = true
|
2582
2744
|
@index += 1
|
2583
2745
|
else
|
2746
|
+
terminal_parse_failure('[\\d]')
|
2584
2747
|
r6 = nil
|
2585
2748
|
end
|
2586
2749
|
if r6
|
@@ -2596,26 +2759,30 @@ module Timing
|
|
2596
2759
|
@index = i5
|
2597
2760
|
r5 = nil
|
2598
2761
|
else
|
2762
|
+
if s5.size < 2
|
2763
|
+
@terminal_failures.pop
|
2764
|
+
end
|
2599
2765
|
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
2600
2766
|
end
|
2601
2767
|
s1 << r5
|
2602
2768
|
if r5
|
2603
2769
|
i8, s8 = index, []
|
2604
|
-
if has_terminal?(':', false, index)
|
2605
|
-
r9 =
|
2606
|
-
@index +=
|
2770
|
+
if (match_len = has_terminal?(':', false, index))
|
2771
|
+
r9 = true
|
2772
|
+
@index += match_len
|
2607
2773
|
else
|
2608
|
-
terminal_parse_failure('
|
2774
|
+
terminal_parse_failure('\':\'')
|
2609
2775
|
r9 = nil
|
2610
2776
|
end
|
2611
2777
|
s8 << r9
|
2612
2778
|
if r9
|
2613
2779
|
s10, i10 = [], index
|
2614
2780
|
loop do
|
2615
|
-
if has_terminal?('\
|
2781
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2616
2782
|
r11 = true
|
2617
2783
|
@index += 1
|
2618
2784
|
else
|
2785
|
+
terminal_parse_failure('[\\d]')
|
2619
2786
|
r11 = nil
|
2620
2787
|
end
|
2621
2788
|
if r11
|
@@ -2631,6 +2798,9 @@ module Timing
|
|
2631
2798
|
@index = i10
|
2632
2799
|
r10 = nil
|
2633
2800
|
else
|
2801
|
+
if s10.size < 2
|
2802
|
+
@terminal_failures.pop
|
2803
|
+
end
|
2634
2804
|
r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
|
2635
2805
|
end
|
2636
2806
|
s8 << r10
|
@@ -2659,26 +2829,29 @@ module Timing
|
|
2659
2829
|
r1 = nil
|
2660
2830
|
end
|
2661
2831
|
if r1
|
2832
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2662
2833
|
r0 = r1
|
2663
2834
|
else
|
2664
|
-
if has_terminal?('beginning', false, index)
|
2665
|
-
r12 = instantiate_node(HourMinuteSecond,input, index...(index +
|
2666
|
-
@index +=
|
2835
|
+
if (match_len = has_terminal?('beginning', false, index))
|
2836
|
+
r12 = instantiate_node(HourMinuteSecond,input, index...(index + match_len))
|
2837
|
+
@index += match_len
|
2667
2838
|
else
|
2668
|
-
terminal_parse_failure('beginning')
|
2839
|
+
terminal_parse_failure('\'beginning\'')
|
2669
2840
|
r12 = nil
|
2670
2841
|
end
|
2671
2842
|
if r12
|
2843
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2672
2844
|
r0 = r12
|
2673
2845
|
else
|
2674
|
-
if has_terminal?('end', false, index)
|
2675
|
-
r13 = instantiate_node(HourMinuteSecond,input, index...(index +
|
2676
|
-
@index +=
|
2846
|
+
if (match_len = has_terminal?('end', false, index))
|
2847
|
+
r13 = instantiate_node(HourMinuteSecond,input, index...(index + match_len))
|
2848
|
+
@index += match_len
|
2677
2849
|
else
|
2678
|
-
terminal_parse_failure('end')
|
2850
|
+
terminal_parse_failure('\'end\'')
|
2679
2851
|
r13 = nil
|
2680
2852
|
end
|
2681
2853
|
if r13
|
2854
|
+
r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
|
2682
2855
|
r0 = r13
|
2683
2856
|
else
|
2684
2857
|
@index = i0
|
@@ -2697,7 +2870,7 @@ module Timing
|
|
2697
2870
|
if node_cache[:integer].has_key?(index)
|
2698
2871
|
cached = node_cache[:integer][index]
|
2699
2872
|
if cached
|
2700
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2873
|
+
node_cache[:integer][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2701
2874
|
@index = cached.interval.end
|
2702
2875
|
end
|
2703
2876
|
return cached
|
@@ -2705,10 +2878,11 @@ module Timing
|
|
2705
2878
|
|
2706
2879
|
s0, i0 = [], index
|
2707
2880
|
loop do
|
2708
|
-
if has_terminal?('\
|
2881
|
+
if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
|
2709
2882
|
r1 = true
|
2710
2883
|
@index += 1
|
2711
2884
|
else
|
2885
|
+
terminal_parse_failure('[\\d]')
|
2712
2886
|
r1 = nil
|
2713
2887
|
end
|
2714
2888
|
if r1
|
@@ -2734,16 +2908,17 @@ module Timing
|
|
2734
2908
|
if node_cache[:space].has_key?(index)
|
2735
2909
|
cached = node_cache[:space][index]
|
2736
2910
|
if cached
|
2737
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2911
|
+
node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2738
2912
|
@index = cached.interval.end
|
2739
2913
|
end
|
2740
2914
|
return cached
|
2741
2915
|
end
|
2742
2916
|
|
2743
|
-
if has_terminal?('\
|
2917
|
+
if has_terminal?(@regexps[gr = '\A[\\s\\t\\n]'] ||= Regexp.new(gr), :regexp, index)
|
2744
2918
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2745
2919
|
@index += 1
|
2746
2920
|
else
|
2921
|
+
terminal_parse_failure('[\\s\\t\\n]')
|
2747
2922
|
r0 = nil
|
2748
2923
|
end
|
2749
2924
|
|