edtf 4.0.0 → 4.1.0

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.
data/lib/edtf/parser.rb CHANGED
@@ -11,16 +11,42 @@ require 'strscan'
11
11
  module EDTF
12
12
  class Parser < Racc::Parser
13
13
 
14
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
14
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 489)
15
15
 
16
16
  @defaults = {
17
17
  :level => 2,
18
- :debug => false
18
+ :debug => false,
19
+ :warn => true
20
+ }.freeze
21
+
22
+ # Input that EDTF-Ruby 5.0 parses differently.
23
+ # Legacy syntax will be accepted only in legacy mode;
24
+ # lossy legacy syntax has no ISO 8601-2 equivalent.
25
+ LEGACY = {
26
+ combined_qualifier: '`?~` is legacy syntax, use `%`',
27
+ parentheses: 'parentheses are legacy syntax, ' \
28
+ 'EDTF-Ruby 5.0 qualifies parts from the left instead, e.g. `2004-?06-11`',
29
+ open: '`open` is legacy syntax, use `..`',
30
+ unknown: '`unknown` is legacy syntax, leave the interval end empty',
31
+ unspecified: '`u` is legacy syntax, use `X`',
32
+ masked: 'masked precision (`198x`) is legacy syntax, ' \
33
+ 'EDTF-Ruby 5.0 reads it as a decade (`198`) or century (`19`)',
34
+ lowercase_y: '`y` is legacy syntax, use `Y`',
35
+ lowercase_e: '`e` is legacy syntax, use `E`',
36
+ negative_zero: '`-0000` is legacy syntax, use `0000`',
37
+ caret: 'calendars and season qualifiers (`^…`) are legacy syntax, ' \
38
+ 'EDTF-Ruby 5.0 converts hemispheres to seasons, e.g. `2001-21^southern` ' \
39
+ 'to `2001-29`, and drops the rest'
40
+ }.freeze
41
+
42
+ CHANGED = {
43
+ unknown_date: 'EDTF-Ruby 5.0 parses this as a date ' \
44
+ 'with an unspecified year instead of EDTF::Unknown'
19
45
  }.freeze
20
46
 
21
47
  class << self; attr_reader :defaults; end
22
48
 
23
- attr_reader :options
49
+ attr_reader :options, :deprecations
24
50
 
25
51
  def initialize(options = {})
26
52
  @options = Parser.defaults.merge(options)
@@ -40,7 +66,16 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
40
66
  def parse!(input)
41
67
  @yydebug = debug?
42
68
  @src = StringScanner.new(input)
43
- do_parse
69
+ @deprecations = []
70
+ result = do_parse
71
+ @deprecations.uniq!
72
+ warn_deprecations(input) if options[:warn]
73
+ result
74
+ end
75
+
76
+ # Returns true if the last successful parse used legacy syntax.
77
+ def legacy?
78
+ deprecations.any? { |d| LEGACY.key?(d) }
44
79
  end
45
80
 
46
81
  def on_error(tid, value, stack)
@@ -48,6 +83,16 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
48
83
  "failed to parse date: unexpected '#{value}' at #{stack.inspect}"
49
84
  end
50
85
 
86
+ def deprecate(name)
87
+ @deprecations << name
88
+ end
89
+
90
+ def warn_deprecations(input)
91
+ return if deprecations.empty?
92
+ messages = deprecations.map { |d| LEGACY[d] || CHANGED[d] }
93
+ warn "EDTF #{input.inspect}: #{messages.join('; ')}", category: :deprecated
94
+ end
95
+
51
96
  def apply_uncertainty(date, uncertainty, scope = nil)
52
97
  uncertainty.each do |u|
53
98
  scope.nil? ? date.send(u) : date.send(u, scope)
@@ -64,6 +109,7 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
64
109
  # when @src.scan(/\s+/)
65
110
  # ignore whitespace
66
111
  when @src.scan(/\(/)
112
+ deprecate :parentheses
67
113
  ['(', @src.matched]
68
114
  # when @src.scan(/\)\?~-/)
69
115
  # [:PUA, [:uncertain!, :approximate!]]
@@ -86,6 +132,7 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
86
132
  when @src.scan(/Z/)
87
133
  [:Z, @src.matched]
88
134
  when @src.scan(/\?~/)
135
+ deprecate :combined_qualifier
89
136
  [:UA, [:uncertain!, :approximate!]]
90
137
  when @src.scan(/%/)
91
138
  [:UA, [:uncertain!, :approximate!]]
@@ -94,22 +141,29 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
94
141
  when @src.scan(/~/)
95
142
  [:UA, [:approximate!]]
96
143
  when @src.scan(/open/i)
144
+ deprecate :open
97
145
  [:OPEN, :open]
98
146
  when @src.scan(/unkn?own/i) # matches 'unkown' typo too
147
+ deprecate :unknown
99
148
  [:UNKNOWN, :unknown]
100
149
  when @src.scan(/u/)
150
+ deprecate :unspecified
101
151
  [:U, @src.matched]
102
152
  when @src.scan(/X/)
103
153
  [:U, @src.matched]
104
154
  when @src.scan(/x/)
155
+ deprecate :masked
105
156
  [:X, @src.matched]
106
157
  when @src.scan(/y/i)
158
+ deprecate :lowercase_y if @src.matched == 'y'
107
159
  [:LONGYEAR, @src.matched]
108
160
  when @src.scan(/e/i)
161
+ deprecate :lowercase_e if @src.matched == 'e'
109
162
  [:E, @src.matched]
110
163
  when @src.scan(/\+/)
111
164
  ['+', @src.matched]
112
165
  when @src.scan(/-\(/)
166
+ deprecate :parentheses
113
167
  ['-(', @src.matched]
114
168
  when @src.scan(/-/)
115
169
  ['-', @src.matched]
@@ -122,6 +176,7 @@ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 483)
122
176
  when @src.scan(/\s*,\s*/)
123
177
  [',', ',']
124
178
  when @src.scan(/\^\w+/)
179
+ deprecate :caret
125
180
  ['^', @src.matched[1..-1]]
126
181
  when @src.scan(/\d/)
127
182
  [@src.matched, @src.matched.to_i]
@@ -871,7 +926,7 @@ Racc_token_to_s_table = [
871
926
  "d01_30" ]
872
927
  Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)
873
928
 
874
- Racc_debug_parser = true
929
+ Racc_debug_parser = false
875
930
 
876
931
  ##### State transition tables end #####
877
932
 
