timing 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63e328cc2e7495bf553c2965a54484658d676fbd
4
- data.tar.gz: cbd866e6b35c1cc28c0905a585b5055f0b706f73
3
+ metadata.gz: d6f6f145028cd5331680c01a8365eaa4f56cfee1
4
+ data.tar.gz: 3c032ab78e222d16d58ccbeb8a741c2e47c54519
5
5
  SHA512:
6
- metadata.gz: 0c2c4a39388a3ca0e94b7cf889c77632cd0dcfa779f4f58fdc01b57fdf028db559fec82fd4b22995c977405fe61b28827ab65a8e1cc7dfb8da3a88c1476ebccd
7
- data.tar.gz: d802ff14ed1a8963086af79ef724a576236104578db6d917546a97254ae0bf681a8e0b7319f37ed98807581aeacd7bc87ba4ad0a71c2cd0a92d8de5e102d1596
6
+ metadata.gz: 7e6b80824b06f9db1a4561214a518b79321cb75123558dc525f21a948b5805b0920a17b9ec1763b2d35f319afefdc81f490ba43028e3dc1b2097ceae62635945
7
+ data.tar.gz: 25bec6e9461646ba7d789ca0b98f576e772162527f19187fedb15347d38da5a4dea5c6bb3b92dee883a89cb1e72078e30341f725bf499e1dd299031b85888573
@@ -1,15 +1,69 @@
1
1
  module Timing
2
2
  module Helpers
3
3
 
4
- TIME_REGEXP = /(\d\d:\d\d:\d\d)/
5
- TIME_FORMAT = '%F %T %z'
4
+ MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
5
+
6
+ def beginning_of_hour(time)
7
+ TimeInZone.parse time.strftime('%Y-%m-%d %H:00:00 %z')
8
+ end
9
+
10
+ def end_of_hour(time)
11
+ TimeInZone.parse time.strftime('%Y-%m-%d %H:59:59 %z')
12
+ end
6
13
 
7
14
  def beginning_of_day(time)
8
- TimeInZone.parse time.strftime(TIME_FORMAT).sub(TIME_REGEXP, '00:00:00')
15
+ TimeInZone.parse time.strftime('%Y-%m-%d 00:00:00 %z')
9
16
  end
10
17
 
11
18
  def end_of_day(time)
12
- TimeInZone.parse time.strftime(TIME_FORMAT).sub(TIME_REGEXP, '23:59:59')
19
+ TimeInZone.parse time.strftime('%Y-%m-%d 23:59:59 %z')
20
+ end
21
+
22
+ def beginning_of_week(time)
23
+ date = beginning_of_day time
24
+ date - Interval.days(date.wday)
25
+ end
26
+
27
+ def end_of_week(time)
28
+ date = end_of_day time
29
+ date + Interval.days(6 - date.wday)
30
+ end
31
+
32
+ def beginning_of_month(time)
33
+ TimeInZone.parse time.strftime('%Y-%m-01 00:00:00 %z')
34
+ end
35
+
36
+ def end_of_month(time)
37
+ TimeInZone.parse time.strftime("%Y-%m-#{days_in_month(time.month, time.year)} 23:59:59 %z")
38
+ end
39
+
40
+ def beginning_of_year(time)
41
+ TimeInZone.parse time.strftime('%Y-01-01 00:00:00 %z')
42
+ end
43
+
44
+ def end_of_year(time)
45
+ TimeInZone.parse time.strftime('%Y-12-31 23:59:59 %z')
46
+ end
47
+
48
+ def days_in_month(month, year=nil)
49
+ return 29 if month == 2 && Date.leap?(year || TimeInZone.now.year)
50
+ MONTH_DAYS[month-1]
51
+ end
52
+
53
+ def months_ago(time, count)
54
+ TimeInZone.new (time.to_datetime << count).to_time, time.utc_offset
55
+ end
56
+
57
+ def months_after(time, count)
58
+ TimeInZone.new (time.to_datetime >> count).to_time, time.utc_offset
59
+ end
60
+
61
+ def years_ago(time, count)
62
+ months_ago time, count * 12
63
+ end
64
+
65
+ def years_after(time, count)
66
+ months_after time, count * 12
13
67
  end
14
68
 
15
69
  end
