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.
@@ -14,7 +14,7 @@ module Timing
14
14
  elements[1]
15
15
  end
16
16
 
17
- def zone_offset
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 = _nt_zone_offset
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 + 15))
286
- @index += 15
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
439
- @index += 1
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
451
- @index += 1
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 + 3))
586
- @index += 3
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 + 2))
648
- @index += 2
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
824
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
858
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
904
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
955
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
989
- @index += 1
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?('\G[\\d]', true, index)
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 + 3))
1058
- @index += 3
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 + 5))
1082
- @index += 5
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 + 8))
1106
- @index += 8
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 + 9))
1130
- @index += 9
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 + 4))
1184
- @index += 4
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 + 4))
1208
- @index += 4
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 + 9))
1270
- @index += 9
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 + 2))
1291
- @index += 2
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 + 3))
1333
- @index += 3
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 + 2))
1354
- @index += 2
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 + 6))
1418
- @index += 6
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 + 4))
1442
- @index += 4
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 + 6))
1525
- @index += 6
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1534
- @index += 1
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 + 6))
1576
- @index += 6
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1585
- @index += 1
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 + 4))
1627
- @index += 4
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1636
- @index += 1
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 + 3))
1678
- @index += 3
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1687
- @index += 1
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 + 4))
1729
- @index += 4
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1738
- @index += 1
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 + 5))
1780
- @index += 5
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1789
- @index += 1
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 + 4))
1831
- @index += 4
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
1840
- @index += 1
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 + 6))
1909
- @index += 6
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 + 6))
1919
- @index += 6
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 + 7))
1929
- @index += 7
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 + 9))
1939
- @index += 9
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 + 8))
1949
- @index += 8
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 + 6))
1959
- @index += 6
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 + 8))
1969
- @index += 8
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 + 3))
2006
- @index += 3
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 + 3))
2016
- @index += 3
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 + 3))
2026
- @index += 3
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 + 3))
2036
- @index += 3
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 + 3))
2046
- @index += 3
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 + 3))
2056
- @index += 3
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 + 3))
2066
- @index += 3
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 + 7))
2133
- @index += 7
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 + 8))
2143
- @index += 8
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 + 5))
2153
- @index += 5
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 + 5))
2163
- @index += 5
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 + 3))
2173
- @index += 3
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 + 4))
2183
- @index += 4
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 + 4))
2193
- @index += 4
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 + 6))
2203
- @index += 6
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 + 9))
2213
- @index += 9
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 + 7))
2223
- @index += 7
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 + 8))
2233
- @index += 8
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 + 8))
2243
- @index += 8
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 + 3))
2285
- @index += 3
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 + 3))
2295
- @index += 3
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 + 3))
2305
- @index += 3
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 + 3))
2315
- @index += 3
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 + 3))
2325
- @index += 3
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 + 3))
2335
- @index += 3
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 + 3))
2345
- @index += 3
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 + 3))
2355
- @index += 3
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 + 3))
2365
- @index += 3
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 + 3))
2375
- @index += 3
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 + 3))
2385
- @index += 3
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 + 3))
2395
- @index += 3
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?('\G[+-]', true, index)
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
2473
- @index += 1
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?('\G[\\d]', true, index)
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
2571
- @index += 1
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?('\G[\\d]', true, index)
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 = instantiate_node(SyntaxNode,input, index...(index + 1))
2606
- @index += 1
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?('\G[\\d]', true, index)
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 + 9))
2666
- @index += 9
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 + 3))
2676
- @index += 3
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?('\G[\\d]', true, index)
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?('\G[\\s\\t\\n]', true, index)
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