@@ -995,14 +1050,16 @@ module_eval(<<'.,.,', 'parser.y', 54)
995
1050
 
996
1051
  # reduce 23 omitted
997
1052
 
998
- module_eval(<<'.,.,', 'parser.y', 58)
1053
+ module_eval(<<'.,.,', 'parser.y', 59)
999
1054
  def _reduce_24(val, _values, result)
1000
- result = -val[1]
1055
+ result = -val[1]
1056
+ deprecate :negative_zero if result.zero?
1057
+
1001
1058
  result
1002
1059
  end
1003
1060
  .,.,
1004
1061
 
1005
- module_eval(<<'.,.,', 'parser.y', 61)
1062
+ module_eval(<<'.,.,', 'parser.y', 64)
1006
1063
  def _reduce_25(val, _values, result)
1007
1064
  result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b }
1008
1065
 
@@ -1014,14 +1071,14 @@ module_eval(<<'.,.,', 'parser.y', 61)
1014
1071
 
1015
1072
  # reduce 27 omitted
1016
1073
 
1017
- module_eval(<<'.,.,', 'parser.y', 67)
1074
+ module_eval(<<'.,.,', 'parser.y', 70)
1018
1075
  def _reduce_28(val, _values, result)
1019
1076
  result = [val[0], val[2]]
1020
1077
  result
1021
1078
  end
1022
1079
  .,.,
1023
1080
 
1024
- module_eval(<<'.,.,', 'parser.y', 74)
1081
+ module_eval(<<'.,.,', 'parser.y', 77)
1025
1082
  def _reduce_29(val, _values, result)
1026
1083
  result = val[0] << val[2]
1027
1084
  if result[2] > 31 || (result[2] > 30 && [2,4,6,9,11].include?(result[1])) || (result[2] > 29 && result[1] == 2)
@@ -1048,14 +1105,16 @@ module_eval(<<'.,.,', 'parser.y', 74)
1048
1105
 
1049
1106
  # reduce 37 omitted
1050
1107
 
1051
- module_eval(<<'.,.,', 'parser.y', 93)
1108
+ module_eval(<<'.,.,', 'parser.y', 97)
1052
1109
  def _reduce_38(val, _values, result)
1053
- result = EDTF::Unknown.new
1110
+ result = EDTF::Unknown.new
1111
+ deprecate :unknown_date
1112
+
1054
1113
  result
1055
1114
  end
1056
1115
  .,.,
1057
1116
 
1058
- module_eval(<<'.,.,', 'parser.y', 99)
1117
+ module_eval(<<'.,.,', 'parser.y', 105)
1059
1118
  def _reduce_39(val, _values, result)
1060
1119
  result = Date.gregorian(val[0][0]).year_precision!
1061
1120
  result.unspecified.year[2,2] = val[0][1]
@@ -1072,7 +1131,7 @@ module_eval(<<'.,.,', 'parser.y', 99)
1072
1131
 
1073
1132
  # reduce 43 omitted
1074
1133
 
1075
- module_eval(<<'.,.,', 'parser.y', 110)
1134
+ module_eval(<<'.,.,', 'parser.y', 116)
1076
1135
  def _reduce_44(val, _values, result)
1077
1136
  result = val[1]
1078
1137
  result[0] = -result[0]
@@ -1081,7 +1140,7 @@ module_eval(<<'.,.,', 'parser.y', 110)
1081
1140
  end
1082
1141
  .,.,
1083
1142
 
1084
- module_eval(<<'.,.,', 'parser.y', 117)
1143
+ module_eval(<<'.,.,', 'parser.y', 123)
1085
1144
  def _reduce_45(val, _values, result)
1086
1145
  result = [val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b }, [false,true]]
1087
1146
 
@@ -1089,7 +1148,7 @@ module_eval(<<'.,.,', 'parser.y', 117)
1089
1148
  end
1090
1149
  .,.,
1091
1150
 
1092
- module_eval(<<'.,.,', 'parser.y', 121)
1151
+ module_eval(<<'.,.,', 'parser.y', 127)
1093
1152
  def _reduce_46(val, _values, result)
1094
1153
  result = [val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b }, [true, true]]
1095
1154
 
@@ -1097,7 +1156,7 @@ module_eval(<<'.,.,', 'parser.y', 121)
1097
1156
  end
1098
1157
  .,.,
1099
1158
 
1100
- module_eval(<<'.,.,', 'parser.y', 125)
1159
+ module_eval(<<'.,.,', 'parser.y', 131)
1101
1160
  def _reduce_47(val, _values, result)
1102
1161
  result = Date.gregorian(val[0]).unspecified!(:month)
1103
1162
  result.precision = :month
@@ -1106,7 +1165,7 @@ module_eval(<<'.,.,', 'parser.y', 125)
1106
1165
  end
1107
1166
  .,.,
1108
1167
 
1109
- module_eval(<<'.,.,', 'parser.y', 130)
1168
+ module_eval(<<'.,.,', 'parser.y', 136)
1110
1169
  def _reduce_48(val, _values, result)
1111
1170
  result = Date.gregorian(*val[0]).unspecified!(:day)
1112
1171
 
@@ -1114,7 +1173,7 @@ module_eval(<<'.,.,', 'parser.y', 130)
1114
1173
  end
1115
1174
  .,.,
1116
1175
 
1117
- module_eval(<<'.,.,', 'parser.y', 134)
1176
+ module_eval(<<'.,.,', 'parser.y', 140)
1118
1177
  def _reduce_49(val, _values, result)
1119
1178
  result = Date.gregorian(val[0]).unspecified!([:day,:month])
1120
1179
 
@@ -1128,7 +1187,7 @@ module_eval(<<'.,.,', 'parser.y', 134)
1128
1187
 
1129
1188
  # reduce 52 omitted
1130
1189
 
1131
- module_eval(<<'.,.,', 'parser.y', 140)
1190
+ module_eval(<<'.,.,', 'parser.y', 146)
1132
1191
  def _reduce_53(val, _values, result)
1133
1192
  result = Interval.new(val[0], val[2])
1134
1193
 
@@ -1140,7 +1199,7 @@ module_eval(<<'.,.,', 'parser.y', 140)
1140
1199
 
1141
1200
  # reduce 55 omitted
1142
1201
 
1143
- module_eval(<<'.,.,', 'parser.y', 146)
1202
+ module_eval(<<'.,.,', 'parser.y', 152)
1144
1203
  def _reduce_56(val, _values, result)
