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.
@@ -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 = instantiate_node(SyntaxNode,input, index...(index + 1))
407
- @index += 1
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
419
- @index += 1
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 + 3))
554
- @index += 3
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 + 2))
616
- @index += 2
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
792
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
826
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
872
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
923
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
957
- @index += 1
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?('\G[\\d]', true, index)
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 + 3))
1026
- @index += 3
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 + 5))
1050
- @index += 5
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 + 8))
1074
- @index += 8
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 + 9))
1098
- @index += 9
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 + 4))
1152
- @index += 4
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 + 4))
1176
- @index += 4
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 + 9))
1238
- @index += 9
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 + 2))
1259
- @index += 2
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 + 3))
1301
- @index += 3
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 + 2))
1322
- @index += 2
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 + 6))
1386
- @index += 6
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 + 4))
1410
- @index += 4
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 + 6))
1493
- @index += 6
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1502
- @index += 1
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 + 6))
1544
- @index += 6
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1553
- @index += 1
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 + 4))
1595
- @index += 4
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1604
- @index += 1
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 + 3))
1646
- @index += 3
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1655
- @index += 1
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 + 4))
1697
- @index += 4
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1706
- @index += 1
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 + 5))
1748
- @index += 5
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1757
- @index += 1
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 + 4))
1799
- @index += 4
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1808
- @index += 1
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 + 6))
1877
- @index += 6
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 + 6))
1887
- @index += 6
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 + 7))
1897
- @index += 7
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 + 9))
1907
- @index += 9
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 + 8))
1917
- @index += 8
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 + 6))
1927
- @index += 6
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 + 8))
1937
- @index += 8
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 + 3))
1974
- @index += 3
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 + 3))
1984
- @index += 3
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 + 3))
1994
- @index += 3
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 + 3))
2004
- @index += 3
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 + 3))
2014
- @index += 3
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 + 3))
2024
- @index += 3
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 + 3))
2034
- @index += 3
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 + 7))
2101
- @index += 7
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 + 8))
2111
- @index += 8
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 + 5))
2121
- @index += 5
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 + 5))
2131
- @index += 5
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 + 3))
2141
- @index += 3
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 + 4))
2151
- @index += 4
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 + 4))
2161
- @index += 4
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 + 6))
2171
- @index += 6
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 + 9))
2181
- @index += 9
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 + 7))
2191
- @index += 7
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 + 8))
2201
- @index += 8
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 + 8))
2211
- @index += 8
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 + 3))
2253
- @index += 3
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 + 3))
2263
- @index += 3
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 + 3))
2273
- @index += 3
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 + 3))
2283
- @index += 3
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 + 3))
2293
- @index += 3
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 + 3))
2303
- @index += 3
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 + 3))
2313
- @index += 3
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 + 3))
2323
- @index += 3
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 + 3))
2333
- @index += 3
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 + 3))
2343
- @index += 3
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 + 3))
2353
- @index += 3
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 + 3))
2363
- @index += 3
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?('\G[+-]', true, index)
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
2441
- @index += 1
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?('\G[\\d]', true, index)
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
2539
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
2574
- @index += 1
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?('\G[\\d]', true, index)
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 + 9))
2634
- @index += 9
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 + 3))
2644
- @index += 3
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?('\G[\\d]', true, index)
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?('\G[\\s\\t\\n]', true, index)
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