timing 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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