1145
1204
  result = Interval.new(:open, val[2])
1146
1205
 
@@ -1148,7 +1207,7 @@ module_eval(<<'.,.,', 'parser.y', 146)
1148
1207
  end
1149
1208
  .,.,
1150
1209
 
1151
- module_eval(<<'.,.,', 'parser.y', 150)
1210
+ module_eval(<<'.,.,', 'parser.y', 156)
1152
1211
  def _reduce_57(val, _values, result)
1153
1212
  result = Interval.new(val[0], :open)
1154
1213
 
@@ -1168,7 +1227,7 @@ module_eval(<<'.,.,', 'parser.y', 150)
1168
1227
 
1169
1228
  # reduce 63 omitted
1170
1229
 
1171
- module_eval(<<'.,.,', 'parser.y', 158)
1230
+ module_eval(<<'.,.,', 'parser.y', 164)
1172
1231
  def _reduce_64(val, _values, result)
1173
1232
  result = Interval.new(:unknown, val[1])
1174
1233
 
@@ -1176,7 +1235,7 @@ module_eval(<<'.,.,', 'parser.y', 158)
1176
1235
  end
1177
1236
  .,.,
1178
1237
 
1179
- module_eval(<<'.,.,', 'parser.y', 162)
1238
+ module_eval(<<'.,.,', 'parser.y', 168)
1180
1239
  def _reduce_65(val, _values, result)
1181
1240
  result = Interval.new(val[0], :unknown)
1182
1241
 
@@ -1184,7 +1243,7 @@ module_eval(<<'.,.,', 'parser.y', 162)
1184
1243
  end
1185
1244
  .,.,
1186
1245
 
1187
- module_eval(<<'.,.,', 'parser.y', 166)
1246
+ module_eval(<<'.,.,', 'parser.y', 172)
1188
1247
  def _reduce_66(val, _values, result)
1189
1248
  result = Interval.new(:unknown, val[2])
1190
1249
 
@@ -1192,7 +1251,7 @@ module_eval(<<'.,.,', 'parser.y', 166)
1192
1251
  end
1193
1252
  .,.,
1194
1253
 
1195
- module_eval(<<'.,.,', 'parser.y', 170)
1254
+ module_eval(<<'.,.,', 'parser.y', 176)
1196
1255
  def _reduce_67(val, _values, result)
1197
1256
  result = Interval.new(val[0], :unknown)
1198
1257
 
@@ -1210,7 +1269,7 @@ module_eval(<<'.,.,', 'parser.y', 170)
1210
1269
 
1211
1270
  # reduce 72 omitted
1212
1271
 
1213
- module_eval(<<'.,.,', 'parser.y', 181)
1272
+ module_eval(<<'.,.,', 'parser.y', 187)
1214
1273
  def _reduce_73(val, _values, result)
1215
1274
  result = Date.gregorian(val[1])
1216
1275
  result.precision = :year
@@ -1219,7 +1278,7 @@ module_eval(<<'.,.,', 'parser.y', 181)
1219
1278
  end
1220
1279
  .,.,
1221
1280
 
1222
- module_eval(<<'.,.,', 'parser.y', 186)
1281
+ module_eval(<<'.,.,', 'parser.y', 192)
1223
1282
  def _reduce_74(val, _values, result)
1224
1283
  result = Date.gregorian(-1 * val[2])
1225
1284
  result.precision = :year
@@ -1228,7 +1287,7 @@ module_eval(<<'.,.,', 'parser.y', 186)
1228
1287
  end
1229
1288
  .,.,
1230
1289
 
1231
- module_eval(<<'.,.,', 'parser.y', 193)
1290
+ module_eval(<<'.,.,', 'parser.y', 199)
1232
1291
  def _reduce_75(val, _values, result)
1233
1292
  result = val.zip([10000,1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b }
1234
1293
 
@@ -1236,14 +1295,14 @@ module_eval(<<'.,.,', 'parser.y', 193)
1236
1295
  end
1237
1296
  .,.,
1238
1297
 
1239
- module_eval(<<'.,.,', 'parser.y', 195)
1298
+ module_eval(<<'.,.,', 'parser.y', 201)
1240
1299
  def _reduce_76(val, _values, result)
1241
1300
  result = 10 * val[0] + val[1]
1242
1301
  result
1243
1302
  end
1244
1303
  .,.,
1245
1304
 
1246
- module_eval(<<'.,.,', 'parser.y', 200)
1305
+ module_eval(<<'.,.,', 'parser.y', 206)
1247
1306
  def _reduce_77(val, _values, result)
1248
1307
  result = Season.new(val[0], val[2])
1249
1308
  val[3].each { |ua| result.send(ua) }
@@ -1252,28 +1311,28 @@ module_eval(<<'.,.,', 'parser.y', 200)
1252
1311
  end
1253
1312
  .,.,
1254
1313
 
1255
- module_eval(<<'.,.,', 'parser.y', 204)
1314
+ module_eval(<<'.,.,', 'parser.y', 210)
1256
1315
  def _reduce_78(val, _values, result)
1257
1316
  result = 21
1258
1317
  result
1259
1318
  end
1260
1319
  .,.,
1261
1320
 
1262
- module_eval(<<'.,.,', 'parser.y', 205)
1321
+ module_eval(<<'.,.,', 'parser.y', 211)
1263
1322
  def _reduce_79(val, _values, result)
1264
1323
  result = 22
1265
1324
  result
1266
1325
  end
1267
1326
  .,.,
1268
1327
 
1269
- module_eval(<<'.,.,', 'parser.y', 206)
1328
+ module_eval(<<'.,.,', 'parser.y', 212)
1270
1329
  def _reduce_80(val, _values, result)
1271
1330
  result = 23
1272
1331
  result
1273
1332
  end
1274
1333
  .,.,
1275
1334
 
1276
- module_eval(<<'.,.,', 'parser.y', 207)
1335
+ module_eval(<<'.,.,', 'parser.y', 213)
1277
1336
  def _reduce_81(val, _values, result)
1278
1337
  result = 24
1279
1338
  result
@@ -1296,14 +1355,14 @@ module_eval(<<'.,.,', 'parser.y', 207)
1296
1355
 
1297
1356
  # reduce 89 omitted
1298
1357
 
1299
- module_eval(<<'.,.,', 'parser.y', 225)
1358
+ module_eval(<<'.,.,', 'parser.y', 231)
1300
1359
  def _reduce_90(val, _values, result)
1301
1360
  result = val[0]; result.qualifier = val[1]
1302
1361
  result
1303
1362
  end
1304
1363
  .,.,
1305
1364
 
1306
- module_eval(<<'.,.,', 'parser.y', 231)
1365
+ module_eval(<<'.,.,', 'parser.y', 237)
1307
1366
  def _reduce_91(val, _values, result)
1308
1367
  result = Date.gregorian(val[0].year * 10 ** val[2]).year_precision!
1309
1368
 
@@ -1311,7 +1370,7 @@ module_eval(<<'.,.,', 'parser.y', 231)
1311
1370
  end
1312
1371
  .,.,
1313
1372
 
1314
- module_eval(<<'.,.,', 'parser.y', 235)
1373
+ module_eval(<<'.,.,', 'parser.y', 241)
1315
1374
  def _reduce_92(val, _values, result)
1316
1375
  result = Date.gregorian(val[1] * 10 ** val[3]).year_precision!
1317
1376
 
@@ -1319,7 +1378,7 @@ module_eval(<<'.,.,', 'parser.y', 235)
1319
1378
  end
1320
1379
  .,.,
1321
1380
 
1322
- module_eval(<<'.,.,', 'parser.y', 239)
1381
+ module_eval(<<'.,.,', 'parser.y', 245)
1323
1382
  def _reduce_93(val, _values, result)
1324
1383
  result = Date.gregorian(-1 * val[2] * 10 ** val[4]).year_precision!
1325
1384
 
@@ -1327,14 +1386,14 @@ module_eval(<<'.,.,', 'parser.y', 239)
1327
1386
  end
1328
1387
  .,.,
1329
1388
 
1330
- module_eval(<<'.,.,', 'parser.y', 244)
1389
+ module_eval(<<'.,.,', 'parser.y', 250)
1331
1390
  def _reduce_94(val, _values, result)
1332
1391
  result = val[0]; result.calendar = val[1]
1333
1392
  result
1334
1393
  end
1335
1394
  .,.,
1336
1395
 
1337
- module_eval(<<'.,.,', 'parser.y', 250)
1396
+ module_eval(<<'.,.,', 'parser.y', 256)
1338
1397
  def _reduce_95(val, _values, result)
1339
1398
  d = val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b }