@@ -0,0 +1,2848 @@
1
+ # Autogenerated from a Treetop grammar. Edits may be lost.
2
+
3
+
4
+ module Timing
5
+ module NaturalTimeLanguage
6
+ include Treetop::Runtime
7
+
8
+ def root
9
+ @root ||= :expression
10
+ end
11
+
12
+ module Expression0
13
+ def moment
14
+ elements[1]
15
+ end
16
+
17
+ def zone_offset
18
+ elements[3]
19
+ end
20
+
21
+ end
22
+
23
+ def _nt_expression
24
+ start_index = index
25
+ if node_cache[:expression].has_key?(index)
26
+ cached = node_cache[:expression][index]
27
+ if cached
28
+ node_cache[:expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
29
+ @index = cached.interval.end
30
+ end
31
+ return cached
32
+ end
33
+
34
+ i0, s0 = index, []
35
+ s1, i1 = [], index
36
+ loop do
37
+ r2 = _nt_space
38
+ if r2
39
+ s1 << r2
40
+ else
41
+ break
42
+ end
43
+ end
44
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
45
+ s0 << r1
46
+ if r1
47
+ r3 = _nt_moment
48
+ s0 << r3
49
+ if r3
50
+ s4, i4 = [], index
51
+ loop do
52
+ r5 = _nt_space
53
+ if r5
54
+ s4 << r5
55
+ else
56
+ break
57
+ end
58
+ end
59
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
60
+ s0 << r4
61
+ if r4
62
+ r7 = _nt_zone_offset
63
+ if r7
64
+ r6 = r7
65
+ else
66
+ r6 = instantiate_node(SyntaxNode,input, index...index)
67
+ end
68
+ s0 << r6
69
+ if r6
70
+ s8, i8 = [], index
71
+ loop do
72
+ r9 = _nt_space
73
+ if r9
74
+ s8 << r9
75
+ else
76
+ break
77
+ end
78
+ end
79
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
80
+ s0 << r8
81
+ end
82
+ end
83
+ end
84
+ end
85
+ if s0.last
86
+ r0 = instantiate_node(Expression,input, i0...index, s0)
87
+ r0.extend(Expression0)
88
+ else
89
+ @index = i0
90
+ r0 = nil
91
+ end
92
+
93
+ node_cache[:expression][start_index] = r0
94
+
95
+ r0
96
+ end
97
+
98
+ def _nt_moment
99
+ start_index = index
100
+ if node_cache[:moment].has_key?(index)
101
+ cached = node_cache[:moment][index]
102
+ if cached
103
+ node_cache[:moment][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_timestamp
111
+ if r1
112
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
113
+ r0 = r1
114
+ else
115
+ r2 = _nt_time_ago
116
+ if r2
117
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
118
+ r0 = r2
119
+ else
120
+ r3 = _nt_moment_at_time
121
+ if r3
122
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
123
+ r0 = r3
124
+ else
125
+ r4 = _nt_before_from_moment
126
+ if r4
127
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
128
+ r0 = r4
129
+ else
130
+ r5 = _nt_date_moment
131
+ if r5
132
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
133
+ r0 = r5
134
+ else
135
+ @index = i0
136
+ r0 = nil
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+
143
+ node_cache[:moment][start_index] = r0
144
+
145
+ r0
146
+ end
147
+
148
+ def _nt_date_moment
149
+ start_index = index
150
+ if node_cache[:date_moment].has_key?(index)
151
+ cached = node_cache[:date_moment][index]
152
+ if cached
153
+ node_cache[:date_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
154
+ @index = cached.interval.end
155
+ end
156
+ return cached
157
+ end
158
+
159
+ i0 = index
160
+ r1 = _nt_named_moment
161
+ if r1
162
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
163
+ r0 = r1
164
+ else
165
+ r2 = _nt_last_next_day_name
166
+ if r2
167
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
168
+ r0 = r2
169
+ else
170
+ r3 = _nt_day_month_name_year
171
+ if r3
172
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
173
+ r0 = r3
174
+ else
175
+ r4 = _nt_year_month_day
176
+ if r4
177
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
178
+ r0 = r4
179
+ else
180
+ r5 = _nt_beginning_end_interval
181
+ if r5
182
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
183
+ r0 = r5
184
+ else
185
+ @index = i0
186
+ r0 = nil
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
192
+
193
+ node_cache[:date_moment][start_index] = r0
194
+
195
+ r0
196
+ end
197
+
198
+ def _nt_named_moment
199
+ start_index = index
200
+ if node_cache[:named_moment].has_key?(index)
201
+ cached = node_cache[:named_moment][index]
202
+ if cached
203
+ node_cache[:named_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
204
+ @index = cached.interval.end
205
+ end
206
+ return cached
207
+ end
208
+
209
+ i0 = index
210
+ r1 = _nt_now
211
+ if r1
212
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
213
+ r0 = r1
214
+ else
215
+ r2 = _nt_today
216
+ if r2
217
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
218
+ r0 = r2
219
+ else
220
+ r3 = _nt_tomorrow
221
+ if r3
222
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
223
+ r0 = r3
224
+ else
225
+ r4 = _nt_yesterday
226
+ if r4
227
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
228
+ r0 = r4
229
+ else
230
+ @index = i0
231
+ r0 = nil
232
+ end
233
+ end
234
+ end
235
+ end
236
+
237
+ node_cache[:named_moment][start_index] = r0
238
+
239
+ r0
240
+ end
241
+
242
+ module LastNextDayName0
243
+ def direction
244
+ elements[0]
245
+ end
246
+
247
+ def day_name
248
+ elements[2]
249
+ end
250
+ end
251
+
252
+ def _nt_last_next_day_name
253
+ start_index = index
254
+ if node_cache[:last_next_day_name].has_key?(index)
255
+ cached = node_cache[:last_next_day_name][index]
256
+ if cached
257
+ node_cache[:last_next_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
258
+ @index = cached.interval.end
259
+ end
260
+ return cached
261
+ end
262
+
263
+ i0, s0 = index, []
264
+ r1 = _nt_last_next
265
+ s0 << r1
266
+ if r1
267
+ s2, i2 = [], index
268
+ loop do
269
+ r3 = _nt_space
270
+ if r3
271
+ s2 << r3
272
+ else
273
+ break
274
+ end
275
+ end
276
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
277
+ s0 << r2
278
+ if r2
279
+ r4 = _nt_day_name
280
+ s0 << r4
281
+ end
282
+ end
283
+ if s0.last
284
+ r0 = instantiate_node(LastNextDayName,input, i0...index, s0)
285
+ r0.extend(LastNextDayName0)
286
+ else
287
+ @index = i0
288
+ r0 = nil
289
+ end
290
+
291
+ node_cache[:last_next_day_name][start_index] = r0
292
+
293
+ r0
294
+ end
295
+
296
+ module DayMonthNameYear0
297
+ def day
298
+ elements[0]
299
+ end
300
+
301
+ def month
302
+ elements[2]
303
+ end
304
+
305
+ def year
306
+ elements[4]
307
+ end
308
+
309
+ end
310
+
311
+ def _nt_day_month_name_year
312
+ start_index = index
313
+ if node_cache[:day_month_name_year].has_key?(index)
314
+ cached = node_cache[:day_month_name_year][index]
315
+ if cached
316
+ node_cache[:day_month_name_year][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
317
+ @index = cached.interval.end
318
+ end
319
+ return cached
320
+ end
321
+
322
+ i0, s0 = index, []
323
+ r1 = _nt_integer
324
+ s0 << r1
325
+ if r1
326
+ s2, i2 = [], index
327
+ loop do
328
+ r3 = _nt_space
329
+ if r3
330
+ s2 << r3
331
+ else
332
+ break
333
+ end
334
+ end
335
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
336
+ s0 << r2
337
+ if r2
338
+ r4 = _nt_month_name
339
+ s0 << r4
340
+ if r4
341
+ s5, i5 = [], index
342
+ loop do
343
+ r6 = _nt_space
344
+ if r6
345
+ s5 << r6
346
+ else
347
+ break
348
+ end
349
+ end
350
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
351
+ s0 << r5
352
+ if r5
353
+ r8 = _nt_integer
354
+ if r8
355
+ r7 = r8
356
+ else
357
+ r7 = instantiate_node(SyntaxNode,input, index...index)
358
+ end
359
+ s0 << r7
360
+ if r7
361
+ s9, i9 = [], index
362
+ loop do
363
+ r10 = _nt_space
364
+ if r10
365
+ s9 << r10
366
+ else
367
+ break
368
+ end
369
+ end
370
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
371
+ s0 << r9
372
+ end
373
+ end
374
+ end
375
+ end
376
+ end
377
+ if s0.last
378
+ r0 = instantiate_node(DayMonthNameYear,input, i0...index, s0)
379
+ r0.extend(DayMonthNameYear0)
380
+ else
381
+ @index = i0
382
+ r0 = nil
383
+ end
384
+
385
+ node_cache[:day_month_name_year][start_index] = r0
386
+
387
+ r0
388
+ end
389
+
390
+ module YearMonthDay0
391
+ def year
392
+ elements[0]
393
+ end
394
+
395
+ def month
396
+ elements[2]
397
+ end
398
+
399
+ def day
400
+ elements[4]
401
+ end
402
+ end
403
+
404
+ def _nt_year_month_day
405
+ start_index = index
406
+ if node_cache[:year_month_day].has_key?(index)
407
+ cached = node_cache[:year_month_day][index]
408
+ if cached
409
+ node_cache[:year_month_day][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
410
+ @index = cached.interval.end
411
+ end
412
+ return cached
413
+ end
414
+
415
+ i0, s0 = index, []
416
+ r1 = _nt_integer
417
+ s0 << r1
418
+ if r1
419
+ if (match_len = has_terminal?('-', false, index))
420
+ r2 = true
421
+ @index += match_len
422
+ else
423
+ terminal_parse_failure('\'-\'')
424
+ r2 = nil
425
+ end
426
+ s0 << r2
427
+ if r2
428
+ r3 = _nt_integer
429
+ s0 << r3
430
+ if r3
431
+ if (match_len = has_terminal?('-', false, index))
432
+ r4 = true
433
+ @index += match_len
434
+ else
435
+ terminal_parse_failure('\'-\'')
436
+ r4 = nil
437
+ end
438
+ s0 << r4
439
+ if r4
440
+ r5 = _nt_integer
441
+ s0 << r5
442
+ end
443
+ end
444
+ end
445
+ end
446
+ if s0.last
447
+ r0 = instantiate_node(YearMonthDay,input, i0...index, s0)
448
+ r0.extend(YearMonthDay0)
449
+ else
450
+ @index = i0
451
+ r0 = nil
452
+ end
453
+
454
+ node_cache[:year_month_day][start_index] = r0
455
+
456
+ r0
457
+ end
458
+
459
+ module BeginningEndInterval0
460
+ def direction
461
+ elements[0]
462
+ end
463
+
464
+ def interval_type
465
+ elements[2]
466
+ end
467
+ end
468
+
469
+ def _nt_beginning_end_interval
470
+ start_index = index
471
+ if node_cache[:beginning_end_interval].has_key?(index)
472
+ cached = node_cache[:beginning_end_interval][index]
473
+ if cached
474
+ node_cache[:beginning_end_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
475
+ @index = cached.interval.end
476
+ end
477
+ return cached
478
+ end
479
+
480
+ i0, s0 = index, []
481
+ r1 = _nt_beginning_end
482
+ s0 << r1
483
+ if r1
484
+ s2, i2 = [], index
485
+ loop do
486
+ r3 = _nt_space
487
+ if r3
488
+ s2 << r3
489
+ else
490
+ break
491
+ end
492
+ end
493
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
494
+ s0 << r2
495
+ if r2
496
+ r4 = _nt_interval
497
+ s0 << r4
498
+ end
499
+ end
500
+ if s0.last
501
+ r0 = instantiate_node(BeginningEndInterval,input, i0...index, s0)
502
+ r0.extend(BeginningEndInterval0)
503
+ else
504
+ @index = i0
505
+ r0 = nil
506
+ end
507
+
508
+ node_cache[:beginning_end_interval][start_index] = r0
509
+
510
+ r0
511
+ end
512
+
513
+ module TimeAgo0
514
+ def number
515
+ elements[0]
516
+ end
517
+
518
+ def interval_type
519
+ elements[2]
520
+ end
521
+
522
+ end
523
+
524
+ def _nt_time_ago
525
+ start_index = index
526
+ if node_cache[:time_ago].has_key?(index)
527
+ cached = node_cache[:time_ago][index]
528
+ if cached
529
+ node_cache[:time_ago][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
530
+ @index = cached.interval.end
531
+ end
532
+ return cached
533
+ end
534
+
535
+ i0, s0 = index, []
536
+ r1 = _nt_integer
537
+ s0 << r1
538
+ if r1
539
+ s2, i2 = [], index
540
+ loop do
541
+ r3 = _nt_space
542
+ if r3
543
+ s2 << r3
544
+ else
545
+ break
546
+ end
547
+ end
548
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
549
+ s0 << r2
550
+ if r2
551
+ r4 = _nt_interval
552
+ s0 << r4
553
+ if r4
554
+ s5, i5 = [], index
555
+ loop do
556
+ r6 = _nt_space
557
+ if r6
558
+ s5 << r6
559
+ else
560
+ break
561
+ end
562
+ end
563
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
564
+ s0 << r5
565
+ if r5
566
+ if (match_len = has_terminal?('ago', :insens, index))
567
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
568
+ @index += match_len
569
+ else
570
+ terminal_parse_failure('\'ago\'')
571
+ r7 = nil
572
+ end
573
+ s0 << r7
574
+ end
575
+ end
576
+ end
577
+ end
578
+ if s0.last
579
+ r0 = instantiate_node(TimeAgo,input, i0...index, s0)
580
+ r0.extend(TimeAgo0)
581
+ else
582
+ @index = i0
583
+ r0 = nil
584
+ end
585
+
586
+ node_cache[:time_ago][start_index] = r0
587
+
588
+ r0
589
+ end
590
+
591
+ module MomentAtTime0
592
+ def moment
593
+ elements[0]
594
+ end
595
+
596
+ def time
597
+ elements[4]
598
+ end
599
+ end
600
+
601
+ def _nt_moment_at_time
602
+ start_index = index
603
+ if node_cache[:moment_at_time].has_key?(index)
604
+ cached = node_cache[:moment_at_time][index]
605
+ if cached
606
+ node_cache[:moment_at_time][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
607
+ @index = cached.interval.end
608
+ end
609
+ return cached
610
+ end
611
+
612
+ i0, s0 = index, []
613
+ r1 = _nt_date_moment
614
+ s0 << r1
615
+ if r1
616
+ s2, i2 = [], index
617
+ loop do
618
+ r3 = _nt_space
619
+ if r3
620
+ s2 << r3
621
+ else
622
+ break
623
+ end
624
+ end
625
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
626
+ s0 << r2
627
+ if r2
628
+ if (match_len = has_terminal?('at', :insens, index))
629
+ r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
630
+ @index += match_len
631
+ else
632
+ terminal_parse_failure('\'at\'')
633
+ r4 = nil
634
+ end
635
+ s0 << r4
636
+ if r4
637
+ s5, i5 = [], index
638
+ loop do
639
+ r6 = _nt_space
640
+ if r6
641
+ s5 << r6
642
+ else
643
+ break
644
+ end
645
+ end
646
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
647
+ s0 << r5
648
+ if r5
649
+ r7 = _nt_hour_minute_second
650
+ s0 << r7
651
+ end
652
+ end
653
+ end
654
+ end
655
+ if s0.last
656
+ r0 = instantiate_node(MomentAtTime,input, i0...index, s0)
657
+ r0.extend(MomentAtTime0)
658
+ else
659
+ @index = i0
660
+ r0 = nil
661
+ end
662
+
663
+ node_cache[:moment_at_time][start_index] = r0
664
+
665
+ r0
666
+ end
667
+
668
+ module BeforeFromMoment0
669
+ def number
670
+ elements[0]
671
+ end
672
+
673
+ def interval_type
674
+ elements[2]
675
+ end
676
+
677
+ def direction
678
+ elements[4]
679
+ end
680
+
681
+ def moment
682
+ elements[6]
683
+ end
684
+ end
685
+
686
+ def _nt_before_from_moment
687
+ start_index = index
688
+ if node_cache[:before_from_moment].has_key?(index)
689
+ cached = node_cache[:before_from_moment][index]
690
+ if cached
691
+ node_cache[:before_from_moment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
692
+ @index = cached.interval.end
693
+ end
694
+ return cached
695
+ end
696
+
697
+ i0, s0 = index, []
698
+ r1 = _nt_integer
699
+ s0 << r1
700
+ if r1
701
+ s2, i2 = [], index
702
+ loop do
703
+ r3 = _nt_space
704
+ if r3
705
+ s2 << r3
706
+ else
707
+ break
708
+ end
709
+ end
710
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
711
+ s0 << r2
712
+ if r2
713
+ r4 = _nt_interval
714
+ s0 << r4
715
+ if r4
716
+ s5, i5 = [], index
717
+ loop do
718
+ r6 = _nt_space
719
+ if r6
720
+ s5 << r6
721
+ else
722
+ break
723
+ end
724
+ end
725
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
726
+ s0 << r5
727
+ if r5
728
+ r7 = _nt_before_from
729
+ s0 << r7
730
+ if r7
731
+ s8, i8 = [], index
732
+ loop do
733
+ r9 = _nt_space
734
+ if r9
735
+ s8 << r9
736
+ else
737
+ break
738
+ end
739
+ end
740
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
741
+ s0 << r8
742
+ if r8
743
+ r10 = _nt_moment
744
+ s0 << r10
745
+ end
746
+ end
747
+ end
748
+ end
749
+ end
750
+ end
751
+ if s0.last
752
+ r0 = instantiate_node(BeforeFromMoment,input, i0...index, s0)
753
+ r0.extend(BeforeFromMoment0)
754
+ else
755
+ @index = i0
756
+ r0 = nil
757
+ end
758
+
759
+ node_cache[:before_from_moment][start_index] = r0
760
+
761
+ r0
762
+ end
763
+
764
+ module Timestamp0
765
+ end
766
+
767
+ def _nt_timestamp
768
+ start_index = index
769
+ if node_cache[:timestamp].has_key?(index)
770
+ cached = node_cache[:timestamp][index]
771
+ if cached
772
+ node_cache[:timestamp][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
773
+ @index = cached.interval.end
774
+ end
775
+ return cached
776
+ end
777
+
778
+ i0, s0 = index, []
779
+ s1, i1 = [], index
780
+ loop do
781
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
782
+ r2 = true
783
+ @index += 1
784
+ else
785
+ terminal_parse_failure('[\\d]')
786
+ r2 = nil
787
+ end
788
+ if r2
789
+ s1 << r2
790
+ else
791
+ break
792
+ end
793
+ if s1.size == 4
794
+ break
795
+ end
796
+ end
797
+ if s1.size < 4
798
+ @index = i1
799
+ r1 = nil
800
+ else
801
+ if s1.size < 4
802
+ terminal_failures.pop
803
+ end
804
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
805
+ end
806
+ s0 << r1
807
+ if r1
808
+ if (match_len = has_terminal?('-', false, index))
809
+ r3 = true
810
+ @index += match_len
811
+ else
812
+ terminal_parse_failure('\'-\'')
813
+ r3 = nil
814
+ end
815
+ s0 << r3
816
+ if r3
817
+ s4, i4 = [], index
818
+ loop do
819
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
820
+ r5 = true
821
+ @index += 1
822
+ else
823
+ terminal_parse_failure('[\\d]')
824
+ r5 = nil
825
+ end
826
+ if r5
827
+ s4 << r5
828
+ else
829
+ break
830
+ end
831
+ if s4.size == 2
832
+ break
833
+ end
834
+ end
835
+ if s4.size < 2
836
+ @index = i4
837
+ r4 = nil
838
+ else
839
+ if s4.size < 2
840
+ terminal_failures.pop
841
+ end
842
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
843
+ end
844
+ s0 << r4
845
+ if r4
846
+ if (match_len = has_terminal?('-', false, index))
847
+ r6 = true
848
+ @index += match_len
849
+ else
850
+ terminal_parse_failure('\'-\'')
851
+ r6 = nil
852
+ end
853
+ s0 << r6
854
+ if r6
855
+ s7, i7 = [], index
856
+ loop do
857
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
858
+ r8 = true
859
+ @index += 1
860
+ else
861
+ terminal_parse_failure('[\\d]')
862
+ r8 = nil
863
+ end
864
+ if r8
865
+ s7 << r8
866
+ else
867
+ break
868
+ end
869
+ if s7.size == 2
870
+ break
871
+ end
872
+ end
873
+ if s7.size < 2
874
+ @index = i7
875
+ r7 = nil
876
+ else
877
+ if s7.size < 2
878
+ terminal_failures.pop
879
+ end
880
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
881
+ end
882
+ s0 << r7
883
+ if r7
884
+ s9, i9 = [], index
885
+ loop do
886
+ r10 = _nt_space
887
+ if r10
888
+ s9 << r10
889
+ else
890
+ break
891
+ end
892
+ end
893
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
894
+ s0 << r9
895
+ if r9
896
+ if (match_len = has_terminal?('T', false, index))
897
+ r12 = true
898
+ @index += match_len
899
+ else
900
+ terminal_parse_failure('\'T\'')
901
+ r12 = nil
902
+ end
903
+ if r12
904
+ r11 = r12
905
+ else
906
+ r11 = instantiate_node(SyntaxNode,input, index...index)
907
+ end
908
+ s0 << r11
909
+ if r11
910
+ s13, i13 = [], index
911
+ loop do
912
+ r14 = _nt_space
913
+ if r14
914
+ s13 << r14
915
+ else
916
+ break
917
+ end
918
+ end
919
+ r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
920
+ s0 << r13
921
+ if r13
922
+ s15, i15 = [], index
923
+ loop do
924
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
925
+ r16 = true
926
+ @index += 1
927
+ else
928
+ terminal_parse_failure('[\\d]')
929
+ r16 = nil
930
+ end
931
+ if r16
932
+ s15 << r16
933
+ else
934
+ break
935
+ end
936
+ if s15.size == 2
937
+ break
938
+ end
939
+ end
940
+ if s15.size < 2
941
+ @index = i15
942
+ r15 = nil
943
+ else
944
+ if s15.size < 2
945
+ terminal_failures.pop
946
+ end
947
+ r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
948
+ end
949
+ s0 << r15
950
+ if r15
951
+ if (match_len = has_terminal?(':', false, index))
952
+ r17 = true
953
+ @index += match_len
954
+ else
955
+ terminal_parse_failure('\':\'')
956
+ r17 = nil
957
+ end
958
+ s0 << r17
959
+ if r17
960
+ s18, i18 = [], index
961
+ loop do
962
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
963
+ r19 = true
964
+ @index += 1
965
+ else
966
+ terminal_parse_failure('[\\d]')
967
+ r19 = nil
968
+ end
969
+ if r19
970
+ s18 << r19
971
+ else
972
+ break
973
+ end
974
+ if s18.size == 2
975
+ break
976
+ end
977
+ end
978
+ if s18.size < 2
979
+ @index = i18
980
+ r18 = nil
981
+ else
982
+ if s18.size < 2
983
+ terminal_failures.pop
984
+ end
985
+ r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
986
+ end
987
+ s0 << r18
988
+ if r18
989
+ if (match_len = has_terminal?(':', false, index))
990
+ r20 = true
991
+ @index += match_len
992
+ else
993
+ terminal_parse_failure('\':\'')
994
+ r20 = nil
995
+ end
996
+ s0 << r20
997
+ if r20
998
+ s21, i21 = [], index
999
+ loop do
1000
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
1001
+ r22 = true
1002
+ @index += 1
1003
+ else
1004
+ terminal_parse_failure('[\\d]')
1005
+ r22 = nil
1006
+ end
1007
+ if r22
1008
+ s21 << r22
1009
+ else
1010
+ break
1011
+ end
1012
+ if s21.size == 2
1013
+ break
1014
+ end
1015
+ end
1016
+ if s21.size < 2
1017
+ @index = i21
1018
+ r21 = nil
1019
+ else
1020
+ if s21.size < 2
1021
+ terminal_failures.pop
1022
+ end
1023
+ r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
1024
+ end
1025
+ s0 << r21
1026
+ end
1027
+ end
1028
+ end
1029
+ end
1030
+ end
1031
+ end
1032
+ end
1033
+ end
1034
+ end
1035
+ end
1036
+ end
1037
+ end
1038
+ if s0.last
1039
+ r0 = instantiate_node(Timestamp,input, i0...index, s0)
1040
+ r0.extend(Timestamp0)
1041
+ else
1042
+ @index = i0
1043
+ r0 = nil
1044
+ end
1045
+
1046
+ node_cache[:timestamp][start_index] = r0
1047
+
1048
+ r0
1049
+ end
1050
+
1051
+ def _nt_now
1052
+ start_index = index
1053
+ if node_cache[:now].has_key?(index)
1054
+ cached = node_cache[:now][index]
1055
+ if cached
1056
+ node_cache[:now][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1057
+ @index = cached.interval.end
1058
+ end
1059
+ return cached
1060
+ end
1061
+
1062
+ if (match_len = has_terminal?('now', :insens, index))
1063
+ r0 = instantiate_node(Now,input, index...(index + match_len))
1064
+ @index += match_len
1065
+ else
1066
+ terminal_parse_failure('\'now\'')
1067
+ r0 = nil
1068
+ end
1069
+
1070
+ node_cache[:now][start_index] = r0
1071
+
1072
+ r0
1073
+ end
1074
+
1075
+ def _nt_today
1076
+ start_index = index
1077
+ if node_cache[:today].has_key?(index)
1078
+ cached = node_cache[:today][index]
1079
+ if cached
1080
+ node_cache[:today][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1081
+ @index = cached.interval.end
1082
+ end
1083
+ return cached
1084
+ end
1085
+
1086
+ if (match_len = has_terminal?('today', :insens, index))
1087
+ r0 = instantiate_node(Today,input, index...(index + match_len))
1088
+ @index += match_len
1089
+ else
1090
+ terminal_parse_failure('\'today\'')
1091
+ r0 = nil
1092
+ end
1093
+
1094
+ node_cache[:today][start_index] = r0
1095
+
1096
+ r0
1097
+ end
1098
+
1099
+ def _nt_tomorrow
1100
+ start_index = index
1101
+ if node_cache[:tomorrow].has_key?(index)
1102
+ cached = node_cache[:tomorrow][index]
1103
+ if cached
1104
+ node_cache[:tomorrow][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1105
+ @index = cached.interval.end
1106
+ end
1107
+ return cached
1108
+ end
1109
+
1110
+ if (match_len = has_terminal?('tomorrow', :insens, index))
1111
+ r0 = instantiate_node(Tomorrow,input, index...(index + match_len))
1112
+ @index += match_len
1113
+ else
1114
+ terminal_parse_failure('\'tomorrow\'')
1115
+ r0 = nil
1116
+ end
1117
+
1118
+ node_cache[:tomorrow][start_index] = r0
1119
+
1120
+ r0
1121
+ end
1122
+
1123
+ def _nt_yesterday
1124
+ start_index = index
1125
+ if node_cache[:yesterday].has_key?(index)
1126
+ cached = node_cache[:yesterday][index]
1127
+ if cached
1128
+ node_cache[:yesterday][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1129
+ @index = cached.interval.end
1130
+ end
1131
+ return cached
1132
+ end
1133
+
1134
+ if (match_len = has_terminal?('yesterday', :insens, index))
1135
+ r0 = instantiate_node(Yesterday,input, index...(index + match_len))
1136
+ @index += match_len
1137
+ else
1138
+ terminal_parse_failure('\'yesterday\'')
1139
+ r0 = nil
1140
+ end
1141
+
1142
+ node_cache[:yesterday][start_index] = r0
1143
+
1144
+ r0
1145
+ end
1146
+
1147
+ def _nt_last_next
1148
+ start_index = index
1149
+ if node_cache[:last_next].has_key?(index)
1150
+ cached = node_cache[:last_next][index]
1151
+ if cached
1152
+ node_cache[:last_next][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1153
+ @index = cached.interval.end
1154
+ end
1155
+ return cached
1156
+ end
1157
+
1158
+ i0 = index
1159
+ r1 = _nt_last
1160
+ if r1
1161
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1162
+ r0 = r1
1163
+ else
1164
+ r2 = _nt_next
1165
+ if r2
1166
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1167
+ r0 = r2
1168
+ else
1169
+ @index = i0
1170
+ r0 = nil
1171
+ end
1172
+ end
1173
+
1174
+ node_cache[:last_next][start_index] = r0
1175
+
1176
+ r0
1177
+ end
1178
+
1179
+ def _nt_last
1180
+ start_index = index
1181
+ if node_cache[:last].has_key?(index)
1182
+ cached = node_cache[:last][index]
1183
+ if cached
1184
+ node_cache[:last][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1185
+ @index = cached.interval.end
1186
+ end
1187
+ return cached
1188
+ end
1189
+
1190
+ if (match_len = has_terminal?('last', :insens, index))
1191
+ r0 = instantiate_node(LastNext,input, index...(index + match_len))
1192
+ @index += match_len
1193
+ else
1194
+ terminal_parse_failure('\'last\'')
1195
+ r0 = nil
1196
+ end
1197
+
1198
+ node_cache[:last][start_index] = r0
1199
+
1200
+ r0
1201
+ end
1202
+
1203
+ def _nt_next
1204
+ start_index = index
1205
+ if node_cache[:next].has_key?(index)
1206
+ cached = node_cache[:next][index]
1207
+ if cached
1208
+ node_cache[:next][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1209
+ @index = cached.interval.end
1210
+ end
1211
+ return cached
1212
+ end
1213
+
1214
+ if (match_len = has_terminal?('next', :insens, index))
1215
+ r0 = instantiate_node(LastNext,input, index...(index + match_len))
1216
+ @index += match_len
1217
+ else
1218
+ terminal_parse_failure('\'next\'')
1219
+ r0 = nil
1220
+ end
1221
+
1222
+ node_cache[:next][start_index] = r0
1223
+
1224
+ r0
1225
+ end
1226
+
1227
+ def _nt_beginning_end
1228
+ start_index = index
1229
+ if node_cache[:beginning_end].has_key?(index)
1230
+ cached = node_cache[:beginning_end][index]
1231
+ if cached
1232
+ node_cache[:beginning_end][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1233
+ @index = cached.interval.end
1234
+ end
1235
+ return cached
1236
+ end
1237
+
1238
+ i0 = index
1239
+ r1 = _nt_beginning_of
1240
+ if r1
1241
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1242
+ r0 = r1
1243
+ else
1244
+ r2 = _nt_end_of
1245
+ if r2
1246
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1247
+ r0 = r2
1248
+ else
1249
+ @index = i0
1250
+ r0 = nil
1251
+ end
1252
+ end
1253
+
1254
+ node_cache[:beginning_end][start_index] = r0
1255
+
1256
+ r0
1257
+ end
1258
+
1259
+ module BeginningOf0
1260
+ def direction
1261
+ elements[0]
1262
+ end
1263
+
1264
+ end
1265
+
1266
+ def _nt_beginning_of
1267
+ start_index = index
1268
+ if node_cache[:beginning_of].has_key?(index)
1269
+ cached = node_cache[:beginning_of][index]
1270
+ if cached
1271
+ node_cache[:beginning_of][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1272
+ @index = cached.interval.end
1273
+ end
1274
+ return cached
1275
+ end
1276
+
1277
+ i0, s0 = index, []
1278
+ if (match_len = has_terminal?('beginning', :insens, index))
1279
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1280
+ @index += match_len
1281
+ else
1282
+ terminal_parse_failure('\'beginning\'')
1283
+ r1 = nil
1284
+ end
1285
+ s0 << r1
1286
+ if r1
1287
+ s2, i2 = [], index
1288
+ loop do
1289
+ r3 = _nt_space
1290
+ if r3
1291
+ s2 << r3
1292
+ else
1293
+ break
1294
+ end
1295
+ end
1296
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1297
+ s0 << r2
1298
+ if r2
1299
+ if (match_len = has_terminal?('of', :insens, index))
1300
+ r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1301
+ @index += match_len
1302
+ else
1303
+ terminal_parse_failure('\'of\'')
1304
+ r4 = nil
1305
+ end
1306
+ s0 << r4
1307
+ end
1308
+ end
1309
+ if s0.last
1310
+ r0 = instantiate_node(BeginningEnd,input, i0...index, s0)
1311
+ r0.extend(BeginningOf0)
1312
+ else
1313
+ @index = i0
1314
+ r0 = nil
1315
+ end
1316
+
1317
+ node_cache[:beginning_of][start_index] = r0
1318
+
1319
+ r0
1320
+ end
1321
+
1322
+ module EndOf0
1323
+ def direction
1324
+ elements[0]
1325
+ end
1326
+
1327
+ end
1328
+
1329
+ def _nt_end_of
1330
+ start_index = index
1331
+ if node_cache[:end_of].has_key?(index)
1332
+ cached = node_cache[:end_of][index]
1333
+ if cached
1334
+ node_cache[:end_of][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1335
+ @index = cached.interval.end
1336
+ end
1337
+ return cached
1338
+ end
1339
+
1340
+ i0, s0 = index, []
1341
+ if (match_len = has_terminal?('end', :insens, index))
1342
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1343
+ @index += match_len
1344
+ else
1345
+ terminal_parse_failure('\'end\'')
1346
+ r1 = nil
1347
+ end
1348
+ s0 << r1
1349
+ if r1
1350
+ s2, i2 = [], index
1351
+ loop do
1352
+ r3 = _nt_space
1353
+ if r3
1354
+ s2 << r3
1355
+ else
1356
+ break
1357
+ end
1358
+ end
1359
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1360
+ s0 << r2
1361
+ if r2
1362
+ if (match_len = has_terminal?('of', :insens, index))
1363
+ r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1364
+ @index += match_len
1365
+ else
1366
+ terminal_parse_failure('\'of\'')
1367
+ r4 = nil
1368
+ end
1369
+ s0 << r4
1370
+ end
1371
+ end
1372
+ if s0.last
1373
+ r0 = instantiate_node(BeginningEnd,input, i0...index, s0)
1374
+ r0.extend(EndOf0)
1375
+ else
1376
+ @index = i0
1377
+ r0 = nil
1378
+ end
1379
+
1380
+ node_cache[:end_of][start_index] = r0
1381
+
1382
+ r0
1383
+ end
1384
+
1385
+ def _nt_before_from
1386
+ start_index = index
1387
+ if node_cache[:before_from].has_key?(index)
1388
+ cached = node_cache[:before_from][index]
1389
+ if cached
1390
+ node_cache[:before_from][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1391
+ @index = cached.interval.end
1392
+ end
1393
+ return cached
1394
+ end
1395
+
1396
+ i0 = index
1397
+ r1 = _nt_before
1398
+ if r1
1399
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1400
+ r0 = r1
1401
+ else
1402
+ r2 = _nt_from
1403
+ if r2
1404
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1405
+ r0 = r2
1406
+ else
1407
+ @index = i0
1408
+ r0 = nil
1409
+ end
1410
+ end
1411
+
1412
+ node_cache[:before_from][start_index] = r0
1413
+
1414
+ r0
1415
+ end
1416
+
1417
+ def _nt_before
1418
+ start_index = index
1419
+ if node_cache[:before].has_key?(index)
1420
+ cached = node_cache[:before][index]
1421
+ if cached
1422
+ node_cache[:before][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1423
+ @index = cached.interval.end
1424
+ end
1425
+ return cached
1426
+ end
1427
+
1428
+ if (match_len = has_terminal?('before', :insens, index))
1429
+ r0 = instantiate_node(BeforeFrom,input, index...(index + match_len))
1430
+ @index += match_len
1431
+ else
1432
+ terminal_parse_failure('\'before\'')
1433
+ r0 = nil
1434
+ end
1435
+
1436
+ node_cache[:before][start_index] = r0
1437
+
1438
+ r0
1439
+ end
1440
+
1441
+ def _nt_from
1442
+ start_index = index
1443
+ if node_cache[:from].has_key?(index)
1444
+ cached = node_cache[:from][index]
1445
+ if cached
1446
+ node_cache[:from][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1447
+ @index = cached.interval.end
1448
+ end
1449
+ return cached
1450
+ end
1451
+
1452
+ if (match_len = has_terminal?('from', :insens, index))
1453
+ r0 = instantiate_node(BeforeFrom,input, index...(index + match_len))
1454
+ @index += match_len
1455
+ else
1456
+ terminal_parse_failure('\'from\'')
1457
+ r0 = nil
1458
+ end
1459
+
1460
+ node_cache[:from][start_index] = r0
1461
+
1462
+ r0
1463
+ end
1464
+
1465
+ def _nt_interval
1466
+ start_index = index
1467
+ if node_cache[:interval].has_key?(index)
1468
+ cached = node_cache[:interval][index]
1469
+ if cached
1470
+ node_cache[:interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1471
+ @index = cached.interval.end
1472
+ end
1473
+ return cached
1474
+ end
1475
+
1476
+ i0 = index
1477
+ r1 = _nt_second_interval
1478
+ if r1
1479
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1480
+ r0 = r1
1481
+ else
1482
+ r2 = _nt_minute_interval
1483
+ if r2
1484
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1485
+ r0 = r2
1486
+ else
1487
+ r3 = _nt_hour_interval
1488
+ if r3
1489
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
1490
+ r0 = r3
1491
+ else
1492
+ r4 = _nt_day_interval
1493
+ if r4
1494
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
1495
+ r0 = r4
1496
+ else
1497
+ r5 = _nt_week_interval
1498
+ if r5
1499
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1500
+ r0 = r5
1501
+ else
1502
+ r6 = _nt_month_interval
1503
+ if r6
1504
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1505
+ r0 = r6
1506
+ else
1507
+ r7 = _nt_year_interval
1508
+ if r7
1509
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
1510
+ r0 = r7
1511
+ else
1512
+ @index = i0
1513
+ r0 = nil
1514
+ end
1515
+ end
1516
+ end
1517
+ end
1518
+ end
1519
+ end
1520
+ end
1521
+
1522
+ node_cache[:interval][start_index] = r0
1523
+
1524
+ r0
1525
+ end
1526
+
1527
+ module SecondInterval0
1528
+ end
1529
+
1530
+ def _nt_second_interval
1531
+ start_index = index
1532
+ if node_cache[:second_interval].has_key?(index)
1533
+ cached = node_cache[:second_interval][index]
1534
+ if cached
1535
+ node_cache[:second_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1536
+ @index = cached.interval.end
1537
+ end
1538
+ return cached
1539
+ end
1540
+
1541
+ i0, s0 = index, []
1542
+ if (match_len = has_terminal?('second', :insens, index))
1543
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1544
+ @index += match_len
1545
+ else
1546
+ terminal_parse_failure('\'second\'')
1547
+ r1 = nil
1548
+ end
1549
+ s0 << r1
1550
+ if r1
1551
+ if (match_len = has_terminal?('s', :insens, index))
1552
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1553
+ @index += match_len
1554
+ else
1555
+ terminal_parse_failure('\'s\'')
1556
+ r3 = nil
1557
+ end
1558
+ if r3
1559
+ r2 = r3
1560
+ else
1561
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1562
+ end
1563
+ s0 << r2
1564
+ end
1565
+ if s0.last
1566
+ r0 = instantiate_node(SecondInterval,input, i0...index, s0)
1567
+ r0.extend(SecondInterval0)
1568
+ else
1569
+ @index = i0
1570
+ r0 = nil
1571
+ end
1572
+
1573
+ node_cache[:second_interval][start_index] = r0
1574
+
1575
+ r0
1576
+ end
1577
+
1578
+ module MinuteInterval0
1579
+ end
1580
+
1581
+ def _nt_minute_interval
1582
+ start_index = index
1583
+ if node_cache[:minute_interval].has_key?(index)
1584
+ cached = node_cache[:minute_interval][index]
1585
+ if cached
1586
+ node_cache[:minute_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1587
+ @index = cached.interval.end
1588
+ end
1589
+ return cached
1590
+ end
1591
+
1592
+ i0, s0 = index, []
1593
+ if (match_len = has_terminal?('minute', :insens, index))
1594
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1595
+ @index += match_len
1596
+ else
1597
+ terminal_parse_failure('\'minute\'')
1598
+ r1 = nil
1599
+ end
1600
+ s0 << r1
1601
+ if r1
1602
+ if (match_len = has_terminal?('s', :insens, index))
1603
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1604
+ @index += match_len
1605
+ else
1606
+ terminal_parse_failure('\'s\'')
1607
+ r3 = nil
1608
+ end
1609
+ if r3
1610
+ r2 = r3
1611
+ else
1612
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1613
+ end
1614
+ s0 << r2
1615
+ end
1616
+ if s0.last
1617
+ r0 = instantiate_node(MinuteInterval,input, i0...index, s0)
1618
+ r0.extend(MinuteInterval0)
1619
+ else
1620
+ @index = i0
1621
+ r0 = nil
1622
+ end
1623
+
1624
+ node_cache[:minute_interval][start_index] = r0
1625
+
1626
+ r0
1627
+ end
1628
+
1629
+ module HourInterval0
1630
+ end
1631
+
1632
+ def _nt_hour_interval
1633
+ start_index = index
1634
+ if node_cache[:hour_interval].has_key?(index)
1635
+ cached = node_cache[:hour_interval][index]
1636
+ if cached
1637
+ node_cache[:hour_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1638
+ @index = cached.interval.end
1639
+ end
1640
+ return cached
1641
+ end
1642
+
1643
+ i0, s0 = index, []
1644
+ if (match_len = has_terminal?('hour', :insens, index))
1645
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1646
+ @index += match_len
1647
+ else
1648
+ terminal_parse_failure('\'hour\'')
1649
+ r1 = nil
1650
+ end
1651
+ s0 << r1
1652
+ if r1
1653
+ if (match_len = has_terminal?('s', :insens, index))
1654
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1655
+ @index += match_len
1656
+ else
1657
+ terminal_parse_failure('\'s\'')
1658
+ r3 = nil
1659
+ end
1660
+ if r3
1661
+ r2 = r3
1662
+ else
1663
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1664
+ end
1665
+ s0 << r2
1666
+ end
1667
+ if s0.last
1668
+ r0 = instantiate_node(HourInterval,input, i0...index, s0)
1669
+ r0.extend(HourInterval0)
1670
+ else
1671
+ @index = i0
1672
+ r0 = nil
1673
+ end
1674
+
1675
+ node_cache[:hour_interval][start_index] = r0
1676
+
1677
+ r0
1678
+ end
1679
+
1680
+ module DayInterval0
1681
+ end
1682
+
1683
+ def _nt_day_interval
1684
+ start_index = index
1685
+ if node_cache[:day_interval].has_key?(index)
1686
+ cached = node_cache[:day_interval][index]
1687
+ if cached
1688
+ node_cache[:day_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1689
+ @index = cached.interval.end
1690
+ end
1691
+ return cached
1692
+ end
1693
+
1694
+ i0, s0 = index, []
1695
+ if (match_len = has_terminal?('day', :insens, index))
1696
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1697
+ @index += match_len
1698
+ else
1699
+ terminal_parse_failure('\'day\'')
1700
+ r1 = nil
1701
+ end
1702
+ s0 << r1
1703
+ if r1
1704
+ if (match_len = has_terminal?('s', :insens, index))
1705
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1706
+ @index += match_len
1707
+ else
1708
+ terminal_parse_failure('\'s\'')
1709
+ r3 = nil
1710
+ end
1711
+ if r3
1712
+ r2 = r3
1713
+ else
1714
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1715
+ end
1716
+ s0 << r2
1717
+ end
1718
+ if s0.last
1719
+ r0 = instantiate_node(DayInterval,input, i0...index, s0)
1720
+ r0.extend(DayInterval0)
1721
+ else
1722
+ @index = i0
1723
+ r0 = nil
1724
+ end
1725
+
1726
+ node_cache[:day_interval][start_index] = r0
1727
+
1728
+ r0
1729
+ end
1730
+
1731
+ module WeekInterval0
1732
+ end
1733
+
1734
+ def _nt_week_interval
1735
+ start_index = index
1736
+ if node_cache[:week_interval].has_key?(index)
1737
+ cached = node_cache[:week_interval][index]
1738
+ if cached
1739
+ node_cache[:week_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1740
+ @index = cached.interval.end
1741
+ end
1742
+ return cached
1743
+ end
1744
+
1745
+ i0, s0 = index, []
1746
+ if (match_len = has_terminal?('week', :insens, index))
1747
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1748
+ @index += match_len
1749
+ else
1750
+ terminal_parse_failure('\'week\'')
1751
+ r1 = nil
1752
+ end
1753
+ s0 << r1
1754
+ if r1
1755
+ if (match_len = has_terminal?('s', :insens, index))
1756
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1757
+ @index += match_len
1758
+ else
1759
+ terminal_parse_failure('\'s\'')
1760
+ r3 = nil
1761
+ end
1762
+ if r3
1763
+ r2 = r3
1764
+ else
1765
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1766
+ end
1767
+ s0 << r2
1768
+ end
1769
+ if s0.last
1770
+ r0 = instantiate_node(WeekInterval,input, i0...index, s0)
1771
+ r0.extend(WeekInterval0)
1772
+ else
1773
+ @index = i0
1774
+ r0 = nil
1775
+ end
1776
+
1777
+ node_cache[:week_interval][start_index] = r0
1778
+
1779
+ r0
1780
+ end
1781
+
1782
+ module MonthInterval0
1783
+ end
1784
+
1785
+ def _nt_month_interval
1786
+ start_index = index
1787
+ if node_cache[:month_interval].has_key?(index)
1788
+ cached = node_cache[:month_interval][index]
1789
+ if cached
1790
+ node_cache[:month_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1791
+ @index = cached.interval.end
1792
+ end
1793
+ return cached
1794
+ end
1795
+
1796
+ i0, s0 = index, []
1797
+ if (match_len = has_terminal?('month', :insens, index))
1798
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1799
+ @index += match_len
1800
+ else
1801
+ terminal_parse_failure('\'month\'')
1802
+ r1 = nil
1803
+ end
1804
+ s0 << r1
1805
+ if r1
1806
+ if (match_len = has_terminal?('s', :insens, index))
1807
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1808
+ @index += match_len
1809
+ else
1810
+ terminal_parse_failure('\'s\'')
1811
+ r3 = nil
1812
+ end
1813
+ if r3
1814
+ r2 = r3
1815
+ else
1816
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1817
+ end
1818
+ s0 << r2
1819
+ end
1820
+ if s0.last
1821
+ r0 = instantiate_node(MonthInterval,input, i0...index, s0)
1822
+ r0.extend(MonthInterval0)
1823
+ else
1824
+ @index = i0
1825
+ r0 = nil
1826
+ end
1827
+
1828
+ node_cache[:month_interval][start_index] = r0
1829
+
1830
+ r0
1831
+ end
1832
+
1833
+ module YearInterval0
1834
+ end
1835
+
1836
+ def _nt_year_interval
1837
+ start_index = index
1838
+ if node_cache[:year_interval].has_key?(index)
1839
+ cached = node_cache[:year_interval][index]
1840
+ if cached
1841
+ node_cache[:year_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1842
+ @index = cached.interval.end
1843
+ end
1844
+ return cached
1845
+ end
1846
+
1847
+ i0, s0 = index, []
1848
+ if (match_len = has_terminal?('year', :insens, index))
1849
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1850
+ @index += match_len
1851
+ else
1852
+ terminal_parse_failure('\'year\'')
1853
+ r1 = nil
1854
+ end
1855
+ s0 << r1
1856
+ if r1
1857
+ if (match_len = has_terminal?('s', :insens, index))
1858
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1859
+ @index += match_len
1860
+ else
1861
+ terminal_parse_failure('\'s\'')
1862
+ r3 = nil
1863
+ end
1864
+ if r3
1865
+ r2 = r3
1866
+ else
1867
+ r2 = instantiate_node(SyntaxNode,input, index...index)
1868
+ end
1869
+ s0 << r2
1870
+ end
1871
+ if s0.last
1872
+ r0 = instantiate_node(YearInterval,input, i0...index, s0)
1873
+ r0.extend(YearInterval0)
1874
+ else
1875
+ @index = i0
1876
+ r0 = nil
1877
+ end
1878
+
1879
+ node_cache[:year_interval][start_index] = r0
1880
+
1881
+ r0
1882
+ end
1883
+
1884
+ def _nt_day_name
1885
+ start_index = index
1886
+ if node_cache[:day_name].has_key?(index)
1887
+ cached = node_cache[:day_name][index]
1888
+ if cached
1889
+ node_cache[:day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1890
+ @index = cached.interval.end
1891
+ end
1892
+ return cached
1893
+ end
1894
+
1895
+ i0 = index
1896
+ r1 = _nt_long_day_name
1897
+ if r1
1898
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1899
+ r0 = r1
1900
+ else
1901
+ r2 = _nt_short_day_name
1902
+ if r2
1903
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1904
+ r0 = r2
1905
+ else
1906
+ @index = i0
1907
+ r0 = nil
1908
+ end
1909
+ end
1910
+
1911
+ node_cache[:day_name][start_index] = r0
1912
+
1913
+ r0
1914
+ end
1915
+
1916
+ def _nt_long_day_name
1917
+ start_index = index
1918
+ if node_cache[:long_day_name].has_key?(index)
1919
+ cached = node_cache[:long_day_name][index]
1920
+ if cached
1921
+ node_cache[:long_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1922
+ @index = cached.interval.end
1923
+ end
1924
+ return cached
1925
+ end
1926
+
1927
+ i0 = index
1928
+ if (match_len = has_terminal?('sunday', :insens, index))
1929
+ r1 = instantiate_node(DayName,input, index...(index + match_len))
1930
+ @index += match_len
1931
+ else
1932
+ terminal_parse_failure('\'sunday\'')
1933
+ r1 = nil
1934
+ end
1935
+ if r1
1936
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1937
+ r0 = r1
1938
+ else
1939
+ if (match_len = has_terminal?('monday', :insens, index))
1940
+ r2 = instantiate_node(DayName,input, index...(index + match_len))
1941
+ @index += match_len
1942
+ else
1943
+ terminal_parse_failure('\'monday\'')
1944
+ r2 = nil
1945
+ end
1946
+ if r2
1947
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1948
+ r0 = r2
1949
+ else
1950
+ if (match_len = has_terminal?('tuesday', :insens, index))
1951
+ r3 = instantiate_node(DayName,input, index...(index + match_len))
1952
+ @index += match_len
1953
+ else
1954
+ terminal_parse_failure('\'tuesday\'')
1955
+ r3 = nil
1956
+ end
1957
+ if r3
1958
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
1959
+ r0 = r3
1960
+ else
1961
+ if (match_len = has_terminal?('wednesday', :insens, index))
1962
+ r4 = instantiate_node(DayName,input, index...(index + match_len))
1963
+ @index += match_len
1964
+ else
1965
+ terminal_parse_failure('\'wednesday\'')
1966
+ r4 = nil
1967
+ end
1968
+ if r4
1969
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
1970
+ r0 = r4
1971
+ else
1972
+ if (match_len = has_terminal?('thursday', :insens, index))
1973
+ r5 = instantiate_node(DayName,input, index...(index + match_len))
1974
+ @index += match_len
1975
+ else
1976
+ terminal_parse_failure('\'thursday\'')
1977
+ r5 = nil
1978
+ end
1979
+ if r5
1980
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1981
+ r0 = r5
1982
+ else
1983
+ if (match_len = has_terminal?('friday', :insens, index))
1984
+ r6 = instantiate_node(DayName,input, index...(index + match_len))
1985
+ @index += match_len
1986
+ else
1987
+ terminal_parse_failure('\'friday\'')
1988
+ r6 = nil
1989
+ end
1990
+ if r6
1991
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1992
+ r0 = r6
1993
+ else
1994
+ if (match_len = has_terminal?('saturday', :insens, index))
1995
+ r7 = instantiate_node(DayName,input, index...(index + match_len))
1996
+ @index += match_len
1997
+ else
1998
+ terminal_parse_failure('\'saturday\'')
1999
+ r7 = nil
2000
+ end
2001
+ if r7
2002
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
2003
+ r0 = r7
2004
+ else
2005
+ @index = i0
2006
+ r0 = nil
2007
+ end
2008
+ end
2009
+ end
2010
+ end
2011
+ end
2012
+ end
2013
+ end
2014
+
2015
+ node_cache[:long_day_name][start_index] = r0
2016
+
2017
+ r0
2018
+ end
2019
+
2020
+ def _nt_short_day_name
2021
+ start_index = index
2022
+ if node_cache[:short_day_name].has_key?(index)
2023
+ cached = node_cache[:short_day_name][index]
2024
+ if cached
2025
+ node_cache[:short_day_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2026
+ @index = cached.interval.end
2027
+ end
2028
+ return cached
2029
+ end
2030
+
2031
+ i0 = index
2032
+ if (match_len = has_terminal?('sun', :insens, index))
2033
+ r1 = instantiate_node(DayName,input, index...(index + match_len))
2034
+ @index += match_len
2035
+ else
2036
+ terminal_parse_failure('\'sun\'')
2037
+ r1 = nil
2038
+ end
2039
+ if r1
2040
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2041
+ r0 = r1
2042
+ else
2043
+ if (match_len = has_terminal?('mon', :insens, index))
2044
+ r2 = instantiate_node(DayName,input, index...(index + match_len))
2045
+ @index += match_len
2046
+ else
2047
+ terminal_parse_failure('\'mon\'')
2048
+ r2 = nil
2049
+ end
2050
+ if r2
2051
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
2052
+ r0 = r2
2053
+ else
2054
+ if (match_len = has_terminal?('tue', :insens, index))
2055
+ r3 = instantiate_node(DayName,input, index...(index + match_len))
2056
+ @index += match_len
2057
+ else
2058
+ terminal_parse_failure('\'tue\'')
2059
+ r3 = nil
2060
+ end
2061
+ if r3
2062
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
2063
+ r0 = r3
2064
+ else
2065
+ if (match_len = has_terminal?('wed', :insens, index))
2066
+ r4 = instantiate_node(DayName,input, index...(index + match_len))
2067
+ @index += match_len
2068
+ else
2069
+ terminal_parse_failure('\'wed\'')
2070
+ r4 = nil
2071
+ end
2072
+ if r4
2073
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
2074
+ r0 = r4
2075
+ else
2076
+ if (match_len = has_terminal?('thu', :insens, index))
2077
+ r5 = instantiate_node(DayName,input, index...(index + match_len))
2078
+ @index += match_len
2079
+ else
2080
+ terminal_parse_failure('\'thu\'')
2081
+ r5 = nil
2082
+ end
2083
+ if r5
2084
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
2085
+ r0 = r5
2086
+ else
2087
+ if (match_len = has_terminal?('fri', :insens, index))
2088
+ r6 = instantiate_node(DayName,input, index...(index + match_len))
2089
+ @index += match_len
2090
+ else
2091
+ terminal_parse_failure('\'fri\'')
2092
+ r6 = nil
2093
+ end
2094
+ if r6
2095
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
2096
+ r0 = r6
2097
+ else
2098
+ if (match_len = has_terminal?('sat', :insens, index))
2099
+ r7 = instantiate_node(DayName,input, index...(index + match_len))
2100
+ @index += match_len
2101
+ else
2102
+ terminal_parse_failure('\'sat\'')
2103
+ r7 = nil
2104
+ end
2105
+ if r7
2106
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
2107
+ r0 = r7
2108
+ else
2109
+ @index = i0
2110
+ r0 = nil
2111
+ end
2112
+ end
2113
+ end
2114
+ end
2115
+ end
2116
+ end
2117
+ end
2118
+
2119
+ node_cache[:short_day_name][start_index] = r0
2120
+
2121
+ r0
2122
+ end
2123
+
2124
+ def _nt_month_name
2125
+ start_index = index
2126
+ if node_cache[:month_name].has_key?(index)
2127
+ cached = node_cache[:month_name][index]
2128
+ if cached
2129
+ node_cache[:month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2130
+ @index = cached.interval.end
2131
+ end
2132
+ return cached
2133
+ end
2134
+
2135
+ i0 = index
2136
+ r1 = _nt_long_month_name
2137
+ if r1
2138
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2139
+ r0 = r1
2140
+ else
2141
+ r2 = _nt_short_month_name
2142
+ if r2
2143
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
2144
+ r0 = r2
2145
+ else
2146
+ @index = i0
2147
+ r0 = nil
2148
+ end
2149
+ end
2150
+
2151
+ node_cache[:month_name][start_index] = r0
2152
+
2153
+ r0
2154
+ end
2155
+
2156
+ def _nt_long_month_name
2157
+ start_index = index
2158
+ if node_cache[:long_month_name].has_key?(index)
2159
+ cached = node_cache[:long_month_name][index]
2160
+ if cached
2161
+ node_cache[:long_month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2162
+ @index = cached.interval.end
2163
+ end
2164
+ return cached
2165
+ end
2166
+
2167
+ i0 = index
2168
+ if (match_len = has_terminal?('january', :insens, index))
2169
+ r1 = instantiate_node(MonthName,input, index...(index + match_len))
2170
+ @index += match_len
2171
+ else
2172
+ terminal_parse_failure('\'january\'')
2173
+ r1 = nil
2174
+ end
2175
+ if r1
2176
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2177
+ r0 = r1
2178
+ else
2179
+ if (match_len = has_terminal?('february', :insens, index))
2180
+ r2 = instantiate_node(MonthName,input, index...(index + match_len))
2181
+ @index += match_len
2182
+ else
2183
+ terminal_parse_failure('\'february\'')
2184
+ r2 = nil
2185
+ end
2186
+ if r2
2187
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
2188
+ r0 = r2
2189
+ else
2190
+ if (match_len = has_terminal?('march', :insens, index))
2191
+ r3 = instantiate_node(MonthName,input, index...(index + match_len))
2192
+ @index += match_len
2193
+ else
2194
+ terminal_parse_failure('\'march\'')
2195
+ r3 = nil
2196
+ end
2197
+ if r3
2198
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
2199
+ r0 = r3
2200
+ else
2201
+ if (match_len = has_terminal?('april', :insens, index))
2202
+ r4 = instantiate_node(MonthName,input, index...(index + match_len))
2203
+ @index += match_len
2204
+ else
2205
+ terminal_parse_failure('\'april\'')
2206
+ r4 = nil
2207
+ end
2208
+ if r4
2209
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
2210
+ r0 = r4
2211
+ else
2212
+ if (match_len = has_terminal?('may', :insens, index))
2213
+ r5 = instantiate_node(MonthName,input, index...(index + match_len))
2214
+ @index += match_len
2215
+ else
2216
+ terminal_parse_failure('\'may\'')
2217
+ r5 = nil
2218
+ end
2219
+ if r5
2220
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
2221
+ r0 = r5
2222
+ else
2223
+ if (match_len = has_terminal?('june', :insens, index))
2224
+ r6 = instantiate_node(MonthName,input, index...(index + match_len))
2225
+ @index += match_len
2226
+ else
2227
+ terminal_parse_failure('\'june\'')
2228
+ r6 = nil
2229
+ end
2230
+ if r6
2231
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
2232
+ r0 = r6
2233
+ else
2234
+ if (match_len = has_terminal?('july', :insens, index))
2235
+ r7 = instantiate_node(MonthName,input, index...(index + match_len))
2236
+ @index += match_len
2237
+ else
2238
+ terminal_parse_failure('\'july\'')
2239
+ r7 = nil
2240
+ end
2241
+ if r7
2242
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
2243
+ r0 = r7
2244
+ else
2245
+ if (match_len = has_terminal?('august', :insens, index))
2246
+ r8 = instantiate_node(MonthName,input, index...(index + match_len))
2247
+ @index += match_len
2248
+ else
2249
+ terminal_parse_failure('\'august\'')
2250
+ r8 = nil
2251
+ end
2252
+ if r8
2253
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
2254
+ r0 = r8
2255
+ else
2256
+ if (match_len = has_terminal?('september', :insens, index))
2257
+ r9 = instantiate_node(MonthName,input, index...(index + match_len))
2258
+ @index += match_len
2259
+ else
2260
+ terminal_parse_failure('\'september\'')
2261
+ r9 = nil
2262
+ end
2263
+ if r9
2264
+ r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
2265
+ r0 = r9
2266
+ else
2267
+ if (match_len = has_terminal?('october', :insens, index))
2268
+ r10 = instantiate_node(MonthName,input, index...(index + match_len))
2269
+ @index += match_len
2270
+ else
2271
+ terminal_parse_failure('\'october\'')
2272
+ r10 = nil
2273
+ end
2274
+ if r10
2275
+ r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
2276
+ r0 = r10
2277
+ else
2278
+ if (match_len = has_terminal?('november', :insens, index))
2279
+ r11 = instantiate_node(MonthName,input, index...(index + match_len))
2280
+ @index += match_len
2281
+ else
2282
+ terminal_parse_failure('\'november\'')
2283
+ r11 = nil
2284
+ end
2285
+ if r11
2286
+ r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
2287
+ r0 = r11
2288
+ else
2289
+ if (match_len = has_terminal?('december', :insens, index))
2290
+ r12 = instantiate_node(MonthName,input, index...(index + match_len))
2291
+ @index += match_len
2292
+ else
2293
+ terminal_parse_failure('\'december\'')
2294
+ r12 = nil
2295
+ end
2296
+ if r12
2297
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
2298
+ r0 = r12
2299
+ else
2300
+ @index = i0
2301
+ r0 = nil
2302
+ end
2303
+ end
2304
+ end
2305
+ end
2306
+ end
2307
+ end
2308
+ end
2309
+ end
2310
+ end
2311
+ end
2312
+ end
2313
+ end
2314
+
2315
+ node_cache[:long_month_name][start_index] = r0
2316
+
2317
+ r0
2318
+ end
2319
+
2320
+ def _nt_short_month_name
2321
+ start_index = index
2322
+ if node_cache[:short_month_name].has_key?(index)
2323
+ cached = node_cache[:short_month_name][index]
2324
+ if cached
2325
+ node_cache[:short_month_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2326
+ @index = cached.interval.end
2327
+ end
2328
+ return cached
2329
+ end
2330
+
2331
+ i0 = index
2332
+ if (match_len = has_terminal?('jan', :insens, index))
2333
+ r1 = instantiate_node(MonthName,input, index...(index + match_len))
2334
+ @index += match_len
2335
+ else
2336
+ terminal_parse_failure('\'jan\'')
2337
+ r1 = nil
2338
+ end
2339
+ if r1
2340
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2341
+ r0 = r1
2342
+ else
2343
+ if (match_len = has_terminal?('feb', :insens, index))
2344
+ r2 = instantiate_node(MonthName,input, index...(index + match_len))
2345
+ @index += match_len
2346
+ else
2347
+ terminal_parse_failure('\'feb\'')
2348
+ r2 = nil
2349
+ end
2350
+ if r2
2351
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
2352
+ r0 = r2
2353
+ else
2354
+ if (match_len = has_terminal?('mar', :insens, index))
2355
+ r3 = instantiate_node(MonthName,input, index...(index + match_len))
2356
+ @index += match_len
2357
+ else
2358
+ terminal_parse_failure('\'mar\'')
2359
+ r3 = nil
2360
+ end
2361
+ if r3
2362
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
2363
+ r0 = r3
2364
+ else
2365
+ if (match_len = has_terminal?('apr', :insens, index))
2366
+ r4 = instantiate_node(MonthName,input, index...(index + match_len))
2367
+ @index += match_len
2368
+ else
2369
+ terminal_parse_failure('\'apr\'')
2370
+ r4 = nil
2371
+ end
2372
+ if r4
2373
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
2374
+ r0 = r4
2375
+ else
2376
+ if (match_len = has_terminal?('may', :insens, index))
2377
+ r5 = instantiate_node(MonthName,input, index...(index + match_len))
2378
+ @index += match_len
2379
+ else
2380
+ terminal_parse_failure('\'may\'')
2381
+ r5 = nil
2382
+ end
2383
+ if r5
2384
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
2385
+ r0 = r5
2386
+ else
2387
+ if (match_len = has_terminal?('jun', :insens, index))
2388
+ r6 = instantiate_node(MonthName,input, index...(index + match_len))
2389
+ @index += match_len
2390
+ else
2391
+ terminal_parse_failure('\'jun\'')
2392
+ r6 = nil
2393
+ end
2394
+ if r6
2395
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
2396
+ r0 = r6
2397
+ else
2398
+ if (match_len = has_terminal?('jul', :insens, index))
2399
+ r7 = instantiate_node(MonthName,input, index...(index + match_len))
2400
+ @index += match_len
2401
+ else
2402
+ terminal_parse_failure('\'jul\'')
2403
+ r7 = nil
2404
+ end
2405
+ if r7
2406
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
2407
+ r0 = r7
2408
+ else
2409
+ if (match_len = has_terminal?('aug', :insens, index))
2410
+ r8 = instantiate_node(MonthName,input, index...(index + match_len))
2411
+ @index += match_len
2412
+ else
2413
+ terminal_parse_failure('\'aug\'')
2414
+ r8 = nil
2415
+ end
2416
+ if r8
2417
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
2418
+ r0 = r8
2419
+ else
2420
+ if (match_len = has_terminal?('sep', :insens, index))
2421
+ r9 = instantiate_node(MonthName,input, index...(index + match_len))
2422
+ @index += match_len
2423
+ else
2424
+ terminal_parse_failure('\'sep\'')
2425
+ r9 = nil
2426
+ end
2427
+ if r9
2428
+ r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
2429
+ r0 = r9
2430
+ else
2431
+ if (match_len = has_terminal?('oct', :insens, index))
2432
+ r10 = instantiate_node(MonthName,input, index...(index + match_len))
2433
+ @index += match_len
2434
+ else
2435
+ terminal_parse_failure('\'oct\'')
2436
+ r10 = nil
2437
+ end
2438
+ if r10
2439
+ r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
2440
+ r0 = r10
2441
+ else
2442
+ if (match_len = has_terminal?('nov', :insens, index))
2443
+ r11 = instantiate_node(MonthName,input, index...(index + match_len))
2444
+ @index += match_len
2445
+ else
2446
+ terminal_parse_failure('\'nov\'')
2447
+ r11 = nil
2448
+ end
2449
+ if r11
2450
+ r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
2451
+ r0 = r11
2452
+ else
2453
+ if (match_len = has_terminal?('dec', :insens, index))
2454
+ r12 = instantiate_node(MonthName,input, index...(index + match_len))
2455
+ @index += match_len
2456
+ else
2457
+ terminal_parse_failure('\'dec\'')
2458
+ r12 = nil
2459
+ end
2460
+ if r12
2461
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
2462
+ r0 = r12
2463
+ else
2464
+ @index = i0
2465
+ r0 = nil
2466
+ end
2467
+ end
2468
+ end
2469
+ end
2470
+ end
2471
+ end
2472
+ end
2473
+ end
2474
+ end
2475
+ end
2476
+ end
2477
+ end
2478
+
2479
+ node_cache[:short_month_name][start_index] = r0
2480
+
2481
+ r0
2482
+ end
2483
+
2484
+ module ZoneOffset0
2485
+ end
2486
+
2487
+ def _nt_zone_offset
2488
+ start_index = index
2489
+ if node_cache[:zone_offset].has_key?(index)
2490
+ cached = node_cache[:zone_offset][index]
2491
+ if cached
2492
+ node_cache[:zone_offset][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2493
+ @index = cached.interval.end
2494
+ end
2495
+ return cached
2496
+ end
2497
+
2498
+ i0, s0 = index, []
2499
+ if has_terminal?(@regexps[gr = '\A[+-]'] ||= Regexp.new(gr), :regexp, index)
2500
+ r1 = true
2501
+ @index += 1
2502
+ else
2503
+ terminal_parse_failure('[+-]')
2504
+ r1 = nil
2505
+ end
2506
+ s0 << r1
2507
+ if r1
2508
+ s2, i2 = [], index
2509
+ loop do
2510
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
2511
+ r3 = true
2512
+ @index += 1
2513
+ else
2514
+ terminal_parse_failure('[\\d]')
2515
+ r3 = nil
2516
+ end
2517
+ if r3
2518
+ s2 << r3
2519
+ else
2520
+ break
2521
+ end
2522
+ if s2.size == 2
2523
+ break
2524
+ end
2525
+ end
2526
+ if s2.size < 2
2527
+ @index = i2
2528
+ r2 = nil
2529
+ else
2530
+ if s2.size < 2
2531
+ terminal_failures.pop
2532
+ end
2533
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2534
+ end
2535
+ s0 << r2
2536
+ if r2
2537
+ if (match_len = has_terminal?(':', false, index))
2538
+ r5 = true
2539
+ @index += match_len
2540
+ else
2541
+ terminal_parse_failure('\':\'')
2542
+ r5 = nil
2543
+ end
2544
+ if r5
2545
+ r4 = r5
2546
+ else
2547
+ r4 = instantiate_node(SyntaxNode,input, index...index)
2548
+ end
2549
+ s0 << r4
2550
+ if r4
2551
+ s6, i6 = [], index
2552
+ loop do
2553
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
2554
+ r7 = true
2555
+ @index += 1
2556
+ else
2557
+ terminal_parse_failure('[\\d]')
2558
+ r7 = nil
2559
+ end
2560
+ if r7
2561
+ s6 << r7
2562
+ else
2563
+ break
2564
+ end
2565
+ if s6.size == 2
2566
+ break
2567
+ end
2568
+ end
2569
+ if s6.size < 2
2570
+ @index = i6
2571
+ r6 = nil
2572
+ else
2573
+ if s6.size < 2
2574
+ terminal_failures.pop
2575
+ end
2576
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2577
+ end
2578
+ s0 << r6
2579
+ end
2580
+ end
2581
+ end
2582
+ if s0.last
2583
+ r0 = instantiate_node(ZoneOffset,input, i0...index, s0)
2584
+ r0.extend(ZoneOffset0)
2585
+ else
2586
+ @index = i0
2587
+ r0 = nil
2588
+ end
2589
+
2590
+ node_cache[:zone_offset][start_index] = r0
2591
+
2592
+ r0
2593
+ end
2594
+
2595
+ module HourMinuteSecond0
2596
+ end
2597
+
2598
+ module HourMinuteSecond1
2599
+ end
2600
+
2601
+ def _nt_hour_minute_second
2602
+ start_index = index
2603
+ if node_cache[:hour_minute_second].has_key?(index)
2604
+ cached = node_cache[:hour_minute_second][index]
2605
+ if cached
2606
+ node_cache[:hour_minute_second][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2607
+ @index = cached.interval.end
2608
+ end
2609
+ return cached
2610
+ end
2611
+
2612
+ i0 = index
2613
+ i1, s1 = index, []
2614
+ s2, i2 = [], index
2615
+ loop do
2616
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
2617
+ r3 = true
2618
+ @index += 1
2619
+ else
2620
+ terminal_parse_failure('[\\d]')
2621
+ r3 = nil
2622
+ end
2623
+ if r3
2624
+ s2 << r3
2625
+ else
2626
+ break
2627
+ end
2628
+ if s2.size == 2
2629
+ break
2630
+ end
2631
+ end
2632
+ if s2.size < 2
2633
+ @index = i2
2634
+ r2 = nil
2635
+ else
2636
+ if s2.size < 2
2637
+ terminal_failures.pop
2638
+ end
2639
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2640
+ end
2641
+ s1 << r2
2642
+ if r2
2643
+ if (match_len = has_terminal?(':', false, index))
2644
+ r4 = true
2645
+ @index += match_len
2646
+ else
2647
+ terminal_parse_failure('\':\'')
2648
+ r4 = nil
2649
+ end
2650
+ s1 << r4
2651
+ if r4
2652
+ s5, i5 = [], index
2653
+ loop do
2654
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
2655
+ r6 = true
2656
+ @index += 1
2657
+ else
2658
+ terminal_parse_failure('[\\d]')
2659
+ r6 = nil
2660
+ end
2661
+ if r6
2662
+ s5 << r6
2663
+ else
2664
+ break
2665
+ end
2666
+ if s5.size == 2
2667
+ break
2668
+ end
2669
+ end
2670
+ if s5.size < 2
2671
+ @index = i5
2672
+ r5 = nil
2673
+ else
2674
+ if s5.size < 2
2675
+ terminal_failures.pop
2676
+ end
2677
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2678
+ end
2679
+ s1 << r5
2680
+ if r5
2681
+ i8, s8 = index, []
2682
+ if (match_len = has_terminal?(':', false, index))
2683
+ r9 = true
2684
+ @index += match_len
2685
+ else
2686
+ terminal_parse_failure('\':\'')
2687
+ r9 = nil
2688
+ end
2689
+ s8 << r9
2690
+ if r9
2691
+ s10, i10 = [], index
2692
+ loop do
2693
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
2694
+ r11 = true
2695
+ @index += 1
2696
+ else
2697
+ terminal_parse_failure('[\\d]')
2698
+ r11 = nil
2699
+ end
2700
+ if r11
2701
+ s10 << r11
2702
+ else
2703
+ break
2704
+ end
2705
+ if s10.size == 2
2706
+ break
2707
+ end
2708
+ end
2709
+ if s10.size < 2
2710
+ @index = i10
2711
+ r10 = nil
2712
+ else
2713
+ if s10.size < 2
2714
+ terminal_failures.pop
2715
+ end
2716
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
2717
+ end
2718
+ s8 << r10
2719
+ end
2720
+ if s8.last
2721
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2722
+ r8.extend(HourMinuteSecond0)
2723
+ else
2724
+ @index = i8
2725
+ r8 = nil
2726
+ end
2727
+ if r8
2728
+ r7 = r8
2729
+ else
2730
+ r7 = instantiate_node(SyntaxNode,input, index...index)
2731
+ end
2732
+ s1 << r7
2733
+ end
2734
+ end
2735
+ end
2736
+ if s1.last
2737
+ r1 = instantiate_node(HourMinuteSecond,input, i1...index, s1)
2738
+ r1.extend(HourMinuteSecond1)
2739
+ else
2740
+ @index = i1
2741
+ r1 = nil
2742
+ end
2743
+ if r1
2744
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2745
+ r0 = r1
2746
+ else
2747
+ if (match_len = has_terminal?('beginning', false, index))
2748
+ r12 = instantiate_node(HourMinuteSecond,input, index...(index + match_len))
2749
+ @index += match_len
2750
+ else
2751
+ terminal_parse_failure('\'beginning\'')
2752
+ r12 = nil
2753
+ end
2754
+ if r12
2755
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
2756
+ r0 = r12
2757
+ else
2758
+ if (match_len = has_terminal?('end', false, index))
2759
+ r13 = instantiate_node(HourMinuteSecond,input, index...(index + match_len))
2760
+ @index += match_len
2761
+ else
2762
+ terminal_parse_failure('\'end\'')
2763
+ r13 = nil
2764
+ end
2765
+ if r13
2766
+ r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
2767
+ r0 = r13
2768
+ else
2769
+ @index = i0
2770
+ r0 = nil
2771
+ end
2772
+ end
2773
+ end
2774
+
2775
+ node_cache[:hour_minute_second][start_index] = r0
2776
+
2777
+ r0
2778
+ end
2779
+
2780
+ def _nt_integer
2781
+ start_index = index
2782
+ if node_cache[:integer].has_key?(index)
2783
+ cached = node_cache[:integer][index]
2784
+ if cached
2785
+ node_cache[:integer][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2786
+ @index = cached.interval.end
2787
+ end
2788
+ return cached
2789
+ end
2790
+
2791
+ s0, i0 = [], index
2792
+ loop do
2793
+ if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
2794
+ r1 = true
2795
+ @index += 1
2796
+ else
2797
+ terminal_parse_failure('[\\d]')
2798
+ r1 = nil
2799
+ end
2800
+ if r1
2801
+ s0 << r1
2802
+ else
2803
+ break
2804
+ end
2805
+ end
2806
+ if s0.empty?
2807
+ @index = i0
2808
+ r0 = nil
2809
+ else
2810
+ r0 = instantiate_node(Int,input, i0...index, s0)
2811
+ end
2812
+
2813
+ node_cache[:integer][start_index] = r0
2814
+
2815
+ r0
2816
+ end
2817
+
2818
+ def _nt_space
2819
+ start_index = index
2820
+ if node_cache[:space].has_key?(index)
2821
+ cached = node_cache[:space][index]
2822
+ if cached
2823
+ node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2824
+ @index = cached.interval.end
2825
+ end
2826
+ return cached
2827
+ end
2828
+
2829
+ if has_terminal?(@regexps[gr = '\A[\\s\\t\\n]'] ||= Regexp.new(gr), :regexp, index)
2830
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
2831
+ @index += 1
2832
+ else
2833
+ terminal_parse_failure('[\\s\\t\\n]')
2834
+ r0 = nil
2835
+ end
2836
+
2837
+ node_cache[:space][start_index] = r0
2838
+
2839
+ r0
2840
+ end
2841
+
2842
+ end
2843
+
2844
+ class NaturalTimeLanguageParser < Treetop::Runtime::CompiledParser
2845
+ include NaturalTimeLanguage
2846
+ end
2847
+
2848
+ end