1340
1399
  result = EDTF::Decade.new(d)
@@ -1343,7 +1402,7 @@ module_eval(<<'.,.,', 'parser.y', 250)
1343
1402
  end
1344
1403
  .,.,
1345
1404
 
1346
- module_eval(<<'.,.,', 'parser.y', 255)
1405
+ module_eval(<<'.,.,', 'parser.y', 261)
1347
1406
  def _reduce_96(val, _values, result)
1348
1407
  d = val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b }
1349
1408
  result = EDTF::Century.new(d)
@@ -1352,77 +1411,77 @@ module_eval(<<'.,.,', 'parser.y', 255)
1352
1411
  end
1353
1412
  .,.,
1354
1413
 
1355
- module_eval(<<'.,.,', 'parser.y', 261)
1414
+ module_eval(<<'.,.,', 'parser.y', 267)
1356
1415
  def _reduce_97(val, _values, result)
1357
1416
  result = val[1].choice!
1358
1417
  result
1359
1418
  end
1360
1419
  .,.,
1361
1420
 
1362
- module_eval(<<'.,.,', 'parser.y', 263)
1421
+ module_eval(<<'.,.,', 'parser.y', 269)
1363
1422
  def _reduce_98(val, _values, result)
1364
1423
  result = val[1]
1365
1424
  result
1366
1425
  end
1367
1426
  .,.,
1368
1427
 
1369
- module_eval(<<'.,.,', 'parser.y', 265)
1428
+ module_eval(<<'.,.,', 'parser.y', 271)
1370
1429
  def _reduce_99(val, _values, result)
1371
1430
  result = EDTF::Set.new(val[0]).earlier!
1372
1431
  result
1373
1432
  end
1374
1433
  .,.,
1375
1434
 
1376
- module_eval(<<'.,.,', 'parser.y', 266)
1435
+ module_eval(<<'.,.,', 'parser.y', 272)
1377
1436
  def _reduce_100(val, _values, result)
1378
1437
  result = EDTF::Set.new([val[0]] + val[2] + [val[4]]).earlier!.later!
1379
1438
  result
1380
1439
  end
1381
1440
  .,.,
1382
1441
 
1383
- module_eval(<<'.,.,', 'parser.y', 267)
1442
+ module_eval(<<'.,.,', 'parser.y', 273)
1384
1443
  def _reduce_101(val, _values, result)
1385
1444
  result = EDTF::Set.new([val[0]] + val[2]).earlier!
1386
1445
  result
1387
1446
  end
1388
1447
  .,.,
1389
1448
 
1390
- module_eval(<<'.,.,', 'parser.y', 268)
1449
+ module_eval(<<'.,.,', 'parser.y', 274)
1391
1450
  def _reduce_102(val, _values, result)
1392
1451
  result = EDTF::Set.new([val[0]] + [val[2]]).earlier!.later!
1393
1452
  result
1394
1453
  end
1395
1454
  .,.,
1396
1455
 
1397
- module_eval(<<'.,.,', 'parser.y', 269)
1456
+ module_eval(<<'.,.,', 'parser.y', 275)
1398
1457
  def _reduce_103(val, _values, result)
1399
1458
  result = EDTF::Set.new(val[0] + [val[2]]).later!
1400
1459
  result
1401
1460
  end
1402
1461
  .,.,
1403
1462
 
1404
- module_eval(<<'.,.,', 'parser.y', 270)
1463
+ module_eval(<<'.,.,', 'parser.y', 276)
1405
1464
  def _reduce_104(val, _values, result)
1406
1465
  result = EDTF::Set.new(*val[0])
1407
1466
  result
1408
1467
  end
1409
1468
  .,.,
1410
1469
 
1411
- module_eval(<<'.,.,', 'parser.y', 271)
1470
+ module_eval(<<'.,.,', 'parser.y', 277)
1412
1471
  def _reduce_105(val, _values, result)
1413
1472
  result = EDTF::Set.new(val[0]).later!
1414
1473
  result
1415
1474
  end
1416
1475
  .,.,
1417
1476
 
1418
- module_eval(<<'.,.,', 'parser.y', 274)
1477
+ module_eval(<<'.,.,', 'parser.y', 280)
1419
1478
  def _reduce_106(val, _values, result)
1420
1479
  result = [val[0]].flatten
1421
1480
  result
1422
1481
  end
1423
1482
  .,.,
1424
1483
 
1425
- module_eval(<<'.,.,', 'parser.y', 275)
1484
+ module_eval(<<'.,.,', 'parser.y', 281)
1426
1485
  def _reduce_107(val, _values, result)
1427
1486
  result = val[0] + [val[2]].flatten
1428
1487
  result
@@ -1439,56 +1498,56 @@ module_eval(<<'.,.,', 'parser.y', 275)
1439
1498
 
1440
1499
  # reduce 112 omitted
1441
1500
 
1442
- module_eval(<<'.,.,', 'parser.y', 287)
1501
+ module_eval(<<'.,.,', 'parser.y', 293)
1443
1502
  def _reduce_113(val, _values, result)
1444
1503
  result = val[1]
1445
1504
  result
1446
1505
  end
1447
1506
  .,.,
1448
1507
 
1449
- module_eval(<<'.,.,', 'parser.y', 289)
1508
+ module_eval(<<'.,.,', 'parser.y', 295)
1450
1509
  def _reduce_114(val, _values, result)
1451
1510
  result = Date.gregorian(*val[0]).day_precision!
1452
1511
  result
1453
1512
  end
1454
1513
  .,.,
1455
1514
 
1456
- module_eval(<<'.,.,', 'parser.y', 290)
1515
+ module_eval(<<'.,.,', 'parser.y', 296)
1457
1516
  def _reduce_115(val, _values, result)
1458
1517
  result = Date.gregorian(*val[0]).month_precision!
1459
1518
  result
1460
1519
  end
1461
1520
  .,.,
1462
1521
 
1463
- module_eval(<<'.,.,', 'parser.y', 291)
1522
+ module_eval(<<'.,.,', 'parser.y', 297)
1464
1523
  def _reduce_116(val, _values, result)
1465
1524
  result = Date.gregorian(val[0]).year_precision!
1466
1525
  result
1467
1526
  end
1468
1527
  .,.,
1469
1528
 
1470
- module_eval(<<'.,.,', 'parser.y', 294)
1529
+ module_eval(<<'.,.,', 'parser.y', 300)
1471
1530
  def _reduce_117(val, _values, result)
1472
1531
  result = (Date.gregorian(*val[0]).day_precision! .. Date.gregorian(*val[2]).day_precision!)
1473
1532
  result
1474
1533
  end
1475
1534
  .,.,
1476
1535
 
1477
- module_eval(<<'.,.,', 'parser.y', 295)
1536
+ module_eval(<<'.,.,', 'parser.y', 301)
1478
1537
  def _reduce_118(val, _values, result)
1479
1538
  result = (Date.gregorian(*val[0]).month_precision! .. Date.gregorian(*val[2]).month_precision!)
1480
1539
  result
1481
1540
  end
1482
1541
  .,.,
1483
1542
 
1484
- module_eval(<<'.,.,', 'parser.y', 296)
1543
+ module_eval(<<'.,.,', 'parser.y', 302)
1485
1544
  def _reduce_119(val, _values, result)
1486
1545
  result = (Date.gregorian(val[0]).year_precision! .. Date.gregorian(val[2]).year_precision!)
1487
1546
  result
1488
1547
  end
1489
1548
  .,.,
1490
1549
 
1491
- module_eval(<<'.,.,', 'parser.y', 302)
1550
+ module_eval(<<'.,.,', 'parser.y', 308)
1492
1551
  def _reduce_120(val, _values, result)
1493
1552
  result = Date.gregorian(val[0][0], val[2], val[4])
1494
1553
  result.unspecified.year[2,2] = val[0][1]
@@ -1497,7 +1556,7 @@ module_eval(<<'.,.,', 'parser.y', 302)
1497
1556
  end
1498
1557
  .,.,
1499
1558
 
1500
- module_eval(<<'.,.,', 'parser.y', 307)
1559
+ module_eval(<<'.,.,', 'parser.y', 313)
1501
1560
  def _reduce_121(val, _values, result)
1502
1561
  result = Date.gregorian(val[0][0], val[2], 1)
1503
1562
  result.month_precision!
@@ -1507,7 +1566,7 @@ module_eval(<<'.,.,', 'parser.y', 307)
1507
1566
  end
1508
1567
  .,.,
1509
1568
 
1510
- module_eval(<<'.,.,', 'parser.y', 313)
1569
+ module_eval(<<'.,.,', 'parser.y', 319)
1511
1570
  def _reduce_122(val, _values, result)
1512
1571
  result = Date.gregorian(val[0][0], 1, val[5])
1513
1572
  result.unspecified.year[2,2] = val[0][1]
@@ -1517,7 +1576,7 @@ module_eval(<<'.,.,', 'parser.y', 313)
1517
1576
  end
1518
1577
  .,.,
1519
1578
 
1520
- module_eval(<<'.,.,', 'parser.y', 319)
1579
+ module_eval(<<'.,.,', 'parser.y', 325)
1521
1580
  def _reduce_123(val, _values, result)
1522
1581
  result = Date.gregorian(val[0][0], 1, 1)
1523
1582
  result.unspecified.year[2,2] = val[0][1]
@@ -1527,7 +1586,7 @@ module_eval(<<'.,.,', 'parser.y', 319)
1527
1586
  end
1528
1587
  .,.,
1529
1588
 
1530
- module_eval(<<'.,.,', 'parser.y', 325)
1589
+ module_eval(<<'.,.,', 'parser.y', 331)
1531
1590
  def _reduce_124(val, _values, result)
1532
1591
  result = Date.gregorian(val[0][0], val[2], 1)
1533
1592
  result.unspecified.year[2,2] = val[0][1]
@@ -1537,7 +1596,7 @@ module_eval(<<'.,.,', 'parser.y', 325)
1537
1596
  end
1538
1597
  .,.,
1539
1598
 
1540
- module_eval(<<'.,.,', 'parser.y', 331)
1599
+ module_eval(<<'.,.,', 'parser.y', 337)
1541
1600
  def _reduce_125(val, _values, result)
1542
1601
  result = Date.gregorian(val[0], 1, val[5])
1543
1602
  result.unspecified!(:month)
@@ -1548,42 +1607,42 @@ module_eval(<<'.,.,', 'parser.y', 331)
1548
1607
 
1549
1608
  # reduce 126 omitted
1550
1609
 
1551
- module_eval(<<'.,.,', 'parser.y', 337)
1610
+ module_eval(<<'.,.,', 'parser.y', 343)
1552
1611
  def _reduce_127(val, _values, result)
1553
1612
  result = uoa(val[1], val[3])
1554
1613
  result
1555
1614
  end
1556
1615
  .,.,
1557
1616
 
1558
- module_eval(<<'.,.,', 'parser.y', 340)
1617
+ module_eval(<<'.,.,', 'parser.y', 346)
1559
1618
  def _reduce_128(val, _values, result)
1560
1619
  result = val[0].year_precision!
1561
1620
  result
1562
1621
  end
1563
1622
  .,.,
1564
1623
 
1565
- module_eval(<<'.,.,', 'parser.y', 341)
1624
+ module_eval(<<'.,.,', 'parser.y', 347)
1566
1625
  def _reduce_129(val, _values, result)
1567
1626
  result = val[0][0].month_precision!
1568
1627
  result
1569
1628
  end
1570
1629
  .,.,
1571
1630
 
1572
- module_eval(<<'.,.,', 'parser.y', 342)
1631
+ module_eval(<<'.,.,', 'parser.y', 348)
1573
1632
  def _reduce_130(val, _values, result)
1574
1633
  result = val[0].day_precision!
1575
1634
  result
1576
1635
  end
1577
1636
  .,.,
1578
1637
 
1579
- module_eval(<<'.,.,', 'parser.y', 344)
1638
+ module_eval(<<'.,.,', 'parser.y', 350)
1580
1639
  def _reduce_131(val, _values, result)
1581
1640
  result = uoa(Date.gregorian(val[0]), val[1], :year)
1582
1641
  result
1583
1642
  end
1584
1643
  .,.,
1585
1644
 
1586
- module_eval(<<'.,.,', 'parser.y', 348)
1645
+ module_eval(<<'.,.,', 'parser.y', 354)
1587
1646
  def _reduce_132(val, _values, result)
1588
1647
  result = [uoa(val[0].change(:month => val[2]), val[3], [:month, :year])]
1589
1648
 
@@ -1591,7 +1650,7 @@ module_eval(<<'.,.,', 'parser.y', 348)
1591
1650
  end
1592
1651
  .,.,
1593
1652
 
1594
- module_eval(<<'.,.,', 'parser.y', 351)
1653
+ module_eval(<<'.,.,', 'parser.y', 357)
1595
1654
  def _reduce_133(val, _values, result)
1596
1655
  result = [uoa(Date.gregorian(val[0], val[2]), val[3], [:year, :month])]
1597
1656
 
@@ -1599,7 +1658,7 @@ module_eval(<<'.,.,', 'parser.y', 351)
1599
1658
  end
1600
1659
  .,.,
1601
1660
 
1602
- module_eval(<<'.,.,', 'parser.y', 354)
1661
+ module_eval(<<'.,.,', 'parser.y', 360)
1603
1662
  def _reduce_134(val, _values, result)
1604
1663
  result = [uoa(Date.gregorian(val[0], val[2]), val[4], [:month]), true]
1605
1664
 
@@ -1607,7 +1666,7 @@ module_eval(<<'.,.,', 'parser.y', 354)
1607
1666
  end
1608
1667
  .,.,
1609
1668
 
1610
- module_eval(<<'.,.,', 'parser.y', 357)
1669
+ module_eval(<<'.,.,', 'parser.y', 363)
1611
1670
  def _reduce_135(val, _values, result)
1612
1671
  result = [uoa(val[0].change(:month => val[2]), val[4], [:month]), true]
1613
1672
 
@@ -1615,7 +1674,7 @@ module_eval(<<'.,.,', 'parser.y', 357)
1615
1674
  end
1616
1675
  .,.,
1617
1676
 
1618
- module_eval(<<'.,.,', 'parser.y', 363)
1677
+ module_eval(<<'.,.,', 'parser.y', 369)
1619
1678
  def _reduce_136(val, _values, result)
1620
1679
  result = uoa(val[0][0].change(:day => val[2]), val[3], val[0][1] ? [:day] : nil)
1621
1680
 
@@ -1623,7 +1682,7 @@ module_eval(<<'.,.,', 'parser.y', 363)
1623
1682
  end
1624
1683
  .,.,
1625
1684
 
1626
- module_eval(<<'.,.,', 'parser.y', 366)
1685
+ module_eval(<<'.,.,', 'parser.y', 372)
1627
1686
  def _reduce_137(val, _values, result)
1628
1687
  result = uoa(val[0][0].change(:day => val[2]), val[4], [:day])
1629
1688
 
@@ -1631,7 +1690,7 @@ module_eval(<<'.,.,', 'parser.y', 366)
1631
1690
  end
1632
1691
  .,.,
1633
1692
 
1634
- module_eval(<<'.,.,', 'parser.y', 369)
1693
+ module_eval(<<'.,.,', 'parser.y', 375)
1635
1694
  def _reduce_138(val, _values, result)
1636
1695
  result = uoa(uoa(Date.gregorian(val[0], val[2], val[5]), val[4], :month), val[6], :day)
1637
1696
 
@@ -1639,7 +1698,7 @@ module_eval(<<'.,.,', 'parser.y', 369)
1639
1698
  end
1640
1699
  .,.,
1641
1700
 
1642
- module_eval(<<'.,.,', 'parser.y', 372)
1701
+ module_eval(<<'.,.,', 'parser.y', 378)
1643
1702
  def _reduce_139(val, _values, result)
1644
1703
  result = uoa(Date.gregorian(val[0][0], val[0][1], val[2]), val[3])
1645
1704
 
@@ -1647,7 +1706,7 @@ module_eval(<<'.,.,', 'parser.y', 372)
1647
1706
  end
1648
1707
  .,.,
1649
1708
 
1650
- module_eval(<<'.,.,', 'parser.y', 375)
1709
+ module_eval(<<'.,.,', 'parser.y', 381)
1651
1710
  def _reduce_140(val, _values, result)
1652
1711
  result = uoa(Date.gregorian(val[0][0], val[0][1], val[2]), val[4], [:day])
1653
1712
 
@@ -1655,7 +1714,7 @@ module_eval(<<'.,.,', 'parser.y', 375)
1655
1714
  end
1656
1715
  .,.,
1657
1716
 
1658
- module_eval(<<'.,.,', 'parser.y', 378)
1717
+ module_eval(<<'.,.,', 'parser.y', 384)
1659
1718
  def _reduce_141(val, _values, result)
1660
1719
  result = uoa(Date.gregorian(val[0], val[2], val[4]), val[6], [:month, :day])
1661
1720
 
@@ -1663,7 +1722,7 @@ module_eval(<<'.,.,', 'parser.y', 378)
1663
1722
  end
1664
1723
  .,.,
1665
1724
 
1666
- module_eval(<<'.,.,', 'parser.y', 381)
1725
+ module_eval(<<'.,.,', 'parser.y', 387)
1667
1726
  def _reduce_142(val, _values, result)
1668
1727
  result = Date.gregorian(val[0], val[2], val[4])
1669
1728
  result = uoa(result, val[6], [:day])
@@ -1673,7 +1732,7 @@ module_eval(<<'.,.,', 'parser.y', 381)
1673
1732
  end
1674
1733
  .,.,
1675
1734
 
1676
- module_eval(<<'.,.,', 'parser.y', 386)
1735
+ module_eval(<<'.,.,', 'parser.y', 392)
1677
1736
  def _reduce_143(val, _values, result)
1678
1737
  result = val[0].change(:month => val[2], :day => val[4])
1679
1738
  result = uoa(result, val[6], [:month, :day])
@@ -1682,7 +1741,7 @@ module_eval(<<'.,.,', 'parser.y', 386)
1682
1741
  end
1683
1742
  .,.,
1684
1743
 
1685
- module_eval(<<'.,.,', 'parser.y', 390)
1744
+ module_eval(<<'.,.,', 'parser.y', 396)
1686
1745
  def _reduce_144(val, _values, result)
1687
1746
  result = val[0].change(:month => val[2], :day => val[4])
1688
1747
  result = uoa(result, val[6], [:day])
@@ -1692,7 +1751,7 @@ module_eval(<<'.,.,', 'parser.y', 390)
1692
1751
  end
1693
1752
  .,.,
1694
1753
 
1695
- module_eval(<<'.,.,', 'parser.y', 401)
1754
+ module_eval(<<'.,.,', 'parser.y', 407)
1696
1755
  def _reduce_145(val, _values, result)
1697
1756
  result = []
1698
1757
  result
@@ -1701,7 +1760,7 @@ module_eval(<<'.,.,', 'parser.y', 401)
1701
1760
 
1702
1761
  # reduce 146 omitted
1703
1762
 
1704
- module_eval(<<'.,.,', 'parser.y', 405)
1763
+ module_eval(<<'.,.,', 'parser.y', 411)
1705
1764
  def _reduce_147(val, _values, result)
1706
1765
  result = 0
1707
1766
  result
@@ -1728,28 +1787,28 @@ module_eval(<<'.,.,', 'parser.y', 405)
1728
1787
 
1729
1788
  # reduce 157 omitted
1730
1789
 
1731
- module_eval(<<'.,.,', 'parser.y', 411)
1790
+ module_eval(<<'.,.,', 'parser.y', 417)
1732
1791
  def _reduce_158(val, _values, result)
1733
1792
  result = val[1]
1734
1793
  result
1735
1794
  end
1736
1795
  .,.,
1737
1796
 
1738
- module_eval(<<'.,.,', 'parser.y', 412)
1797
+ module_eval(<<'.,.,', 'parser.y', 418)
1739
1798
  def _reduce_159(val, _values, result)
1740
1799
  result = 10
1741
1800
  result
1742
1801
  end
1743
1802
  .,.,
1744
1803
 
1745
- module_eval(<<'.,.,', 'parser.y', 413)
1804
+ module_eval(<<'.,.,', 'parser.y', 419)
1746
1805
  def _reduce_160(val, _values, result)
1747
1806
  result = 11
1748
1807
  result
1749
1808
  end
1750
1809
  .,.,
1751
1810
 
1752
- module_eval(<<'.,.,', 'parser.y', 414)
1811
+ module_eval(<<'.,.,', 'parser.y', 420)
1753
1812
  def _reduce_161(val, _values, result)
1754
1813
  result = 12
1755
1814
  result
@@ -1758,49 +1817,49 @@ module_eval(<<'.,.,', 'parser.y', 414)
1758
1817
 
1759
1818
  # reduce 162 omitted
1760
1819
 
1761
- module_eval(<<'.,.,', 'parser.y', 418)
1820
+ module_eval(<<'.,.,', 'parser.y', 424)
1762
1821
  def _reduce_163(val, _values, result)
1763
1822
  result = 13
1764
1823
  result
1765
1824
  end
1766
1825
  .,.,
1767
1826
 
1768
- module_eval(<<'.,.,', 'parser.y', 421)
1827
+ module_eval(<<'.,.,', 'parser.y', 427)
1769
1828
  def _reduce_164(val, _values, result)
1770
1829
  result = val[1]
1771
1830
  result
1772
1831
  end
1773
1832
  .,.,
1774
1833
 
1775
- module_eval(<<'.,.,', 'parser.y', 422)
1834
+ module_eval(<<'.,.,', 'parser.y', 428)
1776
1835
  def _reduce_165(val, _values, result)
1777
1836
  result = 10 + val[1]
1778
1837
  result
1779
1838
  end
1780
1839
  .,.,
1781
1840
 
1782
- module_eval(<<'.,.,', 'parser.y', 423)
1841
+ module_eval(<<'.,.,', 'parser.y', 429)
1783
1842
  def _reduce_166(val, _values, result)
1784
1843
  result = 20
1785
1844
  result
1786
1845
  end
1787
1846
  .,.,
1788
1847
 
1789
- module_eval(<<'.,.,', 'parser.y', 424)
1848
+ module_eval(<<'.,.,', 'parser.y', 430)
1790
1849
  def _reduce_167(val, _values, result)
1791
1850
  result = 21
1792
1851
  result
1793
1852
  end
1794
1853
  .,.,
1795
1854
 
1796
- module_eval(<<'.,.,', 'parser.y', 425)
1855
+ module_eval(<<'.,.,', 'parser.y', 431)
1797
1856
  def _reduce_168(val, _values, result)
1798
1857
  result = 22
1799
1858
  result
1800
1859
  end
1801
1860
  .,.,
1802
1861
 
1803
- module_eval(<<'.,.,', 'parser.y', 426)
1862
+ module_eval(<<'.,.,', 'parser.y', 432)
1804
1863
  def _reduce_169(val, _values, result)
1805
1864
  result = 23
1806
1865
  result
@@ -1813,42 +1872,42 @@ module_eval(<<'.,.,', 'parser.y', 426)
1813
1872
 
1814
1873
  # reduce 172 omitted
1815
1874
 
1816
- module_eval(<<'.,.,', 'parser.y', 434)
1875
+ module_eval(<<'.,.,', 'parser.y', 440)
1817
1876
  def _reduce_173(val, _values, result)
1818
1877
  result = 24
1819
1878
  result
1820
1879
  end
1821
1880
  .,.,
1822
1881
 
1823
- module_eval(<<'.,.,', 'parser.y', 435)
1882
+ module_eval(<<'.,.,', 'parser.y', 441)
1824
1883
  def _reduce_174(val, _values, result)
1825
1884
  result = 25
1826
1885
  result
1827
1886
  end
1828
1887
  .,.,
1829
1888
 
1830
- module_eval(<<'.,.,', 'parser.y', 436)
1889
+ module_eval(<<'.,.,', 'parser.y', 442)
1831
1890
  def _reduce_175(val, _values, result)
1832
1891
  result = 26
1833
1892
  result
1834
1893
  end
1835
1894
  .,.,
1836
1895
 
1837
- module_eval(<<'.,.,', 'parser.y', 437)
1896
+ module_eval(<<'.,.,', 'parser.y', 443)
1838
1897
  def _reduce_176(val, _values, result)
1839
1898
  result = 27
1840
1899
  result
1841
1900
  end
1842
1901
  .,.,
1843
1902
 
1844
- module_eval(<<'.,.,', 'parser.y', 438)
1903
+ module_eval(<<'.,.,', 'parser.y', 444)
1845
1904
  def _reduce_177(val, _values, result)
1846
1905
  result = 28
1847
1906
  result
1848
1907
  end
1849
1908
  .,.,
1850
1909
 
1851
- module_eval(<<'.,.,', 'parser.y', 439)
1910
+ module_eval(<<'.,.,', 'parser.y', 445)
1852
1911
  def _reduce_178(val, _values, result)
1853
1912
  result = 29
1854
1913
  result
@@ -1857,7 +1916,7 @@ module_eval(<<'.,.,', 'parser.y', 439)
1857
1916
 
1858
1917
  # reduce 179 omitted
1859
1918
 
1860
- module_eval(<<'.,.,', 'parser.y', 443)
1919
+ module_eval(<<'.,.,', 'parser.y', 449)
1861
1920
  def _reduce_180(val, _values, result)
1862
1921
  result = 30
1863
1922
  result
@@ -1866,7 +1925,7 @@ module_eval(<<'.,.,', 'parser.y', 443)
1866
1925
 
1867
1926
  # reduce 181 omitted
1868
1927
 
1869
- module_eval(<<'.,.,', 'parser.y', 447)
1928
+ module_eval(<<'.,.,', 'parser.y', 453)
1870
1929
  def _reduce_182(val, _values, result)
1871
1930
  result = 31
1872
1931
  result
@@ -1875,21 +1934,21 @@ module_eval(<<'.,.,', 'parser.y', 447)
1875
1934
 
1876
1935
  # reduce 183 omitted
1877
1936
 
1878
- module_eval(<<'.,.,', 'parser.y', 451)
1937
+ module_eval(<<'.,.,', 'parser.y', 457)
1879
1938
  def _reduce_184(val, _values, result)
1880
1939
  result = 30 + val[1]
1881
1940
  result
1882
1941
  end
1883
1942
  .,.,
1884
1943
 
1885
- module_eval(<<'.,.,', 'parser.y', 452)
1944
+ module_eval(<<'.,.,', 'parser.y', 458)
1886
1945
  def _reduce_185(val, _values, result)
1887
1946
  result = 40 + val[1]
1888
1947
  result
1889
1948
  end
1890
1949
  .,.,
1891
1950
 
1892
- module_eval(<<'.,.,', 'parser.y', 453)
1951
+ module_eval(<<'.,.,', 'parser.y', 459)
1893
1952
  def _reduce_186(val, _values, result)
1894
1953
  result = 50 + val[1]
1895
1954
  result
@@ -1900,21 +1959,21 @@ module_eval(<<'.,.,', 'parser.y', 453)
1900
1959
 
1901
1960
  # reduce 188 omitted
1902
1961
 
1903
- module_eval(<<'.,.,', 'parser.y', 460)
1962
+ module_eval(<<'.,.,', 'parser.y', 466)
1904
1963
  def _reduce_189(val, _values, result)
1905
1964
  result = val[0]
1906
1965
  result
1907
1966
  end
1908
1967
  .,.,
1909
1968
 
1910
- module_eval(<<'.,.,', 'parser.y', 461)
1969
+ module_eval(<<'.,.,', 'parser.y', 467)
1911
1970
  def _reduce_190(val, _values, result)
1912
1971
  result = 10 * val[0] + val[1]
1913
1972
  result
1914
1973
  end
1915
1974
  .,.,
1916
1975
 
1917
- module_eval(<<'.,.,', 'parser.y', 464)
1976
+ module_eval(<<'.,.,', 'parser.y', 470)
1918
1977
  def _reduce_191(val, _values, result)
1919
1978
  result = val.zip([100,10,1]).reduce(0) { |s,(a,b)| s += a * b }
1920
1979
 
@@ -1922,7 +1981,7 @@ module_eval(<<'.,.,', 'parser.y', 464)
1922
1981
  end
1923
1982
  .,.,
1924
1983
 
1925
- module_eval(<<'.,.,', 'parser.y', 468)
1984
+ module_eval(<<'.,.,', 'parser.y', 474)
1926
1985
  def _reduce_192(val, _values, result)
1927
1986
  result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b }
1928
1987
 
@@ -1930,14 +1989,14 @@ module_eval(<<'.,.,', 'parser.y', 468)
1930
1989
  end
1931
1990
  .,.,
1932
1991
 
1933
- module_eval(<<'.,.,', 'parser.y', 472)
1992
+ module_eval(<<'.,.,', 'parser.y', 478)
1934
1993
  def _reduce_193(val, _values, result)
1935
1994
  result = val[0]
1936
1995
  result
1937
1996
  end
1938
1997
  .,.,
1939
1998
 
1940
- module_eval(<<'.,.,', 'parser.y', 473)
1999
+ module_eval(<<'.,.,', 'parser.y', 479)
1941
2000
  def _reduce_194(val, _values, result)
1942
2001
  result = 10 * val[0] + val[1]
1943
2002
  result