omnomnum 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/ext/omnomnum/extconf.rb +51 -0
  3. data/ext/omnomnum/omnomnum/branchlut/branchlut.c +276 -0
  4. data/ext/omnomnum/omnomnum/branchlut/branchlut.h +14 -0
  5. data/ext/omnomnum/omnomnum/dtoa.c +68 -0
  6. data/ext/omnomnum/omnomnum/dtoa.h +39 -0
  7. data/ext/omnomnum/omnomnum/grisu2/diy_fp.h +61 -0
  8. data/ext/omnomnum/omnomnum/grisu2/double.h +121 -0
  9. data/ext/omnomnum/omnomnum/grisu2/fast_exponent.h +44 -0
  10. data/ext/omnomnum/omnomnum/grisu2/grisu2.c +120 -0
  11. data/ext/omnomnum/omnomnum/grisu2/grisu2.h +36 -0
  12. data/ext/omnomnum/omnomnum/grisu2/k_comp.h +32 -0
  13. data/ext/omnomnum/omnomnum/grisu2/powers.h +27 -0
  14. data/ext/omnomnum/omnomnum/grisu2/powers_ten_round64.h +36 -0
  15. data/ext/omnomnum/omnomnum/grisu2/prettify.h +76 -0
  16. data/ext/omnomnum/omnomnum/itoa.c +40 -0
  17. data/ext/omnomnum/omnomnum/itoa.h +40 -0
  18. data/ext/omnomnum/omnomnum/main.c +87 -0
  19. data/ext/omnomnum/omnomnum/omnomnum.c +208 -0
  20. data/ext/omnomnum/omnomnum/omnomnum.h +47 -0
  21. data/ext/omnomnum/omnomnum/parser.c +3445 -0
  22. data/ext/omnomnum/omnomnum/parser.h +130 -0
  23. data/ext/omnomnum/omnomnum/scan.c +55 -0
  24. data/ext/omnomnum/omnomnum/scan.h +68 -0
  25. data/ext/omnomnum/omnomnum/scanner.c +4332 -0
  26. data/ext/omnomnum/omnomnum/scanner.def.c +97 -0
  27. data/ext/omnomnum/omnomnum/scanner.def.h +105 -0
  28. data/ext/omnomnum/omnomnum/scanner.h +44 -0
  29. data/ext/omnomnum/omnomnum/sds.c +1278 -0
  30. data/ext/omnomnum/omnomnum/sds.h +280 -0
  31. data/ext/omnomnum/omnomnum/sdsalloc.h +43 -0
  32. data/ext/omnomnum/omnomnum/test/test_benchmark.c +107 -0
  33. data/ext/omnomnum/omnomnum/test/test_omnomnum.c +146 -0
  34. data/ext/omnomnum/omnomnum/test/test_omnomnum.h +6 -0
  35. data/ext/omnomnum/omnomnum/test/test_util.c +98 -0
  36. data/ext/omnomnum/omnomnum/util.c +84 -0
  37. data/ext/omnomnum/omnomnum/util.h +43 -0
  38. data/ext/omnomnum/ruby_omnomnum.c +96 -0
  39. data/ext/omnomnum/ruby_omnomnum.h +40 -0
  40. data/lib/omnomnum.rb +31 -0
  41. data/lib/omnomnum/omnomnum.so +0 -0
  42. data/lib/omnomnum/version.rb +32 -0
  43. metadata +114 -0
@@ -0,0 +1,47 @@
1
+ /* OmNomNum 0.0.2 -- Gobbles up numbers in strings.
2
+ *
3
+ * Copyright (c) 2017, Jesse Buesking <jessebuesking at gmail dot com>
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ *
9
+ * * Redistributions of source code must retain the above copyright notice,
10
+ * this list of conditions and the following disclaimer.
11
+ * * Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * * Neither the name of OmNomNum nor the names of its contributors may be used
15
+ * to endorse or promote products derived from this software without
16
+ * specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
+ * POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+
31
+ #ifndef OMNOMNUM_H
32
+ #define OMNOMNUM_H
33
+
34
+ #include "scanner.h"
35
+ #include "scan.h"
36
+ #include "sds.h"
37
+ #include "parser.h"
38
+ #include "dtoa.h"
39
+ #include "itoa.h"
40
+
41
+ void initOmNomNum(void);
42
+ void freeOmNomNum(void);
43
+
44
+ YYSTYPEList find_numbers(const char *data, size_t data_len, ParserState *state);
45
+ void normalize(const char *data, size_t data_len, ParserState *state);
46
+
47
+ #endif // OMNOMNUM_H
@@ -0,0 +1,3445 @@
1
+ /*
2
+ ** 2000-05-29
3
+ **
4
+ ** The author disclaims copyright to this source code. In place of
5
+ ** a legal notice, here is a blessing:
6
+ **
7
+ ** May you do good and not evil.
8
+ ** May you find forgiveness for yourself and forgive others.
9
+ ** May you share freely, never taking more than you give.
10
+ **
11
+ *************************************************************************
12
+ ** Driver template for the LEMON parser generator.
13
+ **
14
+ ** The "lemon" program processes an LALR(1) input grammar file, then uses
15
+ ** this template to construct a parser. The "lemon" program inserts text
16
+ ** at each "%%" line. Also, any "P-a-r-s-e" identifer prefix (without the
17
+ ** interstitial "-" characters) contained in this template is changed into
18
+ ** the value of the %name directive from the grammar. Otherwise, the content
19
+ ** of this template is copied straight through into the generate parser
20
+ ** source file.
21
+ **
22
+ ** The following is the concatenation of all %include directives from the
23
+ ** input grammar file:
24
+ */
25
+ #include <stdio.h>
26
+ /************ Begin %include sections from the grammar ************************/
27
+ #line 37 "parser.yy"
28
+
29
+ #include <assert.h>
30
+ #include <stdio.h>
31
+ #include <stdlib.h>
32
+ #include <stdbool.h>
33
+ #include "scanner.def.h"
34
+ #include "sds.h"
35
+ #include "dtoa.h"
36
+
37
+ #ifndef COPY_YYSTYPE_BE
38
+ #define COPY_YYSTYPE_BE(A, B) \
39
+ A.begin = B.begin; \
40
+ A.end = B.end; \
41
+ A.is_frac = B.is_frac; \
42
+ A.is_dbl = B.is_dbl; \
43
+ A.leave_alone = B.leave_alone;
44
+ #endif
45
+
46
+ #ifndef COPY_YYSTYPE_BE_VALUE
47
+ #define COPY_YYSTYPE_BE_VALUE(A, B, VALUE) \
48
+ COPY_YYSTYPE_BE(A, B); \
49
+ A.dbl = VALUE;
50
+ #endif
51
+
52
+ #ifndef COPY_YYSTYPE_BE_VALUE_SUFF
53
+ #define COPY_YYSTYPE_BE_VALUE_SUFF(A, B, VALUE, SUFFIX) \
54
+ COPY_YYSTYPE_BE_VALUE(A, B, VALUE); \
55
+ A.suffix = SUFFIX;
56
+ #endif
57
+
58
+ #ifndef COPY_YYSTYPE_DBL
59
+ #define COPY_YYSTYPE_DBL(A, B) \
60
+ A.dbl = B.dbl; \
61
+ A.is_dbl = B.is_dbl;
62
+ #endif
63
+
64
+ #ifndef COPY_YYSTYPE_FRAC
65
+ #define COPY_YYSTYPE_FRAC(A, B, C) \
66
+ A.frac_num = B.dbl; \
67
+ A.frac_denom = C.dbl; \
68
+ A.is_frac = true;
69
+ #endif
70
+
71
+ #ifndef COPY_YYSTYPE_SUFF
72
+ #define COPY_YYSTYPE_SUFF(A, B) \
73
+ A.suffix = B.suffix;
74
+ #endif
75
+
76
+ #ifndef COPY_YYSTYPE_BE_DBL
77
+ #define COPY_YYSTYPE_BE_DBL(A, B) \
78
+ COPY_YYSTYPE_BE(A, B); \
79
+ COPY_YYSTYPE_DBL(A, B);
80
+ #endif
81
+
82
+ #ifndef COPY_YYSTYPE_BE_DBL_SUFF
83
+ #define COPY_YYSTYPE_BE_DBL_SUFF(A, B) \
84
+ COPY_YYSTYPE_BE_DBL(A, B); \
85
+ COPY_YYSTYPE_SUFF(A, B);
86
+ #endif
87
+
88
+ #ifndef COPY_YYSTYPE_BE2
89
+ #define COPY_YYSTYPE_BE2(A, B, C) \
90
+ A.begin = B.begin; \
91
+ A.end = C.end; \
92
+ A.is_frac = B.is_frac | C.is_frac; \
93
+ A.is_dbl = B.is_dbl | C.is_dbl; \
94
+ A.leave_alone = B.leave_alone | C.leave_alone;
95
+ #endif
96
+
97
+ #ifndef COPY_YYSTYPE_BE_MUL
98
+ #define COPY_YYSTYPE_BE_MUL(A, B, C, VALUE) \
99
+ COPY_YYSTYPE_BE2(A, B, C); \
100
+ A.dbl = B.dbl * VALUE; \
101
+ A.is_dbl = B.is_dbl;
102
+ #endif
103
+
104
+ #ifndef COPY_YYSTYPE_BE_MUL_SUFF
105
+ #define COPY_YYSTYPE_BE_MUL_SUFF(A, B, C, VALUE, SUFFIX) \
106
+ COPY_YYSTYPE_BE_MUL(A, B, C, VALUE); \
107
+ A.suffix = SUFFIX;
108
+ #endif
109
+
110
+ #ifndef COPY_YYSTYPE_BE_ADD
111
+ #define COPY_YYSTYPE_BE_ADD(A, B, C) \
112
+ COPY_YYSTYPE_BE2(A, B, C); \
113
+ A.dbl = B.dbl + C.dbl; \
114
+ A.is_dbl = B.is_dbl || C.is_dbl;
115
+ #endif
116
+
117
+ #ifndef COPY_YYSTYPE_BE_ADD_VALUE
118
+ #define COPY_YYSTYPE_BE_ADD_VALUE(A, B, C, VALUE) \
119
+ COPY_YYSTYPE_BE2(A, B, C); \
120
+ A.dbl = VALUE + C.dbl; \
121
+ A.is_dbl = B.is_dbl || C.is_dbl;
122
+ #endif
123
+
124
+ #ifndef COPY_YYSTYPE_BE_ADD_SUFF
125
+ #define COPY_YYSTYPE_BE_ADD_SUFF(A, B, C) \
126
+ COPY_YYSTYPE_BE_ADD(A, B, C); \
127
+ A.suffix = C.suffix;
128
+ #endif
129
+
130
+ #ifndef COPY_YYSTYPE_BE_ADD_SUFF_VALUE
131
+ #define COPY_YYSTYPE_BE_ADD_SUFF_VALUE(A, B, C, VALUE) \
132
+ COPY_YYSTYPE_BE2(A, B, C); \
133
+ A.dbl = VALUE + C.dbl; \
134
+ A.is_dbl = B.is_dbl || C.is_dbl; \
135
+ A.suffix = C.suffix;
136
+ #endif
137
+
138
+ #ifndef COPY_YYSTYPE_BE_MUL_ADD
139
+ #define COPY_YYSTYPE_BE_MUL_ADD(A, B, C, VALUE) \
140
+ COPY_YYSTYPE_BE2(A, B, C); \
141
+ A.dbl = (B.dbl * VALUE) + C.dbl; \
142
+ A.is_dbl = B.is_dbl || C.is_dbl;
143
+ #endif
144
+
145
+ #ifndef COPY_YYSTYPE_BE_MUL_ADD_SUFF
146
+ #define COPY_YYSTYPE_BE_MUL_ADD_SUFF(A, B, C, VALUE) \
147
+ COPY_YYSTYPE_BE_MUL_ADD(A, B, C, VALUE); \
148
+ A.suffix = C.suffix;
149
+ #endif
150
+
151
+ #ifndef COPY_YYSTYPE_DBL_NUM
152
+ #define COPY_YYSTYPE_DBL_NUM(A, B, C, VALUE) \
153
+ COPY_YYSTYPE_BE2(A, B, C); \
154
+ A.dbl = B.dbl * VALUE; \
155
+ A.is_dbl = true;
156
+ #endif
157
+
158
+ #ifndef COPY_YYSTYPE_DBL_NUM_SUFF
159
+ #define COPY_YYSTYPE_DBL_NUM_SUFF(A, B, C, VALUE, SUFFIX) \
160
+ COPY_YYSTYPE_DBL_NUM(A, B, C, VALUE); \
161
+ A.suffix = SUFFIX;
162
+ #endif
163
+
164
+ #ifndef COPY_YYSTYPE_FRAC_SET
165
+ #define COPY_YYSTYPE_FRAC_SET(A, B, C, NUMERATOR, DENOMINATOR) \
166
+ COPY_YYSTYPE_BE2(A, B, C); \
167
+ A.frac_num = NUMERATOR; \
168
+ A.frac_denom = DENOMINATOR; \
169
+ A.is_frac = true;
170
+ #endif
171
+
172
+ #ifndef COPY_YYSTYPE_FRAC_SET_MULT
173
+ #define COPY_YYSTYPE_FRAC_SET_MULT(A, B, C, NUMERATOR, DENOMINATOR) \
174
+ COPY_YYSTYPE_BE2(A, B, C); \
175
+ A.frac_num = (B.dbl * DENOMINATOR) + NUMERATOR; \
176
+ A.frac_denom = DENOMINATOR; \
177
+ A.is_frac = true;
178
+ #endif
179
+
180
+ #define HUNDRED_F 100.0
181
+ #define THOUSAND_F 1000.0
182
+ #define MILLION_F 1000000.0
183
+ #define BILLION_F 1000000000.0
184
+ #define TRILLION_F 1000000000000.0
185
+ #line 186 "parser.c"
186
+ #include "parser.h"
187
+ /**************** End of %include directives **********************************/
188
+ /* These constants specify the various numeric values for terminal symbols
189
+ ** in a format understandable to "makeheaders". This section is blank unless
190
+ ** "lemon" is run with the "-m" command-line option.
191
+ ***************** Begin makeheaders token definitions *************************/
192
+ #if INTERFACE
193
+ #define TOKEN_NEGATIVE 1
194
+ #define TOKEN_AND_A 2
195
+ #define TOKEN_QUARTER 3
196
+ #define TOKEN_HALF 4
197
+ #define TOKEN_QUARTERS 5
198
+ #define TOKEN_ONE 6
199
+ #define TOKEN_A 7
200
+ #define TOKEN_HALVES 8
201
+ #define TOKEN_AND 9
202
+ #define TOKEN_AN 10
203
+ #define TOKEN_ZERO_WHOLE_NUMBER 11
204
+ #define TOKEN_WHOLE_NUMBER 12
205
+ #define TOKEN_DECIMAL 13
206
+ #define TOKEN_ZERO 14
207
+ #define TOKEN_TRILLION 15
208
+ #define TOKEN_TRILLIONTH 16
209
+ #define TOKEN_TRILLIONTHS 17
210
+ #define TOKEN_BILLION 18
211
+ #define TOKEN_BILLIONTH 19
212
+ #define TOKEN_BILLIONTHS 20
213
+ #define TOKEN_MILLION 21
214
+ #define TOKEN_MILLIONTH 22
215
+ #define TOKEN_MILLIONTHS 23
216
+ #define TOKEN_THOUSAND 24
217
+ #define TOKEN_THOUSANDTH 25
218
+ #define TOKEN_THOUSANDTHS 26
219
+ #define TOKEN_HUNDRED 27
220
+ #define TOKEN_HUNDREDTH 28
221
+ #define TOKEN_HUNDREDTHS 29
222
+ #define TOKEN_TWO 30
223
+ #define TOKEN_THREE 31
224
+ #define TOKEN_FOUR 32
225
+ #define TOKEN_FIVE 33
226
+ #define TOKEN_SIX 34
227
+ #define TOKEN_SEVEN 35
228
+ #define TOKEN_EIGHT 36
229
+ #define TOKEN_NINE 37
230
+ #define TOKEN_TEN 38
231
+ #define TOKEN_ELEVEN 39
232
+ #define TOKEN_TWELVE 40
233
+ #define TOKEN_THIRTEEN 41
234
+ #define TOKEN_FOURTEEN 42
235
+ #define TOKEN_FIFTEEN 43
236
+ #define TOKEN_SIXTEEN 44
237
+ #define TOKEN_SEVENTEEN 45
238
+ #define TOKEN_EIGHTEEN 46
239
+ #define TOKEN_NINETEEN 47
240
+ #define TOKEN_TWENTY 48
241
+ #define TOKEN_THIRTY 49
242
+ #define TOKEN_FORTY 50
243
+ #define TOKEN_FIFTY 51
244
+ #define TOKEN_SIXTY 52
245
+ #define TOKEN_SEVENTY 53
246
+ #define TOKEN_EIGHTY 54
247
+ #define TOKEN_NINETY 55
248
+ #define TOKEN_FIRST 56
249
+ #define TOKEN_SECOND 57
250
+ #define TOKEN_THIRD 58
251
+ #define TOKEN_FOURTH 59
252
+ #define TOKEN_FIFTH 60
253
+ #define TOKEN_SIXTH 61
254
+ #define TOKEN_SEVENTH 62
255
+ #define TOKEN_EIGHTH 63
256
+ #define TOKEN_NINTH 64
257
+ #define TOKEN_TENTH 65
258
+ #define TOKEN_ELEVENTH 66
259
+ #define TOKEN_TWELFTH 67
260
+ #define TOKEN_THIRTEENTH 68
261
+ #define TOKEN_FOURTEENTH 69
262
+ #define TOKEN_FIFTEENTH 70
263
+ #define TOKEN_SIXTEENTH 71
264
+ #define TOKEN_SEVENTEENTH 72
265
+ #define TOKEN_EIGHTEENTH 73
266
+ #define TOKEN_NINETEENTH 74
267
+ #define TOKEN_TWENTIETH 75
268
+ #define TOKEN_THIRTIETH 76
269
+ #define TOKEN_FOURTIETH 77
270
+ #define TOKEN_FIFTIETH 78
271
+ #define TOKEN_SIXTIETH 79
272
+ #define TOKEN_SEVENTIETH 80
273
+ #define TOKEN_EIGHTIETH 81
274
+ #define TOKEN_NINETIETH 82
275
+ #define TOKEN_FIRSTS 83
276
+ #define TOKEN_SECONDS 84
277
+ #define TOKEN_THIRDS 85
278
+ #define TOKEN_FOURTHS 86
279
+ #define TOKEN_FIFTHS 87
280
+ #define TOKEN_SIXTHS 88
281
+ #define TOKEN_SEVENTHS 89
282
+ #define TOKEN_EIGHTHS 90
283
+ #define TOKEN_NINTHS 91
284
+ #define TOKEN_TENTHS 92
285
+ #define TOKEN_ELEVENTHS 93
286
+ #define TOKEN_TWELFTHS 94
287
+ #define TOKEN_THIRTEENTHS 95
288
+ #define TOKEN_FOURTEENTHS 96
289
+ #define TOKEN_FIFTEENTHS 97
290
+ #define TOKEN_SIXTEENTHS 98
291
+ #define TOKEN_SEVENTEENTHS 99
292
+ #define TOKEN_EIGHTEENTHS 100
293
+ #define TOKEN_NINETEENTHS 101
294
+ #define TOKEN_TWENTIETHS 102
295
+ #define TOKEN_THIRTIETHS 103
296
+ #define TOKEN_FOURTIETHS 104
297
+ #define TOKEN_FIFTIETHS 105
298
+ #define TOKEN_SIXTIETHS 106
299
+ #define TOKEN_SEVENTIETHS 107
300
+ #define TOKEN_EIGHTIETHS 108
301
+ #define TOKEN_NINETIETHS 109
302
+ #endif
303
+ /**************** End makeheaders token definitions ***************************/
304
+
305
+ /* The next sections is a series of control #defines.
306
+ ** various aspects of the generated parser.
307
+ ** YYCODETYPE is the data type used to store the integer codes
308
+ ** that represent terminal and non-terminal symbols.
309
+ ** "unsigned char" is used if there are fewer than
310
+ ** 256 symbols. Larger types otherwise.
311
+ ** YYNOCODE is a number of type YYCODETYPE that is not used for
312
+ ** any terminal or nonterminal symbol.
313
+ ** YYFALLBACK If defined, this indicates that one or more tokens
314
+ ** (also known as: "terminal symbols") have fall-back
315
+ ** values which should be used if the original symbol
316
+ ** would not parse. This permits keywords to sometimes
317
+ ** be used as identifiers, for example.
318
+ ** YYACTIONTYPE is the data type used for "action codes" - numbers
319
+ ** that indicate what to do in response to the next
320
+ ** token.
321
+ ** ParseTOKENTYPE is the data type used for minor type for terminal
322
+ ** symbols. Background: A "minor type" is a semantic
323
+ ** value associated with a terminal or non-terminal
324
+ ** symbols. For example, for an "ID" terminal symbol,
325
+ ** the minor type might be the name of the identifier.
326
+ ** Each non-terminal can have a different minor type.
327
+ ** Terminal symbols all have the same minor type, though.
328
+ ** This macros defines the minor type for terminal
329
+ ** symbols.
330
+ ** YYMINORTYPE is the data type used for all minor types.
331
+ ** This is typically a union of many types, one of
332
+ ** which is ParseTOKENTYPE. The entry in the union
333
+ ** for terminal symbols is called "yy0".
334
+ ** YYSTACKDEPTH is the maximum depth of the parser's stack. If
335
+ ** zero the stack is dynamically sized using realloc()
336
+ ** ParseARG_SDECL A static variable declaration for the %extra_argument
337
+ ** ParseARG_PDECL A parameter declaration for the %extra_argument
338
+ ** ParseARG_STORE Code to store %extra_argument into yypParser
339
+ ** ParseARG_FETCH Code to extract %extra_argument from yypParser
340
+ ** YYERRORSYMBOL is the code number of the error symbol. If not
341
+ ** defined, then do no error processing.
342
+ ** YYNSTATE the combined number of states.
343
+ ** YYNRULE the number of rules in the grammar
344
+ ** YY_MAX_SHIFT Maximum value for shift actions
345
+ ** YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions
346
+ ** YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions
347
+ ** YY_MIN_REDUCE Maximum value for reduce actions
348
+ ** YY_ERROR_ACTION The yy_action[] code for syntax error
349
+ ** YY_ACCEPT_ACTION The yy_action[] code for accept
350
+ ** YY_NO_ACTION The yy_action[] code for no-op
351
+ */
352
+ #ifndef INTERFACE
353
+ # define INTERFACE 1
354
+ #endif
355
+ /************* Begin control #defines *****************************************/
356
+ #define YYCODETYPE unsigned char
357
+ #define YYNOCODE 159
358
+ #define YYACTIONTYPE unsigned short int
359
+ #if INTERFACE
360
+ #define ParseTOKENTYPE YYSTYPE
361
+ #endif
362
+ typedef union {
363
+ int yyinit;
364
+ ParseTOKENTYPE yy0;
365
+ } YYMINORTYPE;
366
+ #ifndef YYSTACKDEPTH
367
+ #define YYSTACKDEPTH 100
368
+ #endif
369
+ #if INTERFACE
370
+ #define ParseARG_SDECL ParserState *state ;
371
+ #define ParseARG_PDECL , ParserState *state
372
+ #define ParseARG_FETCH ParserState *state = yypParser->state
373
+ #define ParseARG_STORE yypParser->state = state
374
+ #endif
375
+ #define YYNSTATE 60
376
+ #define YYNRULE 242
377
+ #define YY_MAX_SHIFT 59
378
+ #define YY_MIN_SHIFTREDUCE 293
379
+ #define YY_MAX_SHIFTREDUCE 534
380
+ #define YY_MIN_REDUCE 535
381
+ #define YY_MAX_REDUCE 776
382
+ #define YY_ERROR_ACTION 777
383
+ #define YY_ACCEPT_ACTION 778
384
+ #define YY_NO_ACTION 779
385
+ /************* End control #defines *******************************************/
386
+
387
+ /* Define the yytestcase() macro to be a no-op if is not already defined
388
+ ** otherwise.
389
+ **
390
+ ** Applications can choose to define yytestcase() in the %include section
391
+ ** to a macro that can assist in verifying code coverage. For production
392
+ ** code the yytestcase() macro should be turned off. But it is useful
393
+ ** for testing.
394
+ */
395
+ #ifndef yytestcase
396
+ # define yytestcase(X)
397
+ #endif
398
+
399
+
400
+ /* Next are the tables used to determine what action to take based on the
401
+ ** current state and lookahead token. These tables are used to implement
402
+ ** functions that take a state number and lookahead value and return an
403
+ ** action integer.
404
+ **
405
+ ** Suppose the action integer is N. Then the action is determined as
406
+ ** follows
407
+ **
408
+ ** 0 <= N <= YY_MAX_SHIFT Shift N. That is, push the lookahead
409
+ ** token onto the stack and goto state N.
410
+ **
411
+ ** N between YY_MIN_SHIFTREDUCE Shift to an arbitrary state then
412
+ ** and YY_MAX_SHIFTREDUCE reduce by rule N-YY_MIN_SHIFTREDUCE.
413
+ **
414
+ ** N between YY_MIN_REDUCE Reduce by rule N-YY_MIN_REDUCE
415
+ ** and YY_MAX_REDUCE
416
+ **
417
+ ** N == YY_ERROR_ACTION A syntax error has occurred.
418
+ **
419
+ ** N == YY_ACCEPT_ACTION The parser accepts its input.
420
+ **
421
+ ** N == YY_NO_ACTION No such action. Denotes unused
422
+ ** slots in the yy_action[] table.
423
+ **
424
+ ** The action table is constructed as a single large table named yy_action[].
425
+ ** Given state S and lookahead X, the action is computed as either:
426
+ **
427
+ ** (A) N = yy_action[ yy_shift_ofst[S] + X ]
428
+ ** (B) N = yy_default[S]
429
+ **
430
+ ** The (A) formula is preferred. The B formula is used instead if:
431
+ ** (1) The yy_shift_ofst[S]+X value is out of range, or
432
+ ** (2) yy_lookahead[yy_shift_ofst[S]+X] is not equal to X, or
433
+ ** (3) yy_shift_ofst[S] equal YY_SHIFT_USE_DFLT.
434
+ ** (Implementation note: YY_SHIFT_USE_DFLT is chosen so that
435
+ ** YY_SHIFT_USE_DFLT+X will be out of range for all possible lookaheads X.
436
+ ** Hence only tests (1) and (2) need to be evaluated.)
437
+ **
438
+ ** The formulas above are for computing the action when the lookahead is
439
+ ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
440
+ ** a reduce action) then the yy_reduce_ofst[] array is used in place of
441
+ ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
442
+ ** YY_SHIFT_USE_DFLT.
443
+ **
444
+ ** The following are the tables generated in this section:
445
+ **
446
+ ** yy_action[] A single table containing all actions.
447
+ ** yy_lookahead[] A table containing the lookahead for each entry in
448
+ ** yy_action. Used to detect hash collisions.
449
+ ** yy_shift_ofst[] For each state, the offset into yy_action for
450
+ ** shifting terminals.
451
+ ** yy_reduce_ofst[] For each state, the offset into yy_action for
452
+ ** shifting non-terminals after a reduce.
453
+ ** yy_default[] Default action for each state.
454
+ **
455
+ *********** Begin parsing tables **********************************************/
456
+ #define YY_ACTTAB_COUNT (2483)
457
+ static const YYACTIONTYPE yy_action[] = {
458
+ /* 0 */ 774, 7, 436, 436, 436, 439, 51, 18, 442, 442,
459
+ /* 10 */ 19, 310, 46, 40, 313, 2, 318, 324, 4, 339,
460
+ /* 20 */ 347, 8, 364, 372, 11, 389, 397, 56, 415, 424,
461
+ /* 30 */ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
462
+ /* 40 */ 462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
463
+ /* 50 */ 472, 473, 474, 475, 476, 477, 478, 479, 480, 481,
464
+ /* 60 */ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
465
+ /* 70 */ 492, 493, 494, 495, 496, 497, 498, 499, 500, 501,
466
+ /* 80 */ 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
467
+ /* 90 */ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
468
+ /* 100 */ 522, 523, 524, 525, 526, 527, 528, 529, 530, 531,
469
+ /* 110 */ 7, 12, 387, 395, 20, 51, 18, 19, 537, 19,
470
+ /* 120 */ 310, 46, 40, 313, 2, 318, 324, 4, 339, 347,
471
+ /* 130 */ 8, 364, 372, 11, 389, 397, 56, 415, 424, 452,
472
+ /* 140 */ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
473
+ /* 150 */ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
474
+ /* 160 */ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
475
+ /* 170 */ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
476
+ /* 180 */ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
477
+ /* 190 */ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
478
+ /* 200 */ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
479
+ /* 210 */ 523, 524, 525, 526, 527, 528, 529, 530, 531, 51,
480
+ /* 220 */ 18, 298, 301, 19, 310, 46, 40, 313, 2, 318,
481
+ /* 230 */ 324, 4, 339, 347, 8, 364, 372, 11, 389, 397,
482
+ /* 240 */ 56, 415, 424, 452, 453, 454, 455, 456, 457, 458,
483
+ /* 250 */ 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
484
+ /* 260 */ 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
485
+ /* 270 */ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
486
+ /* 280 */ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
487
+ /* 290 */ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
488
+ /* 300 */ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
489
+ /* 310 */ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
490
+ /* 320 */ 529, 530, 531, 451, 14, 316, 24, 16, 337, 306,
491
+ /* 330 */ 25, 362, 23, 27, 387, 6, 16, 337, 10, 25,
492
+ /* 340 */ 362, 13, 27, 387, 57, 27, 387, 452, 453, 454,
493
+ /* 350 */ 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
494
+ /* 360 */ 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
495
+ /* 370 */ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
496
+ /* 380 */ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
497
+ /* 390 */ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
498
+ /* 400 */ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
499
+ /* 410 */ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
500
+ /* 420 */ 525, 526, 527, 528, 529, 530, 531, 451, 29, 413,
501
+ /* 430 */ 24, 478, 479, 480, 481, 482, 483, 484, 485, 486,
502
+ /* 440 */ 25, 362, 10, 27, 387, 13, 295, 296, 57, 32,
503
+ /* 450 */ 413, 452, 453, 454, 455, 456, 457, 458, 459, 460,
504
+ /* 460 */ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
505
+ /* 470 */ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
506
+ /* 480 */ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
507
+ /* 490 */ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
508
+ /* 500 */ 501, 502, 503, 504, 505, 506, 507, 508, 509, 510,
509
+ /* 510 */ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
510
+ /* 520 */ 521, 522, 523, 524, 525, 526, 527, 528, 529, 530,
511
+ /* 530 */ 531, 451, 31, 34, 24, 1, 316, 322, 5, 337,
512
+ /* 540 */ 345, 9, 362, 370, 12, 387, 395, 55, 537, 13,
513
+ /* 550 */ 297, 537, 57, 300, 39, 452, 453, 454, 455, 456,
514
+ /* 560 */ 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
515
+ /* 570 */ 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
516
+ /* 580 */ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
517
+ /* 590 */ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
518
+ /* 600 */ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506,
519
+ /* 610 */ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
520
+ /* 620 */ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
521
+ /* 630 */ 527, 528, 529, 530, 531, 451, 537, 537, 24, 412,
522
+ /* 640 */ 430, 421, 36, 446, 437, 438, 448, 440, 441, 450,
523
+ /* 650 */ 444, 445, 447, 449, 537, 537, 57, 537, 537, 452,
524
+ /* 660 */ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
525
+ /* 670 */ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
526
+ /* 680 */ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
527
+ /* 690 */ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
528
+ /* 700 */ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
529
+ /* 710 */ 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
530
+ /* 720 */ 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
531
+ /* 730 */ 523, 524, 525, 526, 527, 528, 529, 530, 531, 451,
532
+ /* 740 */ 537, 537, 22, 411, 429, 420, 36, 446, 437, 438,
533
+ /* 750 */ 448, 440, 441, 450, 444, 445, 447, 449, 21, 413,
534
+ /* 760 */ 422, 537, 537, 452, 453, 454, 455, 456, 457, 458,
535
+ /* 770 */ 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
536
+ /* 780 */ 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
537
+ /* 790 */ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
538
+ /* 800 */ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
539
+ /* 810 */ 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
540
+ /* 820 */ 509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
541
+ /* 830 */ 519, 520, 521, 522, 523, 524, 525, 526, 527, 528,
542
+ /* 840 */ 529, 530, 531, 451, 410, 428, 419, 36, 446, 437,
543
+ /* 850 */ 438, 448, 440, 441, 450, 444, 445, 447, 449, 9,
544
+ /* 860 */ 362, 370, 12, 387, 395, 537, 537, 452, 453, 454,
545
+ /* 870 */ 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
546
+ /* 880 */ 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
547
+ /* 890 */ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
548
+ /* 900 */ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
549
+ /* 910 */ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
550
+ /* 920 */ 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
551
+ /* 930 */ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524,
552
+ /* 940 */ 525, 526, 527, 528, 529, 530, 531, 299, 302, 412,
553
+ /* 950 */ 451, 537, 38, 446, 437, 438, 537, 332, 537, 15,
554
+ /* 960 */ 357, 445, 17, 382, 537, 26, 407, 537, 28, 435,
555
+ /* 970 */ 537, 58, 537, 537, 452, 453, 454, 455, 456, 457,
556
+ /* 980 */ 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
557
+ /* 990 */ 468, 469, 470, 471, 472, 473, 474, 475, 476, 477,
558
+ /* 1000 */ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
559
+ /* 1010 */ 488, 489, 490, 491, 492, 493, 494, 495, 496, 497,
560
+ /* 1020 */ 498, 499, 500, 501, 502, 503, 504, 451, 411, 537,
561
+ /* 1030 */ 35, 38, 446, 437, 438, 537, 537, 537, 537, 17,
562
+ /* 1040 */ 445, 537, 26, 537, 537, 28, 537, 537, 58, 537,
563
+ /* 1050 */ 537, 452, 453, 454, 455, 456, 457, 458, 459, 460,
564
+ /* 1060 */ 461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
565
+ /* 1070 */ 471, 472, 473, 474, 475, 476, 477, 478, 479, 480,
566
+ /* 1080 */ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
567
+ /* 1090 */ 491, 492, 493, 494, 495, 496, 497, 498, 499, 500,
568
+ /* 1100 */ 501, 502, 503, 504, 451, 410, 537, 537, 38, 446,
569
+ /* 1110 */ 437, 438, 537, 15, 537, 537, 17, 445, 537, 26,
570
+ /* 1120 */ 537, 537, 28, 537, 537, 58, 537, 537, 452, 453,
571
+ /* 1130 */ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
572
+ /* 1140 */ 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
573
+ /* 1150 */ 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
574
+ /* 1160 */ 484, 485, 486, 487, 488, 489, 490, 491, 492, 493,
575
+ /* 1170 */ 494, 495, 496, 497, 498, 499, 500, 501, 502, 503,
576
+ /* 1180 */ 504, 451, 537, 537, 35, 5, 337, 345, 9, 362,
577
+ /* 1190 */ 370, 12, 387, 395, 537, 537, 26, 537, 537, 28,
578
+ /* 1200 */ 537, 537, 58, 537, 537, 452, 453, 454, 455, 456,
579
+ /* 1210 */ 457, 458, 459, 460, 461, 462, 463, 464, 465, 466,
580
+ /* 1220 */ 467, 468, 469, 470, 471, 472, 473, 474, 475, 476,
581
+ /* 1230 */ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
582
+ /* 1240 */ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
583
+ /* 1250 */ 497, 498, 499, 500, 501, 502, 503, 504, 451, 537,
584
+ /* 1260 */ 537, 35, 537, 412, 430, 537, 37, 446, 437, 438,
585
+ /* 1270 */ 537, 537, 537, 450, 444, 445, 28, 449, 537, 58,
586
+ /* 1280 */ 537, 537, 452, 453, 454, 455, 456, 457, 458, 459,
587
+ /* 1290 */ 460, 461, 462, 463, 464, 465, 466, 467, 468, 469,
588
+ /* 1300 */ 470, 471, 472, 473, 474, 475, 476, 477, 478, 479,
589
+ /* 1310 */ 480, 481, 482, 483, 484, 485, 486, 487, 488, 489,
590
+ /* 1320 */ 490, 491, 492, 493, 494, 495, 496, 497, 498, 499,
591
+ /* 1330 */ 500, 501, 502, 503, 504, 451, 537, 537, 35, 537,
592
+ /* 1340 */ 408, 426, 417, 36, 446, 437, 438, 448, 440, 441,
593
+ /* 1350 */ 450, 444, 445, 447, 449, 537, 59, 537, 537, 452,
594
+ /* 1360 */ 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
595
+ /* 1370 */ 463, 464, 465, 466, 467, 468, 469, 470, 471, 472,
596
+ /* 1380 */ 473, 474, 475, 476, 477, 478, 479, 480, 481, 482,
597
+ /* 1390 */ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
598
+ /* 1400 */ 493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
599
+ /* 1410 */ 503, 504, 451, 537, 537, 30, 331, 319, 325, 356,
600
+ /* 1420 */ 340, 348, 381, 365, 373, 406, 390, 398, 434, 416,
601
+ /* 1430 */ 425, 537, 537, 537, 537, 537, 452, 453, 454, 455,
602
+ /* 1440 */ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
603
+ /* 1450 */ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
604
+ /* 1460 */ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
605
+ /* 1470 */ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
606
+ /* 1480 */ 496, 497, 498, 499, 500, 501, 502, 503, 504, 451,
607
+ /* 1490 */ 386, 409, 537, 537, 537, 414, 54, 537, 37, 446,
608
+ /* 1500 */ 437, 438, 537, 537, 537, 450, 444, 445, 537, 449,
609
+ /* 1510 */ 537, 537, 537, 452, 453, 454, 455, 456, 457, 458,
610
+ /* 1520 */ 459, 460, 461, 462, 463, 464, 465, 466, 467, 468,
611
+ /* 1530 */ 469, 470, 471, 472, 473, 474, 475, 476, 477, 478,
612
+ /* 1540 */ 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
613
+ /* 1550 */ 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
614
+ /* 1560 */ 499, 500, 501, 502, 503, 504, 315, 42, 333, 321,
615
+ /* 1570 */ 341, 327, 349, 334, 338, 342, 346, 350, 354, 359,
616
+ /* 1580 */ 363, 367, 371, 375, 379, 384, 388, 392, 396, 400,
617
+ /* 1590 */ 414, 50, 423, 36, 446, 437, 438, 448, 440, 441,
618
+ /* 1600 */ 450, 444, 445, 447, 449, 314, 42, 333, 320, 341,
619
+ /* 1610 */ 326, 349, 334, 338, 342, 346, 350, 354, 359, 363,
620
+ /* 1620 */ 367, 371, 375, 379, 384, 388, 392, 396, 400, 414,
621
+ /* 1630 */ 50, 423, 36, 446, 437, 438, 448, 440, 441, 450,
622
+ /* 1640 */ 444, 445, 447, 449, 33, 470, 471, 472, 473, 474,
623
+ /* 1650 */ 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
624
+ /* 1660 */ 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
625
+ /* 1670 */ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
626
+ /* 1680 */ 537, 537, 537, 470, 471, 472, 473, 474, 475, 476,
627
+ /* 1690 */ 477, 478, 479, 480, 481, 482, 483, 484, 485, 486,
628
+ /* 1700 */ 487, 488, 489, 490, 491, 492, 493, 494, 495, 496,
629
+ /* 1710 */ 497, 498, 499, 500, 501, 502, 503, 504, 778, 3,
630
+ /* 1720 */ 3, 293, 48, 304, 305, 307, 537, 41, 317, 537,
631
+ /* 1730 */ 323, 537, 329, 537, 338, 537, 346, 537, 354, 537,
632
+ /* 1740 */ 363, 537, 371, 537, 379, 537, 388, 537, 396, 537,
633
+ /* 1750 */ 414, 50, 423, 36, 446, 437, 438, 448, 440, 441,
634
+ /* 1760 */ 450, 444, 445, 447, 449, 533, 293, 48, 304, 305,
635
+ /* 1770 */ 307, 537, 41, 317, 537, 323, 537, 329, 537, 338,
636
+ /* 1780 */ 537, 346, 537, 354, 537, 363, 537, 371, 537, 379,
637
+ /* 1790 */ 537, 388, 537, 396, 537, 414, 50, 423, 36, 446,
638
+ /* 1800 */ 437, 438, 448, 440, 441, 450, 444, 445, 447, 449,
639
+ /* 1810 */ 44, 537, 537, 537, 537, 537, 335, 358, 343, 366,
640
+ /* 1820 */ 351, 374, 359, 363, 367, 371, 375, 379, 384, 388,
641
+ /* 1830 */ 392, 396, 400, 414, 50, 423, 36, 446, 437, 438,
642
+ /* 1840 */ 448, 440, 441, 450, 444, 445, 447, 449, 44, 537,
643
+ /* 1850 */ 537, 537, 537, 537, 336, 358, 344, 366, 352, 374,
644
+ /* 1860 */ 359, 363, 367, 371, 375, 379, 384, 388, 392, 396,
645
+ /* 1870 */ 400, 414, 50, 423, 36, 446, 437, 438, 448, 440,
646
+ /* 1880 */ 441, 450, 444, 445, 447, 449, 537, 294, 48, 304,
647
+ /* 1890 */ 305, 307, 537, 41, 317, 537, 323, 537, 329, 537,
648
+ /* 1900 */ 338, 537, 346, 537, 354, 537, 363, 537, 371, 537,
649
+ /* 1910 */ 379, 537, 388, 537, 396, 537, 414, 50, 423, 36,
650
+ /* 1920 */ 446, 437, 438, 448, 440, 441, 450, 444, 445, 447,
651
+ /* 1930 */ 449, 49, 537, 537, 537, 537, 537, 537, 537, 537,
652
+ /* 1940 */ 537, 537, 537, 360, 383, 368, 391, 376, 399, 384,
653
+ /* 1950 */ 388, 392, 396, 400, 414, 50, 423, 36, 446, 437,
654
+ /* 1960 */ 438, 448, 440, 441, 450, 444, 445, 447, 449, 49,
655
+ /* 1970 */ 537, 537, 537, 537, 537, 537, 537, 537, 537, 537,
656
+ /* 1980 */ 537, 361, 383, 369, 391, 377, 399, 384, 388, 392,
657
+ /* 1990 */ 396, 400, 414, 50, 423, 36, 446, 437, 438, 448,
658
+ /* 2000 */ 440, 441, 450, 444, 445, 447, 449, 451, 385, 409,
659
+ /* 2010 */ 537, 537, 537, 414, 54, 537, 37, 446, 437, 438,
660
+ /* 2020 */ 537, 537, 537, 450, 444, 445, 537, 449, 537, 537,
661
+ /* 2030 */ 537, 452, 453, 454, 455, 456, 457, 458, 459, 537,
662
+ /* 2040 */ 411, 429, 537, 37, 446, 437, 438, 537, 537, 537,
663
+ /* 2050 */ 450, 444, 445, 537, 449, 537, 537, 478, 479, 480,
664
+ /* 2060 */ 481, 482, 483, 484, 485, 486, 410, 428, 537, 37,
665
+ /* 2070 */ 446, 437, 438, 537, 537, 427, 450, 444, 445, 537,
666
+ /* 2080 */ 449, 537, 537, 537, 505, 506, 507, 508, 509, 510,
667
+ /* 2090 */ 511, 512, 513, 385, 409, 393, 418, 401, 414, 50,
668
+ /* 2100 */ 423, 36, 446, 437, 438, 448, 440, 441, 450, 444,
669
+ /* 2110 */ 445, 447, 449, 427, 537, 537, 537, 537, 537, 537,
670
+ /* 2120 */ 537, 537, 537, 537, 537, 537, 537, 537, 537, 537,
671
+ /* 2130 */ 537, 386, 409, 394, 418, 402, 414, 50, 423, 36,
672
+ /* 2140 */ 446, 437, 438, 448, 440, 441, 450, 444, 445, 447,
673
+ /* 2150 */ 449, 315, 45, 333, 537, 537, 537, 408, 334, 338,
674
+ /* 2160 */ 38, 446, 437, 438, 359, 363, 537, 537, 537, 445,
675
+ /* 2170 */ 384, 388, 537, 537, 537, 414, 52, 537, 37, 446,
676
+ /* 2180 */ 437, 438, 537, 537, 537, 450, 444, 445, 537, 449,
677
+ /* 2190 */ 537, 537, 537, 537, 537, 314, 45, 333, 537, 537,
678
+ /* 2200 */ 537, 537, 334, 338, 537, 537, 537, 537, 359, 363,
679
+ /* 2210 */ 451, 537, 537, 537, 384, 388, 537, 537, 537, 414,
680
+ /* 2220 */ 52, 537, 37, 446, 437, 438, 537, 537, 537, 450,
681
+ /* 2230 */ 444, 445, 537, 449, 452, 453, 454, 455, 456, 457,
682
+ /* 2240 */ 458, 459, 537, 537, 537, 537, 537, 537, 537, 537,
683
+ /* 2250 */ 537, 537, 537, 537, 537, 537, 537, 537, 537, 537,
684
+ /* 2260 */ 478, 479, 480, 481, 482, 483, 484, 485, 486, 47,
685
+ /* 2270 */ 537, 537, 537, 537, 537, 336, 358, 537, 537, 537,
686
+ /* 2280 */ 537, 359, 363, 537, 537, 537, 537, 384, 388, 537,
687
+ /* 2290 */ 537, 537, 414, 52, 537, 37, 446, 437, 438, 537,
688
+ /* 2300 */ 537, 47, 450, 444, 445, 537, 449, 335, 358, 537,
689
+ /* 2310 */ 537, 537, 537, 359, 363, 537, 537, 537, 537, 384,
690
+ /* 2320 */ 388, 537, 537, 537, 414, 52, 537, 37, 446, 437,
691
+ /* 2330 */ 438, 537, 537, 537, 450, 444, 445, 308, 449, 537,
692
+ /* 2340 */ 537, 43, 317, 537, 537, 537, 537, 537, 338, 537,
693
+ /* 2350 */ 537, 537, 537, 537, 363, 537, 537, 537, 537, 537,
694
+ /* 2360 */ 388, 537, 537, 537, 414, 52, 537, 37, 446, 437,
695
+ /* 2370 */ 438, 537, 537, 537, 450, 444, 445, 309, 449, 537,
696
+ /* 2380 */ 537, 43, 317, 537, 537, 537, 537, 537, 338, 537,
697
+ /* 2390 */ 537, 537, 537, 537, 363, 537, 537, 537, 537, 537,
698
+ /* 2400 */ 388, 537, 537, 537, 414, 52, 537, 37, 446, 437,
699
+ /* 2410 */ 438, 537, 537, 53, 450, 444, 445, 537, 449, 537,
700
+ /* 2420 */ 537, 537, 537, 537, 537, 361, 383, 537, 537, 537,
701
+ /* 2430 */ 537, 384, 388, 537, 537, 537, 414, 52, 537, 37,
702
+ /* 2440 */ 446, 437, 438, 537, 537, 53, 450, 444, 445, 537,
703
+ /* 2450 */ 449, 537, 537, 537, 537, 537, 537, 360, 383, 537,
704
+ /* 2460 */ 537, 537, 537, 384, 388, 537, 537, 537, 414, 52,
705
+ /* 2470 */ 537, 37, 446, 437, 438, 537, 537, 537, 450, 444,
706
+ /* 2480 */ 445, 537, 449,
707
+ };
708
+ static const YYCODETYPE yy_lookahead[] = {
709
+ /* 0 */ 0, 1, 147, 147, 147, 150, 6, 7, 153, 153,
710
+ /* 10 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
711
+ /* 20 */ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
712
+ /* 30 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
713
+ /* 40 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
714
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
715
+ /* 60 */ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
716
+ /* 70 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
717
+ /* 80 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
718
+ /* 90 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
719
+ /* 100 */ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
720
+ /* 110 */ 1, 24, 25, 26, 7, 6, 7, 10, 158, 10,
721
+ /* 120 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
722
+ /* 130 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
723
+ /* 140 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
724
+ /* 150 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
725
+ /* 160 */ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
726
+ /* 170 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
727
+ /* 180 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
728
+ /* 190 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
729
+ /* 200 */ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
730
+ /* 210 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 6,
731
+ /* 220 */ 7, 3, 4, 10, 11, 12, 13, 14, 15, 16,
732
+ /* 230 */ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
733
+ /* 240 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
734
+ /* 250 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
735
+ /* 260 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
736
+ /* 270 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
737
+ /* 280 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
738
+ /* 290 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
739
+ /* 300 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
740
+ /* 310 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
741
+ /* 320 */ 107, 108, 109, 6, 15, 16, 9, 18, 19, 118,
742
+ /* 330 */ 21, 22, 9, 24, 25, 18, 18, 19, 21, 21,
743
+ /* 340 */ 22, 24, 24, 25, 27, 24, 25, 30, 31, 32,
744
+ /* 350 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
745
+ /* 360 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
746
+ /* 370 */ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
747
+ /* 380 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
748
+ /* 390 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
749
+ /* 400 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
750
+ /* 410 */ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
751
+ /* 420 */ 103, 104, 105, 106, 107, 108, 109, 6, 27, 28,
752
+ /* 430 */ 9, 56, 57, 58, 59, 60, 61, 62, 63, 64,
753
+ /* 440 */ 21, 22, 21, 24, 25, 24, 3, 4, 27, 27,
754
+ /* 450 */ 28, 30, 31, 32, 33, 34, 35, 36, 37, 38,
755
+ /* 460 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
756
+ /* 470 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
757
+ /* 480 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
758
+ /* 490 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
759
+ /* 500 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
760
+ /* 510 */ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
761
+ /* 520 */ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
762
+ /* 530 */ 109, 6, 9, 9, 9, 15, 16, 17, 18, 19,
763
+ /* 540 */ 20, 21, 22, 23, 24, 25, 26, 2, 158, 24,
764
+ /* 550 */ 5, 158, 27, 8, 9, 30, 31, 32, 33, 34,
765
+ /* 560 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
766
+ /* 570 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
767
+ /* 580 */ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
768
+ /* 590 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
769
+ /* 600 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
770
+ /* 610 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
771
+ /* 620 */ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
772
+ /* 630 */ 105, 106, 107, 108, 109, 6, 158, 158, 9, 143,
773
+ /* 640 */ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
774
+ /* 650 */ 154, 155, 156, 157, 158, 158, 27, 158, 158, 30,
775
+ /* 660 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
776
+ /* 670 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
777
+ /* 680 */ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
778
+ /* 690 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
779
+ /* 700 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
780
+ /* 710 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
781
+ /* 720 */ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
782
+ /* 730 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 6,
783
+ /* 740 */ 158, 158, 9, 143, 144, 145, 146, 147, 148, 149,
784
+ /* 750 */ 150, 151, 152, 153, 154, 155, 156, 157, 27, 28,
785
+ /* 760 */ 29, 158, 158, 30, 31, 32, 33, 34, 35, 36,
786
+ /* 770 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
787
+ /* 780 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
788
+ /* 790 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
789
+ /* 800 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
790
+ /* 810 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
791
+ /* 820 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
792
+ /* 830 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
793
+ /* 840 */ 107, 108, 109, 6, 143, 144, 145, 146, 147, 148,
794
+ /* 850 */ 149, 150, 151, 152, 153, 154, 155, 156, 157, 21,
795
+ /* 860 */ 22, 23, 24, 25, 26, 158, 158, 30, 31, 32,
796
+ /* 870 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
797
+ /* 880 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
798
+ /* 890 */ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
799
+ /* 900 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
800
+ /* 910 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
801
+ /* 920 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
802
+ /* 930 */ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
803
+ /* 940 */ 103, 104, 105, 106, 107, 108, 109, 3, 4, 143,
804
+ /* 950 */ 6, 158, 146, 147, 148, 149, 158, 15, 158, 15,
805
+ /* 960 */ 18, 155, 18, 21, 158, 21, 24, 158, 24, 27,
806
+ /* 970 */ 158, 27, 158, 158, 30, 31, 32, 33, 34, 35,
807
+ /* 980 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
808
+ /* 990 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
809
+ /* 1000 */ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
810
+ /* 1010 */ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
811
+ /* 1020 */ 76, 77, 78, 79, 80, 81, 82, 6, 143, 158,
812
+ /* 1030 */ 9, 146, 147, 148, 149, 158, 158, 158, 158, 18,
813
+ /* 1040 */ 155, 158, 21, 158, 158, 24, 158, 158, 27, 158,
814
+ /* 1050 */ 158, 30, 31, 32, 33, 34, 35, 36, 37, 38,
815
+ /* 1060 */ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
816
+ /* 1070 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
817
+ /* 1080 */ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
818
+ /* 1090 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
819
+ /* 1100 */ 79, 80, 81, 82, 6, 143, 158, 158, 146, 147,
820
+ /* 1110 */ 148, 149, 158, 15, 158, 158, 18, 155, 158, 21,
821
+ /* 1120 */ 158, 158, 24, 158, 158, 27, 158, 158, 30, 31,
822
+ /* 1130 */ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
823
+ /* 1140 */ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
824
+ /* 1150 */ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
825
+ /* 1160 */ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
826
+ /* 1170 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
827
+ /* 1180 */ 82, 6, 158, 158, 9, 18, 19, 20, 21, 22,
828
+ /* 1190 */ 23, 24, 25, 26, 158, 158, 21, 158, 158, 24,
829
+ /* 1200 */ 158, 158, 27, 158, 158, 30, 31, 32, 33, 34,
830
+ /* 1210 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
831
+ /* 1220 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
832
+ /* 1230 */ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
833
+ /* 1240 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
834
+ /* 1250 */ 75, 76, 77, 78, 79, 80, 81, 82, 6, 158,
835
+ /* 1260 */ 158, 9, 158, 143, 144, 158, 146, 147, 148, 149,
836
+ /* 1270 */ 158, 158, 158, 153, 154, 155, 24, 157, 158, 27,
837
+ /* 1280 */ 158, 158, 30, 31, 32, 33, 34, 35, 36, 37,
838
+ /* 1290 */ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
839
+ /* 1300 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
840
+ /* 1310 */ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
841
+ /* 1320 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
842
+ /* 1330 */ 78, 79, 80, 81, 82, 6, 158, 158, 9, 158,
843
+ /* 1340 */ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
844
+ /* 1350 */ 153, 154, 155, 156, 157, 158, 27, 158, 158, 30,
845
+ /* 1360 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
846
+ /* 1370 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
847
+ /* 1380 */ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
848
+ /* 1390 */ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
849
+ /* 1400 */ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
850
+ /* 1410 */ 81, 82, 6, 158, 158, 9, 15, 16, 17, 18,
851
+ /* 1420 */ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
852
+ /* 1430 */ 29, 158, 158, 158, 158, 158, 30, 31, 32, 33,
853
+ /* 1440 */ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
854
+ /* 1450 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
855
+ /* 1460 */ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
856
+ /* 1470 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
857
+ /* 1480 */ 74, 75, 76, 77, 78, 79, 80, 81, 82, 6,
858
+ /* 1490 */ 138, 139, 158, 158, 158, 143, 144, 158, 146, 147,
859
+ /* 1500 */ 148, 149, 158, 158, 158, 153, 154, 155, 158, 157,
860
+ /* 1510 */ 158, 158, 158, 30, 31, 32, 33, 34, 35, 36,
861
+ /* 1520 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
862
+ /* 1530 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
863
+ /* 1540 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
864
+ /* 1550 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
865
+ /* 1560 */ 77, 78, 79, 80, 81, 82, 119, 120, 121, 122,
866
+ /* 1570 */ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
867
+ /* 1580 */ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
868
+ /* 1590 */ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
869
+ /* 1600 */ 153, 154, 155, 156, 157, 119, 120, 121, 122, 123,
870
+ /* 1610 */ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
871
+ /* 1620 */ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
872
+ /* 1630 */ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
873
+ /* 1640 */ 154, 155, 156, 157, 9, 48, 49, 50, 51, 52,
874
+ /* 1650 */ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
875
+ /* 1660 */ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
876
+ /* 1670 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
877
+ /* 1680 */ 158, 158, 158, 48, 49, 50, 51, 52, 53, 54,
878
+ /* 1690 */ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
879
+ /* 1700 */ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
880
+ /* 1710 */ 75, 76, 77, 78, 79, 80, 81, 82, 111, 112,
881
+ /* 1720 */ 113, 114, 115, 116, 117, 118, 158, 120, 121, 158,
882
+ /* 1730 */ 123, 158, 125, 158, 127, 158, 129, 158, 131, 158,
883
+ /* 1740 */ 133, 158, 135, 158, 137, 158, 139, 158, 141, 158,
884
+ /* 1750 */ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
885
+ /* 1760 */ 153, 154, 155, 156, 157, 113, 114, 115, 116, 117,
886
+ /* 1770 */ 118, 158, 120, 121, 158, 123, 158, 125, 158, 127,
887
+ /* 1780 */ 158, 129, 158, 131, 158, 133, 158, 135, 158, 137,
888
+ /* 1790 */ 158, 139, 158, 141, 158, 143, 144, 145, 146, 147,
889
+ /* 1800 */ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
890
+ /* 1810 */ 120, 158, 158, 158, 158, 158, 126, 127, 128, 129,
891
+ /* 1820 */ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
892
+ /* 1830 */ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
893
+ /* 1840 */ 150, 151, 152, 153, 154, 155, 156, 157, 120, 158,
894
+ /* 1850 */ 158, 158, 158, 158, 126, 127, 128, 129, 130, 131,
895
+ /* 1860 */ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
896
+ /* 1870 */ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
897
+ /* 1880 */ 152, 153, 154, 155, 156, 157, 158, 114, 115, 116,
898
+ /* 1890 */ 117, 118, 158, 120, 121, 158, 123, 158, 125, 158,
899
+ /* 1900 */ 127, 158, 129, 158, 131, 158, 133, 158, 135, 158,
900
+ /* 1910 */ 137, 158, 139, 158, 141, 158, 143, 144, 145, 146,
901
+ /* 1920 */ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
902
+ /* 1930 */ 157, 120, 158, 158, 158, 158, 158, 158, 158, 158,
903
+ /* 1940 */ 158, 158, 158, 132, 133, 134, 135, 136, 137, 138,
904
+ /* 1950 */ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
905
+ /* 1960 */ 149, 150, 151, 152, 153, 154, 155, 156, 157, 120,
906
+ /* 1970 */ 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
907
+ /* 1980 */ 158, 132, 133, 134, 135, 136, 137, 138, 139, 140,
908
+ /* 1990 */ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
909
+ /* 2000 */ 151, 152, 153, 154, 155, 156, 157, 6, 138, 139,
910
+ /* 2010 */ 158, 158, 158, 143, 144, 158, 146, 147, 148, 149,
911
+ /* 2020 */ 158, 158, 158, 153, 154, 155, 158, 157, 158, 158,
912
+ /* 2030 */ 158, 30, 31, 32, 33, 34, 35, 36, 37, 158,
913
+ /* 2040 */ 143, 144, 158, 146, 147, 148, 149, 158, 158, 158,
914
+ /* 2050 */ 153, 154, 155, 158, 157, 158, 158, 56, 57, 58,
915
+ /* 2060 */ 59, 60, 61, 62, 63, 64, 143, 144, 158, 146,
916
+ /* 2070 */ 147, 148, 149, 158, 158, 120, 153, 154, 155, 158,
917
+ /* 2080 */ 157, 158, 158, 158, 83, 84, 85, 86, 87, 88,
918
+ /* 2090 */ 89, 90, 91, 138, 139, 140, 141, 142, 143, 144,
919
+ /* 2100 */ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
920
+ /* 2110 */ 155, 156, 157, 120, 158, 158, 158, 158, 158, 158,
921
+ /* 2120 */ 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
922
+ /* 2130 */ 158, 138, 139, 140, 141, 142, 143, 144, 145, 146,
923
+ /* 2140 */ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
924
+ /* 2150 */ 157, 119, 120, 121, 158, 158, 158, 143, 126, 127,
925
+ /* 2160 */ 146, 147, 148, 149, 132, 133, 158, 158, 158, 155,
926
+ /* 2170 */ 138, 139, 158, 158, 158, 143, 144, 158, 146, 147,
927
+ /* 2180 */ 148, 149, 158, 158, 158, 153, 154, 155, 158, 157,
928
+ /* 2190 */ 158, 158, 158, 158, 158, 119, 120, 121, 158, 158,
929
+ /* 2200 */ 158, 158, 126, 127, 158, 158, 158, 158, 132, 133,
930
+ /* 2210 */ 6, 158, 158, 158, 138, 139, 158, 158, 158, 143,
931
+ /* 2220 */ 144, 158, 146, 147, 148, 149, 158, 158, 158, 153,
932
+ /* 2230 */ 154, 155, 158, 157, 30, 31, 32, 33, 34, 35,
933
+ /* 2240 */ 36, 37, 158, 158, 158, 158, 158, 158, 158, 158,
934
+ /* 2250 */ 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
935
+ /* 2260 */ 56, 57, 58, 59, 60, 61, 62, 63, 64, 120,
936
+ /* 2270 */ 158, 158, 158, 158, 158, 126, 127, 158, 158, 158,
937
+ /* 2280 */ 158, 132, 133, 158, 158, 158, 158, 138, 139, 158,
938
+ /* 2290 */ 158, 158, 143, 144, 158, 146, 147, 148, 149, 158,
939
+ /* 2300 */ 158, 120, 153, 154, 155, 158, 157, 126, 127, 158,
940
+ /* 2310 */ 158, 158, 158, 132, 133, 158, 158, 158, 158, 138,
941
+ /* 2320 */ 139, 158, 158, 158, 143, 144, 158, 146, 147, 148,
942
+ /* 2330 */ 149, 158, 158, 158, 153, 154, 155, 116, 157, 158,
943
+ /* 2340 */ 158, 120, 121, 158, 158, 158, 158, 158, 127, 158,
944
+ /* 2350 */ 158, 158, 158, 158, 133, 158, 158, 158, 158, 158,
945
+ /* 2360 */ 139, 158, 158, 158, 143, 144, 158, 146, 147, 148,
946
+ /* 2370 */ 149, 158, 158, 158, 153, 154, 155, 116, 157, 158,
947
+ /* 2380 */ 158, 120, 121, 158, 158, 158, 158, 158, 127, 158,
948
+ /* 2390 */ 158, 158, 158, 158, 133, 158, 158, 158, 158, 158,
949
+ /* 2400 */ 139, 158, 158, 158, 143, 144, 158, 146, 147, 148,
950
+ /* 2410 */ 149, 158, 158, 120, 153, 154, 155, 158, 157, 158,
951
+ /* 2420 */ 158, 158, 158, 158, 158, 132, 133, 158, 158, 158,
952
+ /* 2430 */ 158, 138, 139, 158, 158, 158, 143, 144, 158, 146,
953
+ /* 2440 */ 147, 148, 149, 158, 158, 120, 153, 154, 155, 158,
954
+ /* 2450 */ 157, 158, 158, 158, 158, 158, 158, 132, 133, 158,
955
+ /* 2460 */ 158, 158, 158, 138, 139, 158, 158, 158, 143, 144,
956
+ /* 2470 */ 158, 146, 147, 148, 149, 158, 158, 158, 153, 154,
957
+ /* 2480 */ 155, 158, 157,
958
+ };
959
+ #define YY_SHIFT_USE_DFLT (2483)
960
+ #define YY_SHIFT_COUNT (59)
961
+ #define YY_SHIFT_MIN (0)
962
+ #define YY_SHIFT_MAX (2204)
963
+ static const unsigned short int yy_shift_ofst[] = {
964
+ /* 0 */ 109, 317, 317, 0, 421, 421, 421, 213, 525, 525,
965
+ /* 10 */ 525, 629, 629, 629, 1021, 1021, 1175, 1175, 944, 1098,
966
+ /* 20 */ 1098, 733, 837, 837, 837, 1252, 1252, 1329, 1329, 1406,
967
+ /* 30 */ 1483, 1483, 1635, 1597, 1597, 1597, 2001, 2204, 375, 107,
968
+ /* 40 */ 1401, 520, 1167, 309, 838, 318, 942, 419, 545, 87,
969
+ /* 50 */ 731, 218, 401, 321, 422, 443, 323, 323, 523, 524,
970
+ };
971
+ #define YY_REDUCE_USE_DFLT (-146)
972
+ #define YY_REDUCE_COUNT (39)
973
+ #define YY_REDUCE_MIN (-145)
974
+ #define YY_REDUCE_MAX (2325)
975
+ static const short yy_reduce_ofst[] = {
976
+ /* 0 */ 1607, 1447, 1486, 1652, 1690, 1728, 1690, 1773, 1811, 1849,
977
+ /* 10 */ 1811, 1955, 1993, 1955, 2032, 2076, 2149, 2181, 2221, 2261,
978
+ /* 20 */ 2221, 496, 600, 701, 1197, 2293, 2325, 1352, 1870, 1120,
979
+ /* 30 */ 1897, 1923, 806, 885, 962, 2014, -145, -144, -143, 211,
980
+ };
981
+ static const YYACTIONTYPE yy_default[] = {
982
+ /* 0 */ 777, 570, 572, 777, 597, 595, 777, 777, 622, 620,
983
+ /* 10 */ 777, 647, 645, 777, 777, 777, 777, 777, 777, 777,
984
+ /* 20 */ 777, 673, 777, 777, 777, 777, 777, 777, 777, 673,
985
+ /* 30 */ 777, 777, 777, 777, 777, 777, 685, 685, 777, 777,
986
+ /* 40 */ 554, 646, 646, 777, 646, 777, 553, 777, 545, 646,
987
+ /* 50 */ 674, 693, 674, 777, 777, 777, 675, 777, 777, 777,
988
+ };
989
+ /********** End of lemon-generated parsing tables *****************************/
990
+
991
+ /* The next table maps tokens (terminal symbols) into fallback tokens.
992
+ ** If a construct like the following:
993
+ **
994
+ ** %fallback ID X Y Z.
995
+ **
996
+ ** appears in the grammar, then ID becomes a fallback token for X, Y,
997
+ ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
998
+ ** but it does not parse, the type of the token is changed to ID and
999
+ ** the parse is retried before an error is thrown.
1000
+ **
1001
+ ** This feature can be used, for example, to cause some keywords in a language
1002
+ ** to revert to identifiers if they keyword does not apply in the context where
1003
+ ** it appears.
1004
+ */
1005
+ #ifdef YYFALLBACK
1006
+ static const YYCODETYPE yyFallback[] = {
1007
+ };
1008
+ #endif /* YYFALLBACK */
1009
+
1010
+ /* The following structure represents a single element of the
1011
+ ** parser's stack. Information stored includes:
1012
+ **
1013
+ ** + The state number for the parser at this level of the stack.
1014
+ **
1015
+ ** + The value of the token stored at this level of the stack.
1016
+ ** (In other words, the "major" token.)
1017
+ **
1018
+ ** + The semantic value stored at this level of the stack. This is
1019
+ ** the information used by the action routines in the grammar.
1020
+ ** It is sometimes called the "minor" token.
1021
+ **
1022
+ ** After the "shift" half of a SHIFTREDUCE action, the stateno field
1023
+ ** actually contains the reduce action for the second half of the
1024
+ ** SHIFTREDUCE.
1025
+ */
1026
+ struct yyStackEntry {
1027
+ YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */
1028
+ YYCODETYPE major; /* The major token value. This is the code
1029
+ ** number for the token at this stack level */
1030
+ YYMINORTYPE minor; /* The user-supplied minor token value. This
1031
+ ** is the value of the token */
1032
+ };
1033
+ typedef struct yyStackEntry yyStackEntry;
1034
+
1035
+ /* The state of the parser is completely contained in an instance of
1036
+ ** the following structure */
1037
+ struct yyParser {
1038
+ yyStackEntry *yytos; /* Pointer to top element of the stack */
1039
+ #ifdef YYTRACKMAXSTACKDEPTH
1040
+ int yyhwm; /* High-water mark of the stack */
1041
+ #endif
1042
+ #ifndef YYNOERRORRECOVERY
1043
+ int yyerrcnt; /* Shifts left before out of the error */
1044
+ #endif
1045
+ ParseARG_SDECL /* A place to hold %extra_argument */
1046
+ #if YYSTACKDEPTH<=0
1047
+ int yystksz; /* Current side of the stack */
1048
+ yyStackEntry *yystack; /* The parser's stack */
1049
+ yyStackEntry yystk0; /* First stack entry */
1050
+ #else
1051
+ yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
1052
+ #endif
1053
+ };
1054
+ typedef struct yyParser yyParser;
1055
+
1056
+ #ifndef NDEBUG
1057
+ #include <stdio.h>
1058
+ static FILE *yyTraceFILE = 0;
1059
+ static char *yyTracePrompt = 0;
1060
+ #endif /* NDEBUG */
1061
+
1062
+ #ifndef NDEBUG
1063
+ /*
1064
+ ** Turn parser tracing on by giving a stream to which to write the trace
1065
+ ** and a prompt to preface each trace message. Tracing is turned off
1066
+ ** by making either argument NULL
1067
+ **
1068
+ ** Inputs:
1069
+ ** <ul>
1070
+ ** <li> A FILE* to which trace output should be written.
1071
+ ** If NULL, then tracing is turned off.
1072
+ ** <li> A prefix string written at the beginning of every
1073
+ ** line of trace output. If NULL, then tracing is
1074
+ ** turned off.
1075
+ ** </ul>
1076
+ **
1077
+ ** Outputs:
1078
+ ** None.
1079
+ */
1080
+ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){
1081
+ yyTraceFILE = TraceFILE;
1082
+ yyTracePrompt = zTracePrompt;
1083
+ if( yyTraceFILE==0 ) yyTracePrompt = 0;
1084
+ else if( yyTracePrompt==0 ) yyTraceFILE = 0;
1085
+ }
1086
+ #endif /* NDEBUG */
1087
+
1088
+ #ifndef NDEBUG
1089
+ /* For tracing shifts, the names of all terminals and nonterminals
1090
+ ** are required. The following table supplies these names */
1091
+ static const char *const yyTokenName[] = {
1092
+ "$", "NEGATIVE", "AND_A", "QUARTER",
1093
+ "HALF", "QUARTERS", "ONE", "A",
1094
+ "HALVES", "AND", "AN", "ZERO_WHOLE_NUMBER",
1095
+ "WHOLE_NUMBER", "DECIMAL", "ZERO", "TRILLION",
1096
+ "TRILLIONTH", "TRILLIONTHS", "BILLION", "BILLIONTH",
1097
+ "BILLIONTHS", "MILLION", "MILLIONTH", "MILLIONTHS",
1098
+ "THOUSAND", "THOUSANDTH", "THOUSANDTHS", "HUNDRED",
1099
+ "HUNDREDTH", "HUNDREDTHS", "TWO", "THREE",
1100
+ "FOUR", "FIVE", "SIX", "SEVEN",
1101
+ "EIGHT", "NINE", "TEN", "ELEVEN",
1102
+ "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN",
1103
+ "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN",
1104
+ "TWENTY", "THIRTY", "FORTY", "FIFTY",
1105
+ "SIXTY", "SEVENTY", "EIGHTY", "NINETY",
1106
+ "FIRST", "SECOND", "THIRD", "FOURTH",
1107
+ "FIFTH", "SIXTH", "SEVENTH", "EIGHTH",
1108
+ "NINTH", "TENTH", "ELEVENTH", "TWELFTH",
1109
+ "THIRTEENTH", "FOURTEENTH", "FIFTEENTH", "SIXTEENTH",
1110
+ "SEVENTEENTH", "EIGHTEENTH", "NINETEENTH", "TWENTIETH",
1111
+ "THIRTIETH", "FOURTIETH", "FIFTIETH", "SIXTIETH",
1112
+ "SEVENTIETH", "EIGHTIETH", "NINETIETH", "FIRSTS",
1113
+ "SECONDS", "THIRDS", "FOURTHS", "FIFTHS",
1114
+ "SIXTHS", "SEVENTHS", "EIGHTHS", "NINTHS",
1115
+ "TENTHS", "ELEVENTHS", "TWELFTHS", "THIRTEENTHS",
1116
+ "FOURTEENTHS", "FIFTEENTHS", "SIXTEENTHS", "SEVENTEENTHS",
1117
+ "EIGHTEENTHS", "NINETEENTHS", "TWENTIETHS", "THIRTIETHS",
1118
+ "FOURTIETHS", "FIFTIETHS", "SIXTIETHS", "SEVENTIETHS",
1119
+ "EIGHTIETHS", "NINETIETHS", "error", "program",
1120
+ "numbers", "number", "final_number", "less_than_quadrillion",
1121
+ "less_than_quadrillionth", "less_than_quadrillionths", "fraction", "less_than_trillionth_end_only",
1122
+ "less_than_thousand", "less_than_trillionth", "less_than_trillionths_end_only", "less_than_trillionths",
1123
+ "less_than_trillion_end_only", "less_than_trillion", "less_than_billionth_end_only", "less_than_billionth",
1124
+ "less_than_billionths_end_only", "less_than_billionths", "less_than_billion_end_only", "less_than_billion",
1125
+ "less_than_millionth_end_only", "less_than_millionth", "less_than_millionths_end_only", "less_than_millionths",
1126
+ "less_than_million_end_only", "less_than_million", "less_than_thousandth_end_only", "less_than_thousandth",
1127
+ "less_than_thousandths_end_only", "less_than_thousandths", "less_than_thousand_end_only", "less_than_hundredth",
1128
+ "less_than_hundred", "less_than_hundredths", "tens", "less_than_tenth",
1129
+ "tenth", "less_than_twentieth", "less_than_tenths", "tenths",
1130
+ "less_than_twentieths", "less_than_ten", "less_than_twenty", "tenth_to_19th",
1131
+ "tenths_to_19ths", "ten_to_19",
1132
+ };
1133
+ #endif /* NDEBUG */
1134
+
1135
+ #ifndef NDEBUG
1136
+ /* For tracing reduce actions, the names of all rules are required.
1137
+ */
1138
+ static const char *const yyRuleName[] = {
1139
+ /* 0 */ "number ::= final_number",
1140
+ /* 1 */ "number ::= NEGATIVE final_number",
1141
+ /* 2 */ "final_number ::= less_than_quadrillion AND_A QUARTER",
1142
+ /* 3 */ "final_number ::= less_than_quadrillion AND_A HALF",
1143
+ /* 4 */ "final_number ::= less_than_quadrillion QUARTERS",
1144
+ /* 5 */ "final_number ::= ONE QUARTER",
1145
+ /* 6 */ "final_number ::= A QUARTER",
1146
+ /* 7 */ "final_number ::= less_than_quadrillion HALVES",
1147
+ /* 8 */ "final_number ::= ONE HALF",
1148
+ /* 9 */ "final_number ::= A HALF",
1149
+ /* 10 */ "final_number ::= less_than_quadrillion",
1150
+ /* 11 */ "final_number ::= less_than_quadrillionth",
1151
+ /* 12 */ "final_number ::= less_than_quadrillionths",
1152
+ /* 13 */ "final_number ::= less_than_quadrillion AND fraction",
1153
+ /* 14 */ "final_number ::= fraction",
1154
+ /* 15 */ "fraction ::= A less_than_quadrillionth",
1155
+ /* 16 */ "fraction ::= AN less_than_quadrillionth",
1156
+ /* 17 */ "final_number ::= ZERO_WHOLE_NUMBER",
1157
+ /* 18 */ "final_number ::= WHOLE_NUMBER",
1158
+ /* 19 */ "final_number ::= DECIMAL",
1159
+ /* 20 */ "final_number ::= ZERO",
1160
+ /* 21 */ "less_than_quadrillionth ::= TRILLION less_than_trillionth_end_only",
1161
+ /* 22 */ "less_than_quadrillionth ::= less_than_thousand TRILLION less_than_trillionth_end_only",
1162
+ /* 23 */ "less_than_quadrillionth ::= less_than_thousand TRILLIONTH",
1163
+ /* 24 */ "less_than_quadrillionth ::= less_than_trillionth",
1164
+ /* 25 */ "final_number ::= TRILLIONTH",
1165
+ /* 26 */ "final_number ::= DECIMAL TRILLIONTH",
1166
+ /* 27 */ "less_than_quadrillionths ::= TRILLION less_than_trillionths_end_only",
1167
+ /* 28 */ "less_than_quadrillionths ::= less_than_thousand TRILLION less_than_trillionths_end_only",
1168
+ /* 29 */ "less_than_quadrillionths ::= less_than_thousand TRILLIONTHS",
1169
+ /* 30 */ "less_than_quadrillionths ::= less_than_trillionths",
1170
+ /* 31 */ "final_number ::= TRILLIONTHS",
1171
+ /* 32 */ "final_number ::= DECIMAL TRILLIONTHS",
1172
+ /* 33 */ "less_than_quadrillion ::= TRILLION less_than_trillion_end_only",
1173
+ /* 34 */ "less_than_quadrillion ::= less_than_thousand TRILLION less_than_trillion_end_only",
1174
+ /* 35 */ "less_than_quadrillion ::= less_than_thousand TRILLION",
1175
+ /* 36 */ "less_than_quadrillion ::= less_than_trillion",
1176
+ /* 37 */ "final_number ::= TRILLION",
1177
+ /* 38 */ "final_number ::= DECIMAL TRILLION",
1178
+ /* 39 */ "final_number ::= WHOLE_NUMBER TRILLION",
1179
+ /* 40 */ "less_than_trillionth_end_only ::= less_than_trillionth",
1180
+ /* 41 */ "less_than_trillionth_end_only ::= less_than_billionth_end_only",
1181
+ /* 42 */ "less_than_trillionth ::= BILLION less_than_billionth_end_only",
1182
+ /* 43 */ "less_than_trillionth ::= less_than_thousand BILLION less_than_billionth_end_only",
1183
+ /* 44 */ "less_than_trillionth ::= less_than_thousand BILLIONTH",
1184
+ /* 45 */ "less_than_trillionth ::= less_than_billionth",
1185
+ /* 46 */ "final_number ::= BILLIONTH",
1186
+ /* 47 */ "final_number ::= DECIMAL BILLIONTH",
1187
+ /* 48 */ "less_than_trillionths_end_only ::= less_than_trillionths",
1188
+ /* 49 */ "less_than_trillionths_end_only ::= less_than_billionths_end_only",
1189
+ /* 50 */ "less_than_trillionths ::= BILLION less_than_billionths_end_only",
1190
+ /* 51 */ "less_than_trillionths ::= less_than_thousand BILLION less_than_billionths_end_only",
1191
+ /* 52 */ "less_than_trillionths ::= less_than_thousand BILLIONTHS",
1192
+ /* 53 */ "less_than_trillionths ::= less_than_billionths",
1193
+ /* 54 */ "final_number ::= BILLIONTHS",
1194
+ /* 55 */ "final_number ::= DECIMAL BILLIONTHS",
1195
+ /* 56 */ "less_than_trillion_end_only ::= less_than_trillion",
1196
+ /* 57 */ "less_than_trillion_end_only ::= less_than_billion_end_only",
1197
+ /* 58 */ "less_than_trillion ::= BILLION less_than_billion_end_only",
1198
+ /* 59 */ "less_than_trillion ::= less_than_thousand BILLION less_than_billion_end_only",
1199
+ /* 60 */ "less_than_trillion ::= less_than_thousand BILLION",
1200
+ /* 61 */ "less_than_trillion ::= less_than_billion",
1201
+ /* 62 */ "final_number ::= BILLION",
1202
+ /* 63 */ "final_number ::= DECIMAL BILLION",
1203
+ /* 64 */ "final_number ::= WHOLE_NUMBER BILLION",
1204
+ /* 65 */ "less_than_billionth_end_only ::= less_than_billionth",
1205
+ /* 66 */ "less_than_billionth_end_only ::= less_than_millionth_end_only",
1206
+ /* 67 */ "less_than_billionth ::= MILLION less_than_millionth_end_only",
1207
+ /* 68 */ "less_than_billionth ::= less_than_thousand MILLION less_than_millionth_end_only",
1208
+ /* 69 */ "less_than_billionth ::= less_than_thousand MILLIONTH",
1209
+ /* 70 */ "less_than_billionth ::= less_than_millionth",
1210
+ /* 71 */ "final_number ::= MILLIONTH",
1211
+ /* 72 */ "final_number ::= DECIMAL MILLIONTH",
1212
+ /* 73 */ "less_than_billionths_end_only ::= less_than_billionths",
1213
+ /* 74 */ "less_than_billionths_end_only ::= less_than_millionths_end_only",
1214
+ /* 75 */ "less_than_billionths ::= MILLION less_than_millionths_end_only",
1215
+ /* 76 */ "less_than_billionths ::= less_than_thousand MILLION less_than_millionths_end_only",
1216
+ /* 77 */ "less_than_billionths ::= less_than_thousand MILLIONTHS",
1217
+ /* 78 */ "less_than_billionths ::= less_than_millionths",
1218
+ /* 79 */ "final_number ::= MILLIONTHS",
1219
+ /* 80 */ "final_number ::= DECIMAL MILLIONTHS",
1220
+ /* 81 */ "less_than_billion_end_only ::= less_than_billion",
1221
+ /* 82 */ "less_than_billion_end_only ::= less_than_million_end_only",
1222
+ /* 83 */ "less_than_billion ::= MILLION less_than_million_end_only",
1223
+ /* 84 */ "less_than_billion ::= less_than_thousand MILLION less_than_million_end_only",
1224
+ /* 85 */ "less_than_billion ::= less_than_thousand MILLION",
1225
+ /* 86 */ "less_than_billion ::= less_than_million",
1226
+ /* 87 */ "final_number ::= MILLION",
1227
+ /* 88 */ "final_number ::= DECIMAL MILLION",
1228
+ /* 89 */ "final_number ::= WHOLE_NUMBER MILLION",
1229
+ /* 90 */ "less_than_millionth_end_only ::= less_than_millionth",
1230
+ /* 91 */ "less_than_millionth_end_only ::= less_than_thousandth_end_only",
1231
+ /* 92 */ "less_than_millionth ::= THOUSAND less_than_thousandth_end_only",
1232
+ /* 93 */ "less_than_millionth ::= less_than_thousand THOUSAND less_than_thousandth_end_only",
1233
+ /* 94 */ "less_than_millionth ::= less_than_thousand THOUSANDTH",
1234
+ /* 95 */ "less_than_millionth ::= less_than_thousandth",
1235
+ /* 96 */ "final_number ::= THOUSANDTH",
1236
+ /* 97 */ "final_number ::= DECIMAL THOUSANDTH",
1237
+ /* 98 */ "less_than_millionths_end_only ::= less_than_millionths",
1238
+ /* 99 */ "less_than_millionths_end_only ::= less_than_thousandths_end_only",
1239
+ /* 100 */ "less_than_millionths ::= THOUSAND less_than_thousandths_end_only",
1240
+ /* 101 */ "less_than_millionths ::= less_than_thousand THOUSAND less_than_thousandths_end_only",
1241
+ /* 102 */ "less_than_millionths ::= less_than_thousand THOUSANDTHS",
1242
+ /* 103 */ "less_than_millionths ::= less_than_thousandths",
1243
+ /* 104 */ "final_number ::= THOUSANDTHS",
1244
+ /* 105 */ "final_number ::= DECIMAL THOUSANDTHS",
1245
+ /* 106 */ "less_than_million_end_only ::= less_than_million",
1246
+ /* 107 */ "less_than_million_end_only ::= less_than_thousand_end_only",
1247
+ /* 108 */ "less_than_million ::= THOUSAND less_than_thousand_end_only",
1248
+ /* 109 */ "less_than_million ::= less_than_thousand THOUSAND less_than_thousand_end_only",
1249
+ /* 110 */ "less_than_million ::= less_than_thousand THOUSAND",
1250
+ /* 111 */ "less_than_million ::= less_than_thousand",
1251
+ /* 112 */ "final_number ::= THOUSAND",
1252
+ /* 113 */ "final_number ::= DECIMAL THOUSAND",
1253
+ /* 114 */ "final_number ::= WHOLE_NUMBER THOUSAND",
1254
+ /* 115 */ "less_than_thousandth_end_only ::= AND less_than_hundredth",
1255
+ /* 116 */ "less_than_thousandth_end_only ::= less_than_thousandth",
1256
+ /* 117 */ "less_than_thousandth ::= HUNDRED AND less_than_hundredth",
1257
+ /* 118 */ "less_than_thousandth ::= less_than_hundred HUNDRED AND less_than_hundredth",
1258
+ /* 119 */ "less_than_thousandth ::= less_than_hundred HUNDRED less_than_hundredth",
1259
+ /* 120 */ "less_than_thousandth ::= less_than_hundred HUNDREDTH",
1260
+ /* 121 */ "less_than_thousandth ::= less_than_hundredth",
1261
+ /* 122 */ "final_number ::= HUNDREDTH",
1262
+ /* 123 */ "final_number ::= DECIMAL HUNDREDTH",
1263
+ /* 124 */ "less_than_thousandths_end_only ::= AND less_than_hundredths",
1264
+ /* 125 */ "less_than_thousandths_end_only ::= less_than_thousandths",
1265
+ /* 126 */ "less_than_thousandths ::= HUNDRED AND less_than_hundredths",
1266
+ /* 127 */ "less_than_thousandths ::= less_than_hundred HUNDRED AND less_than_hundredths",
1267
+ /* 128 */ "less_than_thousandths ::= less_than_hundred HUNDRED less_than_hundredths",
1268
+ /* 129 */ "less_than_thousandths ::= less_than_hundred HUNDREDTHS",
1269
+ /* 130 */ "less_than_thousandths ::= less_than_hundredths",
1270
+ /* 131 */ "final_number ::= HUNDREDTHS",
1271
+ /* 132 */ "final_number ::= DECIMAL HUNDREDTHS",
1272
+ /* 133 */ "less_than_thousand_end_only ::= AND less_than_hundred",
1273
+ /* 134 */ "less_than_thousand_end_only ::= less_than_thousand",
1274
+ /* 135 */ "less_than_thousand ::= HUNDRED AND less_than_hundred",
1275
+ /* 136 */ "less_than_thousand ::= less_than_hundred HUNDRED AND less_than_hundred",
1276
+ /* 137 */ "less_than_thousand ::= less_than_hundred HUNDRED less_than_hundred",
1277
+ /* 138 */ "less_than_thousand ::= less_than_hundred HUNDRED",
1278
+ /* 139 */ "less_than_thousand ::= less_than_hundred",
1279
+ /* 140 */ "final_number ::= HUNDRED",
1280
+ /* 141 */ "final_number ::= DECIMAL HUNDRED",
1281
+ /* 142 */ "final_number ::= WHOLE_NUMBER HUNDRED",
1282
+ /* 143 */ "less_than_hundredth ::= tens less_than_tenth",
1283
+ /* 144 */ "less_than_hundredth ::= tenth",
1284
+ /* 145 */ "less_than_hundredth ::= less_than_twentieth",
1285
+ /* 146 */ "less_than_hundredths ::= tens less_than_tenths",
1286
+ /* 147 */ "less_than_hundredths ::= tenths",
1287
+ /* 148 */ "less_than_hundredths ::= less_than_twentieths",
1288
+ /* 149 */ "less_than_hundred ::= tens less_than_ten",
1289
+ /* 150 */ "less_than_hundred ::= tens",
1290
+ /* 151 */ "less_than_hundred ::= less_than_twenty",
1291
+ /* 152 */ "less_than_twentieth ::= tenth_to_19th",
1292
+ /* 153 */ "less_than_twentieth ::= less_than_tenth",
1293
+ /* 154 */ "less_than_twentieths ::= tenths_to_19ths",
1294
+ /* 155 */ "less_than_twentieths ::= less_than_tenths",
1295
+ /* 156 */ "less_than_twenty ::= ten_to_19",
1296
+ /* 157 */ "less_than_twenty ::= less_than_ten",
1297
+ /* 158 */ "less_than_ten ::= ONE",
1298
+ /* 159 */ "less_than_ten ::= TWO",
1299
+ /* 160 */ "less_than_ten ::= THREE",
1300
+ /* 161 */ "less_than_ten ::= FOUR",
1301
+ /* 162 */ "less_than_ten ::= FIVE",
1302
+ /* 163 */ "less_than_ten ::= SIX",
1303
+ /* 164 */ "less_than_ten ::= SEVEN",
1304
+ /* 165 */ "less_than_ten ::= EIGHT",
1305
+ /* 166 */ "less_than_ten ::= NINE",
1306
+ /* 167 */ "ten_to_19 ::= TEN",
1307
+ /* 168 */ "ten_to_19 ::= ELEVEN",
1308
+ /* 169 */ "ten_to_19 ::= TWELVE",
1309
+ /* 170 */ "ten_to_19 ::= THIRTEEN",
1310
+ /* 171 */ "ten_to_19 ::= FOURTEEN",
1311
+ /* 172 */ "ten_to_19 ::= FIFTEEN",
1312
+ /* 173 */ "ten_to_19 ::= SIXTEEN",
1313
+ /* 174 */ "ten_to_19 ::= SEVENTEEN",
1314
+ /* 175 */ "ten_to_19 ::= EIGHTEEN",
1315
+ /* 176 */ "ten_to_19 ::= NINETEEN",
1316
+ /* 177 */ "tens ::= TWENTY",
1317
+ /* 178 */ "tens ::= THIRTY",
1318
+ /* 179 */ "tens ::= FORTY",
1319
+ /* 180 */ "tens ::= FIFTY",
1320
+ /* 181 */ "tens ::= SIXTY",
1321
+ /* 182 */ "tens ::= SEVENTY",
1322
+ /* 183 */ "tens ::= EIGHTY",
1323
+ /* 184 */ "tens ::= NINETY",
1324
+ /* 185 */ "less_than_tenth ::= FIRST",
1325
+ /* 186 */ "less_than_tenth ::= SECOND",
1326
+ /* 187 */ "less_than_tenth ::= THIRD",
1327
+ /* 188 */ "less_than_tenth ::= FOURTH",
1328
+ /* 189 */ "less_than_tenth ::= FIFTH",
1329
+ /* 190 */ "less_than_tenth ::= SIXTH",
1330
+ /* 191 */ "less_than_tenth ::= SEVENTH",
1331
+ /* 192 */ "less_than_tenth ::= EIGHTH",
1332
+ /* 193 */ "less_than_tenth ::= NINTH",
1333
+ /* 194 */ "tenth_to_19th ::= TENTH",
1334
+ /* 195 */ "tenth_to_19th ::= ELEVENTH",
1335
+ /* 196 */ "tenth_to_19th ::= TWELFTH",
1336
+ /* 197 */ "tenth_to_19th ::= THIRTEENTH",
1337
+ /* 198 */ "tenth_to_19th ::= FOURTEENTH",
1338
+ /* 199 */ "tenth_to_19th ::= FIFTEENTH",
1339
+ /* 200 */ "tenth_to_19th ::= SIXTEENTH",
1340
+ /* 201 */ "tenth_to_19th ::= SEVENTEENTH",
1341
+ /* 202 */ "tenth_to_19th ::= EIGHTEENTH",
1342
+ /* 203 */ "tenth_to_19th ::= NINETEENTH",
1343
+ /* 204 */ "tenth ::= TWENTIETH",
1344
+ /* 205 */ "tenth ::= THIRTIETH",
1345
+ /* 206 */ "tenth ::= FOURTIETH",
1346
+ /* 207 */ "tenth ::= FIFTIETH",
1347
+ /* 208 */ "tenth ::= SIXTIETH",
1348
+ /* 209 */ "tenth ::= SEVENTIETH",
1349
+ /* 210 */ "tenth ::= EIGHTIETH",
1350
+ /* 211 */ "tenth ::= NINETIETH",
1351
+ /* 212 */ "less_than_tenths ::= FIRSTS",
1352
+ /* 213 */ "less_than_tenths ::= SECONDS",
1353
+ /* 214 */ "less_than_tenths ::= THIRDS",
1354
+ /* 215 */ "less_than_tenths ::= FOURTHS",
1355
+ /* 216 */ "less_than_tenths ::= FIFTHS",
1356
+ /* 217 */ "less_than_tenths ::= SIXTHS",
1357
+ /* 218 */ "less_than_tenths ::= SEVENTHS",
1358
+ /* 219 */ "less_than_tenths ::= EIGHTHS",
1359
+ /* 220 */ "less_than_tenths ::= NINTHS",
1360
+ /* 221 */ "tenths_to_19ths ::= TENTHS",
1361
+ /* 222 */ "tenths_to_19ths ::= ELEVENTHS",
1362
+ /* 223 */ "tenths_to_19ths ::= TWELFTHS",
1363
+ /* 224 */ "tenths_to_19ths ::= THIRTEENTHS",
1364
+ /* 225 */ "tenths_to_19ths ::= FOURTEENTHS",
1365
+ /* 226 */ "tenths_to_19ths ::= FIFTEENTHS",
1366
+ /* 227 */ "tenths_to_19ths ::= SIXTEENTHS",
1367
+ /* 228 */ "tenths_to_19ths ::= SEVENTEENTHS",
1368
+ /* 229 */ "tenths_to_19ths ::= EIGHTEENTHS",
1369
+ /* 230 */ "tenths_to_19ths ::= NINETEENTHS",
1370
+ /* 231 */ "tenths ::= TWENTIETHS",
1371
+ /* 232 */ "tenths ::= THIRTIETHS",
1372
+ /* 233 */ "tenths ::= FOURTIETHS",
1373
+ /* 234 */ "tenths ::= FIFTIETHS",
1374
+ /* 235 */ "tenths ::= SIXTIETHS",
1375
+ /* 236 */ "tenths ::= SEVENTIETHS",
1376
+ /* 237 */ "tenths ::= EIGHTIETHS",
1377
+ /* 238 */ "tenths ::= NINETIETHS",
1378
+ /* 239 */ "program ::= numbers",
1379
+ /* 240 */ "numbers ::= numbers number",
1380
+ /* 241 */ "numbers ::= number",
1381
+ };
1382
+ #endif /* NDEBUG */
1383
+
1384
+
1385
+ #if YYSTACKDEPTH<=0
1386
+ /*
1387
+ ** Try to increase the size of the parser stack. Return the number
1388
+ ** of errors. Return 0 on success.
1389
+ */
1390
+ static int yyGrowStack(yyParser *p){
1391
+ int newSize;
1392
+ int idx;
1393
+ yyStackEntry *pNew;
1394
+
1395
+ newSize = p->yystksz*2 + 100;
1396
+ idx = p->yytos ? (int)(p->yytos - p->yystack) : 0;
1397
+ if( p->yystack==&p->yystk0 ){
1398
+ pNew = malloc(newSize*sizeof(pNew[0]));
1399
+ if( pNew ) pNew[0] = p->yystk0;
1400
+ }else{
1401
+ pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
1402
+ }
1403
+ if( pNew ){
1404
+ p->yystack = pNew;
1405
+ p->yytos = &p->yystack[idx];
1406
+ #ifndef NDEBUG
1407
+ if( yyTraceFILE ){
1408
+ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n",
1409
+ yyTracePrompt, p->yystksz, newSize);
1410
+ }
1411
+ #endif
1412
+ p->yystksz = newSize;
1413
+ }
1414
+ return pNew==0;
1415
+ }
1416
+ #endif
1417
+
1418
+ /* Datatype of the argument to the memory allocated passed as the
1419
+ ** second argument to ParseAlloc() below. This can be changed by
1420
+ ** putting an appropriate #define in the %include section of the input
1421
+ ** grammar.
1422
+ */
1423
+ #ifndef YYMALLOCARGTYPE
1424
+ # define YYMALLOCARGTYPE size_t
1425
+ #endif
1426
+
1427
+ /*
1428
+ ** This function allocates a new parser.
1429
+ ** The only argument is a pointer to a function which works like
1430
+ ** malloc.
1431
+ **
1432
+ ** Inputs:
1433
+ ** A pointer to the function used to allocate memory.
1434
+ **
1435
+ ** Outputs:
1436
+ ** A pointer to a parser. This pointer is used in subsequent calls
1437
+ ** to Parse and ParseFree.
1438
+ */
1439
+ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){
1440
+ yyParser *pParser;
1441
+ pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) );
1442
+ if( pParser ){
1443
+ #ifdef YYTRACKMAXSTACKDEPTH
1444
+ pParser->yyhwm = 0;
1445
+ #endif
1446
+ #if YYSTACKDEPTH<=0
1447
+ pParser->yytos = NULL;
1448
+ pParser->yystack = NULL;
1449
+ pParser->yystksz = 0;
1450
+ if( yyGrowStack(pParser) ){
1451
+ pParser->yystack = &pParser->yystk0;
1452
+ pParser->yystksz = 1;
1453
+ }
1454
+ #endif
1455
+ #ifndef YYNOERRORRECOVERY
1456
+ pParser->yyerrcnt = -1;
1457
+ #endif
1458
+ pParser->yytos = pParser->yystack;
1459
+ pParser->yystack[0].stateno = 0;
1460
+ pParser->yystack[0].major = 0;
1461
+ }
1462
+ return pParser;
1463
+ }
1464
+
1465
+ /* The following function deletes the "minor type" or semantic value
1466
+ ** associated with a symbol. The symbol can be either a terminal
1467
+ ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is
1468
+ ** a pointer to the value to be deleted. The code used to do the
1469
+ ** deletions is derived from the %destructor and/or %token_destructor
1470
+ ** directives of the input grammar.
1471
+ */
1472
+ static void yy_destructor(
1473
+ yyParser *yypParser, /* The parser */
1474
+ YYCODETYPE yymajor, /* Type code for object to destroy */
1475
+ YYMINORTYPE *yypminor /* The object to be destroyed */
1476
+ ){
1477
+ ParseARG_FETCH;
1478
+ switch( yymajor ){
1479
+ /* Here is inserted the actions which take place when a
1480
+ ** terminal or non-terminal is destroyed. This can happen
1481
+ ** when the symbol is popped from the stack during a
1482
+ ** reduce or during error processing or when a parser is
1483
+ ** being destroyed before it is finished parsing.
1484
+ **
1485
+ ** Note: during a reduce, the only symbols destroyed are those
1486
+ ** which appear on the RHS of the rule, but which are *not* used
1487
+ ** inside the C code.
1488
+ */
1489
+ /********* Begin destructor definitions ***************************************/
1490
+ /********* End destructor definitions *****************************************/
1491
+ default: break; /* If no destructor action specified: do nothing */
1492
+ }
1493
+ }
1494
+
1495
+ /*
1496
+ ** Pop the parser's stack once.
1497
+ **
1498
+ ** If there is a destructor routine associated with the token which
1499
+ ** is popped from the stack, then call it.
1500
+ */
1501
+ static void yy_pop_parser_stack(yyParser *pParser){
1502
+ yyStackEntry *yytos;
1503
+ assert( pParser->yytos!=0 );
1504
+ assert( pParser->yytos > pParser->yystack );
1505
+ yytos = pParser->yytos--;
1506
+ #ifndef NDEBUG
1507
+ if( yyTraceFILE ){
1508
+ fprintf(yyTraceFILE,"%sPopping %s\n",
1509
+ yyTracePrompt,
1510
+ yyTokenName[yytos->major]);
1511
+ }
1512
+ #endif
1513
+ yy_destructor(pParser, yytos->major, &yytos->minor);
1514
+ }
1515
+
1516
+ /*
1517
+ ** Deallocate and destroy a parser. Destructors are called for
1518
+ ** all stack elements before shutting the parser down.
1519
+ **
1520
+ ** If the YYPARSEFREENEVERNULL macro exists (for example because it
1521
+ ** is defined in a %include section of the input grammar) then it is
1522
+ ** assumed that the input pointer is never NULL.
1523
+ */
1524
+ void ParseFree(
1525
+ void *p, /* The parser to be deleted */
1526
+ void (*freeProc)(void*) /* Function used to reclaim memory */
1527
+ ){
1528
+ yyParser *pParser = (yyParser*)p;
1529
+ #ifndef YYPARSEFREENEVERNULL
1530
+ if( pParser==0 ) return;
1531
+ #endif
1532
+ while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser);
1533
+ #if YYSTACKDEPTH<=0
1534
+ if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack);
1535
+ #endif
1536
+ (*freeProc)((void*)pParser);
1537
+ }
1538
+
1539
+ /*
1540
+ ** Return the peak depth of the stack for a parser.
1541
+ */
1542
+ #ifdef YYTRACKMAXSTACKDEPTH
1543
+ int ParseStackPeak(void *p){
1544
+ yyParser *pParser = (yyParser*)p;
1545
+ return pParser->yyhwm;
1546
+ }
1547
+ #endif
1548
+
1549
+ /*
1550
+ ** Deallocate and destroy a parser. Destructors are called for
1551
+ ** all stack elements before shutting the parser down.
1552
+ **
1553
+ ** If the YYPARSEFREENEVERNULL macro exists (for example because it
1554
+ ** is defined in a %include section of the input grammar) then it is
1555
+ ** assumed that the input pointer is never NULL.
1556
+ */
1557
+ void ParseReset(
1558
+ void *p /* The parser to be reset */
1559
+ ){
1560
+ yyParser *pParser = (yyParser*)p;
1561
+ #ifndef YYPARSEFREENEVERNULL
1562
+ if( pParser==0 ) return;
1563
+ #endif
1564
+ while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser);
1565
+ #if YYSTACKDEPTH<=0
1566
+ if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack);
1567
+ #endif
1568
+
1569
+ if( pParser ){
1570
+ #ifdef YYTRACKMAXSTACKDEPTH
1571
+ pParser->yyhwm = 0;
1572
+ #endif
1573
+ #if YYSTACKDEPTH<=0
1574
+ pParser->yytos = NULL;
1575
+ pParser->yystack = NULL;
1576
+ pParser->yystksz = 0;
1577
+ /*if( yyGrowStack(pParser) ){*/
1578
+ /*pParser->yystack = &pParser->yystk0;*/
1579
+ /*pParser->yystksz = 1;*/
1580
+ /*}*/
1581
+ #endif
1582
+ #ifndef YYNOERRORRECOVERY
1583
+ pParser->yyerrcnt = -1;
1584
+ #endif
1585
+ pParser->yytos = pParser->yystack;
1586
+ pParser->yystack[0].stateno = 0;
1587
+ pParser->yystack[0].major = 0;
1588
+ }
1589
+ }
1590
+
1591
+ /*
1592
+ ** Find the appropriate action for a parser given the terminal
1593
+ ** look-ahead token iLookAhead.
1594
+ */
1595
+ static unsigned int yy_find_shift_action(
1596
+ yyParser *pParser, /* The parser */
1597
+ YYCODETYPE iLookAhead /* The look-ahead token */
1598
+ ){
1599
+ int i;
1600
+ int stateno = pParser->yytos->stateno;
1601
+
1602
+ if( stateno>=YY_MIN_REDUCE ) return stateno;
1603
+ assert( stateno <= YY_SHIFT_COUNT );
1604
+ do{
1605
+ i = yy_shift_ofst[stateno];
1606
+ assert( iLookAhead!=YYNOCODE );
1607
+ i += iLookAhead;
1608
+ if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
1609
+ #ifdef YYFALLBACK
1610
+ YYCODETYPE iFallback; /* Fallback token */
1611
+ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
1612
+ && (iFallback = yyFallback[iLookAhead])!=0 ){
1613
+ #ifndef NDEBUG
1614
+ if( yyTraceFILE ){
1615
+ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
1616
+ yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
1617
+ }
1618
+ #endif
1619
+ assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */
1620
+ iLookAhead = iFallback;
1621
+ continue;
1622
+ }
1623
+ #endif
1624
+ #ifdef YYWILDCARD
1625
+ {
1626
+ int j = i - iLookAhead + YYWILDCARD;
1627
+ if(
1628
+ #if YY_SHIFT_MIN+YYWILDCARD<0
1629
+ j>=0 &&
1630
+ #endif
1631
+ #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
1632
+ j<YY_ACTTAB_COUNT &&
1633
+ #endif
1634
+ yy_lookahead[j]==YYWILDCARD && iLookAhead>0
1635
+ ){
1636
+ #ifndef NDEBUG
1637
+ if( yyTraceFILE ){
1638
+ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
1639
+ yyTracePrompt, yyTokenName[iLookAhead],
1640
+ yyTokenName[YYWILDCARD]);
1641
+ }
1642
+ #endif /* NDEBUG */
1643
+ return yy_action[j];
1644
+ }
1645
+ }
1646
+ #endif /* YYWILDCARD */
1647
+ return yy_default[stateno];
1648
+ }else{
1649
+ return yy_action[i];
1650
+ }
1651
+ }while(1);
1652
+ }
1653
+
1654
+ /*
1655
+ ** Find the appropriate action for a parser given the non-terminal
1656
+ ** look-ahead token iLookAhead.
1657
+ */
1658
+ static int yy_find_reduce_action(
1659
+ int stateno, /* Current state number */
1660
+ YYCODETYPE iLookAhead /* The look-ahead token */
1661
+ ){
1662
+ int i;
1663
+ #ifdef YYERRORSYMBOL
1664
+ if( stateno>YY_REDUCE_COUNT ){
1665
+ return yy_default[stateno];
1666
+ }
1667
+ #else
1668
+ assert( stateno<=YY_REDUCE_COUNT );
1669
+ #endif
1670
+ i = yy_reduce_ofst[stateno];
1671
+ assert( i!=YY_REDUCE_USE_DFLT );
1672
+ assert( iLookAhead!=YYNOCODE );
1673
+ i += iLookAhead;
1674
+ #ifdef YYERRORSYMBOL
1675
+ if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
1676
+ return yy_default[stateno];
1677
+ }
1678
+ #else
1679
+ assert( i>=0 && i<YY_ACTTAB_COUNT );
1680
+ assert( yy_lookahead[i]==iLookAhead );
1681
+ #endif
1682
+ return yy_action[i];
1683
+ }
1684
+
1685
+ /*
1686
+ ** The following routine is called if the stack overflows.
1687
+ */
1688
+ static void yyStackOverflow(yyParser *yypParser){
1689
+ ParseARG_FETCH;
1690
+ yypParser->yytos--;
1691
+ #ifndef NDEBUG
1692
+ if( yyTraceFILE ){
1693
+ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1694
+ }
1695
+ #endif
1696
+ while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
1697
+ /* Here code is inserted which will execute if the parser
1698
+ ** stack every overflows */
1699
+ /******** Begin %stack_overflow code ******************************************/
1700
+ /******** End %stack_overflow code ********************************************/
1701
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */
1702
+ }
1703
+
1704
+ /*
1705
+ ** Print tracing information for a SHIFT action
1706
+ */
1707
+ #ifndef NDEBUG
1708
+ static void yyTraceShift(yyParser *yypParser, int yyNewState){
1709
+ if( yyTraceFILE ){
1710
+ if( yyNewState<YYNSTATE ){
1711
+ fprintf(yyTraceFILE,"%sShift '%s', go to state %d\n",
1712
+ yyTracePrompt,yyTokenName[yypParser->yytos->major],
1713
+ yyNewState);
1714
+ }else{
1715
+ fprintf(yyTraceFILE,"%sShift '%s'\n",
1716
+ yyTracePrompt,yyTokenName[yypParser->yytos->major]);
1717
+ }
1718
+ }
1719
+ }
1720
+ #else
1721
+ # define yyTraceShift(X,Y)
1722
+ #endif
1723
+
1724
+ /*
1725
+ ** Perform a shift action.
1726
+ */
1727
+ static void yy_shift(
1728
+ yyParser *yypParser, /* The parser to be shifted */
1729
+ int yyNewState, /* The new state to shift in */
1730
+ int yyMajor, /* The major token to shift in */
1731
+ ParseTOKENTYPE yyMinor /* The minor token to shift in */
1732
+ ){
1733
+ yyStackEntry *yytos;
1734
+ yypParser->yytos++;
1735
+ #ifdef YYTRACKMAXSTACKDEPTH
1736
+ if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
1737
+ yypParser->yyhwm++;
1738
+ assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) );
1739
+ }
1740
+ #endif
1741
+ #if YYSTACKDEPTH>0
1742
+ if( yypParser->yytos>=&yypParser->yystack[YYSTACKDEPTH] ){
1743
+ yyStackOverflow(yypParser);
1744
+ return;
1745
+ }
1746
+ #else
1747
+ if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){
1748
+ if( yyGrowStack(yypParser) ){
1749
+ yyStackOverflow(yypParser);
1750
+ return;
1751
+ }
1752
+ }
1753
+ #endif
1754
+ if( yyNewState > YY_MAX_SHIFT ){
1755
+ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
1756
+ }
1757
+ yytos = yypParser->yytos;
1758
+ yytos->stateno = (YYACTIONTYPE)yyNewState;
1759
+ yytos->major = (YYCODETYPE)yyMajor;
1760
+ yytos->minor.yy0 = yyMinor;
1761
+ yyTraceShift(yypParser, yyNewState);
1762
+ }
1763
+
1764
+ /* The following table contains information about every rule that
1765
+ ** is used during the reduce.
1766
+ */
1767
+ static const struct {
1768
+ YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
1769
+ unsigned char nrhs; /* Number of right-hand side symbols in the rule */
1770
+ } yyRuleInfo[] = {
1771
+ { 113, 1 },
1772
+ { 113, 2 },
1773
+ { 114, 3 },
1774
+ { 114, 3 },
1775
+ { 114, 2 },
1776
+ { 114, 2 },
1777
+ { 114, 2 },
1778
+ { 114, 2 },
1779
+ { 114, 2 },
1780
+ { 114, 2 },
1781
+ { 114, 1 },
1782
+ { 114, 1 },
1783
+ { 114, 1 },
1784
+ { 114, 3 },
1785
+ { 114, 1 },
1786
+ { 118, 2 },
1787
+ { 118, 2 },
1788
+ { 114, 1 },
1789
+ { 114, 1 },
1790
+ { 114, 1 },
1791
+ { 114, 1 },
1792
+ { 116, 2 },
1793
+ { 116, 3 },
1794
+ { 116, 2 },
1795
+ { 116, 1 },
1796
+ { 114, 1 },
1797
+ { 114, 2 },
1798
+ { 117, 2 },
1799
+ { 117, 3 },
1800
+ { 117, 2 },
1801
+ { 117, 1 },
1802
+ { 114, 1 },
1803
+ { 114, 2 },
1804
+ { 115, 2 },
1805
+ { 115, 3 },
1806
+ { 115, 2 },
1807
+ { 115, 1 },
1808
+ { 114, 1 },
1809
+ { 114, 2 },
1810
+ { 114, 2 },
1811
+ { 119, 1 },
1812
+ { 119, 1 },
1813
+ { 121, 2 },
1814
+ { 121, 3 },
1815
+ { 121, 2 },
1816
+ { 121, 1 },
1817
+ { 114, 1 },
1818
+ { 114, 2 },
1819
+ { 122, 1 },
1820
+ { 122, 1 },
1821
+ { 123, 2 },
1822
+ { 123, 3 },
1823
+ { 123, 2 },
1824
+ { 123, 1 },
1825
+ { 114, 1 },
1826
+ { 114, 2 },
1827
+ { 124, 1 },
1828
+ { 124, 1 },
1829
+ { 125, 2 },
1830
+ { 125, 3 },
1831
+ { 125, 2 },
1832
+ { 125, 1 },
1833
+ { 114, 1 },
1834
+ { 114, 2 },
1835
+ { 114, 2 },
1836
+ { 126, 1 },
1837
+ { 126, 1 },
1838
+ { 127, 2 },
1839
+ { 127, 3 },
1840
+ { 127, 2 },
1841
+ { 127, 1 },
1842
+ { 114, 1 },
1843
+ { 114, 2 },
1844
+ { 128, 1 },
1845
+ { 128, 1 },
1846
+ { 129, 2 },
1847
+ { 129, 3 },
1848
+ { 129, 2 },
1849
+ { 129, 1 },
1850
+ { 114, 1 },
1851
+ { 114, 2 },
1852
+ { 130, 1 },
1853
+ { 130, 1 },
1854
+ { 131, 2 },
1855
+ { 131, 3 },
1856
+ { 131, 2 },
1857
+ { 131, 1 },
1858
+ { 114, 1 },
1859
+ { 114, 2 },
1860
+ { 114, 2 },
1861
+ { 132, 1 },
1862
+ { 132, 1 },
1863
+ { 133, 2 },
1864
+ { 133, 3 },
1865
+ { 133, 2 },
1866
+ { 133, 1 },
1867
+ { 114, 1 },
1868
+ { 114, 2 },
1869
+ { 134, 1 },
1870
+ { 134, 1 },
1871
+ { 135, 2 },
1872
+ { 135, 3 },
1873
+ { 135, 2 },
1874
+ { 135, 1 },
1875
+ { 114, 1 },
1876
+ { 114, 2 },
1877
+ { 136, 1 },
1878
+ { 136, 1 },
1879
+ { 137, 2 },
1880
+ { 137, 3 },
1881
+ { 137, 2 },
1882
+ { 137, 1 },
1883
+ { 114, 1 },
1884
+ { 114, 2 },
1885
+ { 114, 2 },
1886
+ { 138, 2 },
1887
+ { 138, 1 },
1888
+ { 139, 3 },
1889
+ { 139, 4 },
1890
+ { 139, 3 },
1891
+ { 139, 2 },
1892
+ { 139, 1 },
1893
+ { 114, 1 },
1894
+ { 114, 2 },
1895
+ { 140, 2 },
1896
+ { 140, 1 },
1897
+ { 141, 3 },
1898
+ { 141, 4 },
1899
+ { 141, 3 },
1900
+ { 141, 2 },
1901
+ { 141, 1 },
1902
+ { 114, 1 },
1903
+ { 114, 2 },
1904
+ { 142, 2 },
1905
+ { 142, 1 },
1906
+ { 120, 3 },
1907
+ { 120, 4 },
1908
+ { 120, 3 },
1909
+ { 120, 2 },
1910
+ { 120, 1 },
1911
+ { 114, 1 },
1912
+ { 114, 2 },
1913
+ { 114, 2 },
1914
+ { 143, 2 },
1915
+ { 143, 1 },
1916
+ { 143, 1 },
1917
+ { 145, 2 },
1918
+ { 145, 1 },
1919
+ { 145, 1 },
1920
+ { 144, 2 },
1921
+ { 144, 1 },
1922
+ { 144, 1 },
1923
+ { 149, 1 },
1924
+ { 149, 1 },
1925
+ { 152, 1 },
1926
+ { 152, 1 },
1927
+ { 154, 1 },
1928
+ { 154, 1 },
1929
+ { 153, 1 },
1930
+ { 153, 1 },
1931
+ { 153, 1 },
1932
+ { 153, 1 },
1933
+ { 153, 1 },
1934
+ { 153, 1 },
1935
+ { 153, 1 },
1936
+ { 153, 1 },
1937
+ { 153, 1 },
1938
+ { 157, 1 },
1939
+ { 157, 1 },
1940
+ { 157, 1 },
1941
+ { 157, 1 },
1942
+ { 157, 1 },
1943
+ { 157, 1 },
1944
+ { 157, 1 },
1945
+ { 157, 1 },
1946
+ { 157, 1 },
1947
+ { 157, 1 },
1948
+ { 146, 1 },
1949
+ { 146, 1 },
1950
+ { 146, 1 },
1951
+ { 146, 1 },
1952
+ { 146, 1 },
1953
+ { 146, 1 },
1954
+ { 146, 1 },
1955
+ { 146, 1 },
1956
+ { 147, 1 },
1957
+ { 147, 1 },
1958
+ { 147, 1 },
1959
+ { 147, 1 },
1960
+ { 147, 1 },
1961
+ { 147, 1 },
1962
+ { 147, 1 },
1963
+ { 147, 1 },
1964
+ { 147, 1 },
1965
+ { 155, 1 },
1966
+ { 155, 1 },
1967
+ { 155, 1 },
1968
+ { 155, 1 },
1969
+ { 155, 1 },
1970
+ { 155, 1 },
1971
+ { 155, 1 },
1972
+ { 155, 1 },
1973
+ { 155, 1 },
1974
+ { 155, 1 },
1975
+ { 148, 1 },
1976
+ { 148, 1 },
1977
+ { 148, 1 },
1978
+ { 148, 1 },
1979
+ { 148, 1 },
1980
+ { 148, 1 },
1981
+ { 148, 1 },
1982
+ { 148, 1 },
1983
+ { 150, 1 },
1984
+ { 150, 1 },
1985
+ { 150, 1 },
1986
+ { 150, 1 },
1987
+ { 150, 1 },
1988
+ { 150, 1 },
1989
+ { 150, 1 },
1990
+ { 150, 1 },
1991
+ { 150, 1 },
1992
+ { 156, 1 },
1993
+ { 156, 1 },
1994
+ { 156, 1 },
1995
+ { 156, 1 },
1996
+ { 156, 1 },
1997
+ { 156, 1 },
1998
+ { 156, 1 },
1999
+ { 156, 1 },
2000
+ { 156, 1 },
2001
+ { 156, 1 },
2002
+ { 151, 1 },
2003
+ { 151, 1 },
2004
+ { 151, 1 },
2005
+ { 151, 1 },
2006
+ { 151, 1 },
2007
+ { 151, 1 },
2008
+ { 151, 1 },
2009
+ { 151, 1 },
2010
+ { 111, 1 },
2011
+ { 112, 2 },
2012
+ { 112, 1 },
2013
+ };
2014
+
2015
+ static void yy_accept(yyParser*); /* Forward Declaration */
2016
+
2017
+ /*
2018
+ ** Perform a reduce action and the shift that must immediately
2019
+ ** follow the reduce.
2020
+ */
2021
+ static void yy_reduce(
2022
+ yyParser *yypParser, /* The parser */
2023
+ unsigned int yyruleno /* Number of the rule by which to reduce */
2024
+ ){
2025
+ int yygoto; /* The next state */
2026
+ int yyact; /* The next action */
2027
+ yyStackEntry *yymsp; /* The top of the parser's stack */
2028
+ int yysize; /* Amount to pop the stack */
2029
+ ParseARG_FETCH;
2030
+ yymsp = yypParser->yytos;
2031
+ #ifndef NDEBUG
2032
+ if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
2033
+ yysize = yyRuleInfo[yyruleno].nrhs;
2034
+ fprintf(yyTraceFILE, "%sReduce [%s], go to state %d.\n", yyTracePrompt,
2035
+ yyRuleName[yyruleno], yymsp[-yysize].stateno);
2036
+ }
2037
+ #endif /* NDEBUG */
2038
+
2039
+ /* Check that the stack is large enough to grow by a single entry
2040
+ ** if the RHS of the rule is empty. This ensures that there is room
2041
+ ** enough on the stack to push the LHS value */
2042
+ if( yyRuleInfo[yyruleno].nrhs==0 ){
2043
+ #ifdef YYTRACKMAXSTACKDEPTH
2044
+ if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){
2045
+ yypParser->yyhwm++;
2046
+ assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack));
2047
+ }
2048
+ #endif
2049
+ #if YYSTACKDEPTH>0
2050
+ if( yypParser->yytos>=&yypParser->yystack[YYSTACKDEPTH-1] ){
2051
+ yyStackOverflow(yypParser);
2052
+ return;
2053
+ }
2054
+ #else
2055
+ if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){
2056
+ if( yyGrowStack(yypParser) ){
2057
+ yyStackOverflow(yypParser);
2058
+ return;
2059
+ }
2060
+ yymsp = yypParser->yytos;
2061
+ }
2062
+ #endif
2063
+ }
2064
+
2065
+ switch( yyruleno ){
2066
+ /* Beginning here are the reduction cases. A typical example
2067
+ ** follows:
2068
+ ** case 0:
2069
+ ** #line <lineno> <grammarfile>
2070
+ ** { ... } // User supplied code
2071
+ ** #line <lineno> <thisfile>
2072
+ ** break;
2073
+ */
2074
+ /********** Begin reduce actions **********************************************/
2075
+ YYMINORTYPE yylhsminor;
2076
+ case 0: /* number ::= final_number */
2077
+ #line 217 "parser.yy"
2078
+ {
2079
+ if (!yymsp[0].minor.yy0.leave_alone) {
2080
+ insertYYSTYPE(&(state->yystypeList), yymsp[0].minor.yy0);
2081
+ }
2082
+ }
2083
+ #line 2084 "parser.c"
2084
+ break;
2085
+ case 1: /* number ::= NEGATIVE final_number */
2086
+ #line 222 "parser.yy"
2087
+ {
2088
+ yymsp[0].minor.yy0.dbl = -yymsp[0].minor.yy0.dbl;
2089
+ yymsp[0].minor.yy0.begin = yymsp[-1].minor.yy0.begin;
2090
+ yymsp[0].minor.yy0.end = yymsp[0].minor.yy0.end;
2091
+ insertYYSTYPE(&state->yystypeList, yymsp[0].minor.yy0);
2092
+ }
2093
+ #line 2094 "parser.c"
2094
+ break;
2095
+ case 2: /* final_number ::= less_than_quadrillion AND_A QUARTER */
2096
+ #line 229 "parser.yy"
2097
+ { COPY_YYSTYPE_FRAC_SET_MULT(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, 1.0, 4.0); }
2098
+ #line 2099 "parser.c"
2099
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2100
+ break;
2101
+ case 3: /* final_number ::= less_than_quadrillion AND_A HALF */
2102
+ #line 230 "parser.yy"
2103
+ { COPY_YYSTYPE_FRAC_SET_MULT(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, 1.0, 2.0); }
2104
+ #line 2105 "parser.c"
2105
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2106
+ break;
2107
+ case 4: /* final_number ::= less_than_quadrillion QUARTERS */
2108
+ #line 232 "parser.yy"
2109
+ { COPY_YYSTYPE_FRAC_SET(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, yymsp[-1].minor.yy0.dbl, 4.0); }
2110
+ #line 2111 "parser.c"
2111
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2112
+ break;
2113
+ case 5: /* final_number ::= ONE QUARTER */
2114
+ case 6: /* final_number ::= A QUARTER */ yytestcase(yyruleno==6);
2115
+ #line 233 "parser.yy"
2116
+ { COPY_YYSTYPE_FRAC_SET(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, 1.0, 4.0); }
2117
+ #line 2118 "parser.c"
2118
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2119
+ break;
2120
+ case 7: /* final_number ::= less_than_quadrillion HALVES */
2121
+ #line 236 "parser.yy"
2122
+ { COPY_YYSTYPE_FRAC_SET(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, yymsp[-1].minor.yy0.dbl, 2.0); }
2123
+ #line 2124 "parser.c"
2124
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2125
+ break;
2126
+ case 8: /* final_number ::= ONE HALF */
2127
+ #line 237 "parser.yy"
2128
+ { COPY_YYSTYPE_FRAC_SET(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, 1.0, 2.0); }
2129
+ #line 2130 "parser.c"
2130
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2131
+ break;
2132
+ case 9: /* final_number ::= A HALF */
2133
+ #line 238 "parser.yy"
2134
+ { COPY_YYSTYPE_FRAC_SET(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, 1.0, 2.0); }
2135
+ #line 2136 "parser.c"
2136
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2137
+ break;
2138
+ case 10: /* final_number ::= less_than_quadrillion */
2139
+ case 36: /* less_than_quadrillion ::= less_than_trillion */ yytestcase(yyruleno==36);
2140
+ case 56: /* less_than_trillion_end_only ::= less_than_trillion */ yytestcase(yyruleno==56);
2141
+ case 57: /* less_than_trillion_end_only ::= less_than_billion_end_only */ yytestcase(yyruleno==57);
2142
+ case 61: /* less_than_trillion ::= less_than_billion */ yytestcase(yyruleno==61);
2143
+ case 81: /* less_than_billion_end_only ::= less_than_billion */ yytestcase(yyruleno==81);
2144
+ case 82: /* less_than_billion_end_only ::= less_than_million_end_only */ yytestcase(yyruleno==82);
2145
+ case 86: /* less_than_billion ::= less_than_million */ yytestcase(yyruleno==86);
2146
+ case 106: /* less_than_million_end_only ::= less_than_million */ yytestcase(yyruleno==106);
2147
+ case 107: /* less_than_million_end_only ::= less_than_thousand_end_only */ yytestcase(yyruleno==107);
2148
+ case 111: /* less_than_million ::= less_than_thousand */ yytestcase(yyruleno==111);
2149
+ case 134: /* less_than_thousand_end_only ::= less_than_thousand */ yytestcase(yyruleno==134);
2150
+ case 139: /* less_than_thousand ::= less_than_hundred */ yytestcase(yyruleno==139);
2151
+ case 150: /* less_than_hundred ::= tens */ yytestcase(yyruleno==150);
2152
+ case 151: /* less_than_hundred ::= less_than_twenty */ yytestcase(yyruleno==151);
2153
+ case 156: /* less_than_twenty ::= ten_to_19 */ yytestcase(yyruleno==156);
2154
+ case 157: /* less_than_twenty ::= less_than_ten */ yytestcase(yyruleno==157);
2155
+ #line 240 "parser.yy"
2156
+ { COPY_YYSTYPE_BE_DBL(yylhsminor.yy0, yymsp[0].minor.yy0); }
2157
+ #line 2158 "parser.c"
2158
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2159
+ break;
2160
+ case 11: /* final_number ::= less_than_quadrillionth */
2161
+ case 12: /* final_number ::= less_than_quadrillionths */ yytestcase(yyruleno==12);
2162
+ case 24: /* less_than_quadrillionth ::= less_than_trillionth */ yytestcase(yyruleno==24);
2163
+ case 30: /* less_than_quadrillionths ::= less_than_trillionths */ yytestcase(yyruleno==30);
2164
+ case 40: /* less_than_trillionth_end_only ::= less_than_trillionth */ yytestcase(yyruleno==40);
2165
+ case 41: /* less_than_trillionth_end_only ::= less_than_billionth_end_only */ yytestcase(yyruleno==41);
2166
+ case 45: /* less_than_trillionth ::= less_than_billionth */ yytestcase(yyruleno==45);
2167
+ case 48: /* less_than_trillionths_end_only ::= less_than_trillionths */ yytestcase(yyruleno==48);
2168
+ case 49: /* less_than_trillionths_end_only ::= less_than_billionths_end_only */ yytestcase(yyruleno==49);
2169
+ case 53: /* less_than_trillionths ::= less_than_billionths */ yytestcase(yyruleno==53);
2170
+ case 65: /* less_than_billionth_end_only ::= less_than_billionth */ yytestcase(yyruleno==65);
2171
+ case 66: /* less_than_billionth_end_only ::= less_than_millionth_end_only */ yytestcase(yyruleno==66);
2172
+ case 70: /* less_than_billionth ::= less_than_millionth */ yytestcase(yyruleno==70);
2173
+ case 73: /* less_than_billionths_end_only ::= less_than_billionths */ yytestcase(yyruleno==73);
2174
+ case 74: /* less_than_billionths_end_only ::= less_than_millionths_end_only */ yytestcase(yyruleno==74);
2175
+ case 78: /* less_than_billionths ::= less_than_millionths */ yytestcase(yyruleno==78);
2176
+ case 90: /* less_than_millionth_end_only ::= less_than_millionth */ yytestcase(yyruleno==90);
2177
+ case 91: /* less_than_millionth_end_only ::= less_than_thousandth_end_only */ yytestcase(yyruleno==91);
2178
+ case 95: /* less_than_millionth ::= less_than_thousandth */ yytestcase(yyruleno==95);
2179
+ case 98: /* less_than_millionths_end_only ::= less_than_millionths */ yytestcase(yyruleno==98);
2180
+ case 99: /* less_than_millionths_end_only ::= less_than_thousandths_end_only */ yytestcase(yyruleno==99);
2181
+ case 103: /* less_than_millionths ::= less_than_thousandths */ yytestcase(yyruleno==103);
2182
+ case 116: /* less_than_thousandth_end_only ::= less_than_thousandth */ yytestcase(yyruleno==116);
2183
+ case 121: /* less_than_thousandth ::= less_than_hundredth */ yytestcase(yyruleno==121);
2184
+ case 125: /* less_than_thousandths_end_only ::= less_than_thousandths */ yytestcase(yyruleno==125);
2185
+ case 130: /* less_than_thousandths ::= less_than_hundredths */ yytestcase(yyruleno==130);
2186
+ case 144: /* less_than_hundredth ::= tenth */ yytestcase(yyruleno==144);
2187
+ case 145: /* less_than_hundredth ::= less_than_twentieth */ yytestcase(yyruleno==145);
2188
+ case 147: /* less_than_hundredths ::= tenths */ yytestcase(yyruleno==147);
2189
+ case 148: /* less_than_hundredths ::= less_than_twentieths */ yytestcase(yyruleno==148);
2190
+ case 152: /* less_than_twentieth ::= tenth_to_19th */ yytestcase(yyruleno==152);
2191
+ case 153: /* less_than_twentieth ::= less_than_tenth */ yytestcase(yyruleno==153);
2192
+ case 154: /* less_than_twentieths ::= tenths_to_19ths */ yytestcase(yyruleno==154);
2193
+ case 155: /* less_than_twentieths ::= less_than_tenths */ yytestcase(yyruleno==155);
2194
+ #line 241 "parser.yy"
2195
+ { COPY_YYSTYPE_BE_DBL_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0); }
2196
+ #line 2197 "parser.c"
2197
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2198
+ break;
2199
+ case 13: /* final_number ::= less_than_quadrillion AND fraction */
2200
+ #line 244 "parser.yy"
2201
+ { COPY_YYSTYPE_FRAC_SET_MULT(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, yymsp[0].minor.yy0.frac_num, yymsp[0].minor.yy0.frac_denom); }
2202
+ #line 2203 "parser.c"
2203
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2204
+ break;
2205
+ case 14: /* final_number ::= fraction */
2206
+ #line 247 "parser.yy"
2207
+ { COPY_YYSTYPE_BE(yylhsminor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0.frac_num = yymsp[0].minor.yy0.frac_num; yylhsminor.yy0.frac_denom = yymsp[0].minor.yy0.frac_denom; yylhsminor.yy0.is_frac = yymsp[0].minor.yy0.is_frac; }
2208
+ #line 2209 "parser.c"
2209
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2210
+ break;
2211
+ case 15: /* fraction ::= A less_than_quadrillionth */
2212
+ case 16: /* fraction ::= AN less_than_quadrillionth */ yytestcase(yyruleno==16);
2213
+ #line 259 "parser.yy"
2214
+ { COPY_YYSTYPE_FRAC_SET(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, 1.0, yymsp[0].minor.yy0.dbl); }
2215
+ #line 2216 "parser.c"
2216
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2217
+ break;
2218
+ case 17: /* final_number ::= ZERO_WHOLE_NUMBER */
2219
+ #line 265 "parser.yy"
2220
+ { COPY_YYSTYPE_BE(yylhsminor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0.dbl = yymsp[0].minor.yy0.dbl; yylhsminor.yy0.leave_alone = true; }
2221
+ #line 2222 "parser.c"
2222
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2223
+ break;
2224
+ case 18: /* final_number ::= WHOLE_NUMBER */
2225
+ #line 266 "parser.yy"
2226
+ { COPY_YYSTYPE_BE(yylhsminor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0.dbl = yymsp[0].minor.yy0.dbl; }
2227
+ #line 2228 "parser.c"
2228
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2229
+ break;
2230
+ case 19: /* final_number ::= DECIMAL */
2231
+ #line 267 "parser.yy"
2232
+ { COPY_YYSTYPE_BE(yylhsminor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0.dbl = yymsp[0].minor.yy0.dbl; yylhsminor.yy0.is_dbl = true; }
2233
+ #line 2234 "parser.c"
2234
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2235
+ break;
2236
+ case 20: /* final_number ::= ZERO */
2237
+ #line 268 "parser.yy"
2238
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 0.0); }
2239
+ #line 2240 "parser.c"
2240
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2241
+ break;
2242
+ case 21: /* less_than_quadrillionth ::= TRILLION less_than_trillionth_end_only */
2243
+ case 27: /* less_than_quadrillionths ::= TRILLION less_than_trillionths_end_only */ yytestcase(yyruleno==27);
2244
+ #line 274 "parser.yy"
2245
+ { COPY_YYSTYPE_BE_ADD_SUFF_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2246
+ #line 2247 "parser.c"
2247
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2248
+ break;
2249
+ case 22: /* less_than_quadrillionth ::= less_than_thousand TRILLION less_than_trillionth_end_only */
2250
+ case 28: /* less_than_quadrillionths ::= less_than_thousand TRILLION less_than_trillionths_end_only */ yytestcase(yyruleno==28);
2251
+ #line 275 "parser.yy"
2252
+ { COPY_YYSTYPE_BE_MUL_ADD_SUFF(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2253
+ #line 2254 "parser.c"
2254
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2255
+ break;
2256
+ case 23: /* less_than_quadrillionth ::= less_than_thousand TRILLIONTH */
2257
+ #line 276 "parser.yy"
2258
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F, TH); }
2259
+ #line 2260 "parser.c"
2260
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2261
+ break;
2262
+ case 25: /* final_number ::= TRILLIONTH */
2263
+ #line 279 "parser.yy"
2264
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, TRILLION_F, TH); }
2265
+ #line 2266 "parser.c"
2266
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2267
+ break;
2268
+ case 26: /* final_number ::= DECIMAL TRILLIONTH */
2269
+ #line 280 "parser.yy"
2270
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F, TH); }
2271
+ #line 2272 "parser.c"
2272
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2273
+ break;
2274
+ case 29: /* less_than_quadrillionths ::= less_than_thousand TRILLIONTHS */
2275
+ #line 286 "parser.yy"
2276
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F, THS); }
2277
+ #line 2278 "parser.c"
2278
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2279
+ break;
2280
+ case 31: /* final_number ::= TRILLIONTHS */
2281
+ #line 289 "parser.yy"
2282
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, TRILLION_F, THS); }
2283
+ #line 2284 "parser.c"
2284
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2285
+ break;
2286
+ case 32: /* final_number ::= DECIMAL TRILLIONTHS */
2287
+ #line 290 "parser.yy"
2288
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F, THS); }
2289
+ #line 2290 "parser.c"
2290
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2291
+ break;
2292
+ case 33: /* less_than_quadrillion ::= TRILLION less_than_trillion_end_only */
2293
+ #line 296 "parser.yy"
2294
+ { COPY_YYSTYPE_BE_ADD_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2295
+ #line 2296 "parser.c"
2296
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2297
+ break;
2298
+ case 34: /* less_than_quadrillion ::= less_than_thousand TRILLION less_than_trillion_end_only */
2299
+ #line 297 "parser.yy"
2300
+ { COPY_YYSTYPE_BE_MUL_ADD(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2301
+ #line 2302 "parser.c"
2302
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2303
+ break;
2304
+ case 35: /* less_than_quadrillion ::= less_than_thousand TRILLION */
2305
+ case 39: /* final_number ::= WHOLE_NUMBER TRILLION */ yytestcase(yyruleno==39);
2306
+ #line 298 "parser.yy"
2307
+ { COPY_YYSTYPE_BE_MUL(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2308
+ #line 2309 "parser.c"
2309
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2310
+ break;
2311
+ case 37: /* final_number ::= TRILLION */
2312
+ #line 301 "parser.yy"
2313
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2314
+ #line 2315 "parser.c"
2315
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2316
+ break;
2317
+ case 38: /* final_number ::= DECIMAL TRILLION */
2318
+ #line 302 "parser.yy"
2319
+ { COPY_YYSTYPE_DBL_NUM(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, TRILLION_F); }
2320
+ #line 2321 "parser.c"
2321
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2322
+ break;
2323
+ case 42: /* less_than_trillionth ::= BILLION less_than_billionth_end_only */
2324
+ case 50: /* less_than_trillionths ::= BILLION less_than_billionths_end_only */ yytestcase(yyruleno==50);
2325
+ #line 312 "parser.yy"
2326
+ { COPY_YYSTYPE_BE_ADD_SUFF_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2327
+ #line 2328 "parser.c"
2328
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2329
+ break;
2330
+ case 43: /* less_than_trillionth ::= less_than_thousand BILLION less_than_billionth_end_only */
2331
+ case 51: /* less_than_trillionths ::= less_than_thousand BILLION less_than_billionths_end_only */ yytestcase(yyruleno==51);
2332
+ #line 313 "parser.yy"
2333
+ { COPY_YYSTYPE_BE_MUL_ADD_SUFF(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2334
+ #line 2335 "parser.c"
2335
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2336
+ break;
2337
+ case 44: /* less_than_trillionth ::= less_than_thousand BILLIONTH */
2338
+ #line 314 "parser.yy"
2339
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F, TH); }
2340
+ #line 2341 "parser.c"
2341
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2342
+ break;
2343
+ case 46: /* final_number ::= BILLIONTH */
2344
+ #line 317 "parser.yy"
2345
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, BILLION_F, TH); }
2346
+ #line 2347 "parser.c"
2347
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2348
+ break;
2349
+ case 47: /* final_number ::= DECIMAL BILLIONTH */
2350
+ #line 318 "parser.yy"
2351
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F, TH); }
2352
+ #line 2353 "parser.c"
2353
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2354
+ break;
2355
+ case 52: /* less_than_trillionths ::= less_than_thousand BILLIONTHS */
2356
+ #line 327 "parser.yy"
2357
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F, THS); }
2358
+ #line 2359 "parser.c"
2359
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2360
+ break;
2361
+ case 54: /* final_number ::= BILLIONTHS */
2362
+ #line 330 "parser.yy"
2363
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, BILLION_F, THS); }
2364
+ #line 2365 "parser.c"
2365
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2366
+ break;
2367
+ case 55: /* final_number ::= DECIMAL BILLIONTHS */
2368
+ #line 331 "parser.yy"
2369
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F, THS); }
2370
+ #line 2371 "parser.c"
2371
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2372
+ break;
2373
+ case 58: /* less_than_trillion ::= BILLION less_than_billion_end_only */
2374
+ #line 340 "parser.yy"
2375
+ { COPY_YYSTYPE_BE_ADD_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2376
+ #line 2377 "parser.c"
2377
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2378
+ break;
2379
+ case 59: /* less_than_trillion ::= less_than_thousand BILLION less_than_billion_end_only */
2380
+ #line 341 "parser.yy"
2381
+ { COPY_YYSTYPE_BE_MUL_ADD(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2382
+ #line 2383 "parser.c"
2383
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2384
+ break;
2385
+ case 60: /* less_than_trillion ::= less_than_thousand BILLION */
2386
+ case 64: /* final_number ::= WHOLE_NUMBER BILLION */ yytestcase(yyruleno==64);
2387
+ #line 342 "parser.yy"
2388
+ { COPY_YYSTYPE_BE_MUL(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2389
+ #line 2390 "parser.c"
2390
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2391
+ break;
2392
+ case 62: /* final_number ::= BILLION */
2393
+ #line 345 "parser.yy"
2394
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2395
+ #line 2396 "parser.c"
2396
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2397
+ break;
2398
+ case 63: /* final_number ::= DECIMAL BILLION */
2399
+ #line 346 "parser.yy"
2400
+ { COPY_YYSTYPE_DBL_NUM(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, BILLION_F); }
2401
+ #line 2402 "parser.c"
2402
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2403
+ break;
2404
+ case 67: /* less_than_billionth ::= MILLION less_than_millionth_end_only */
2405
+ case 75: /* less_than_billionths ::= MILLION less_than_millionths_end_only */ yytestcase(yyruleno==75);
2406
+ #line 356 "parser.yy"
2407
+ { COPY_YYSTYPE_BE_ADD_SUFF_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2408
+ #line 2409 "parser.c"
2409
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2410
+ break;
2411
+ case 68: /* less_than_billionth ::= less_than_thousand MILLION less_than_millionth_end_only */
2412
+ case 76: /* less_than_billionths ::= less_than_thousand MILLION less_than_millionths_end_only */ yytestcase(yyruleno==76);
2413
+ #line 357 "parser.yy"
2414
+ { COPY_YYSTYPE_BE_MUL_ADD_SUFF(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2415
+ #line 2416 "parser.c"
2416
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2417
+ break;
2418
+ case 69: /* less_than_billionth ::= less_than_thousand MILLIONTH */
2419
+ #line 358 "parser.yy"
2420
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F, TH); }
2421
+ #line 2422 "parser.c"
2422
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2423
+ break;
2424
+ case 71: /* final_number ::= MILLIONTH */
2425
+ #line 361 "parser.yy"
2426
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, MILLION_F, TH); }
2427
+ #line 2428 "parser.c"
2428
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2429
+ break;
2430
+ case 72: /* final_number ::= DECIMAL MILLIONTH */
2431
+ #line 362 "parser.yy"
2432
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F, TH); }
2433
+ #line 2434 "parser.c"
2434
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2435
+ break;
2436
+ case 77: /* less_than_billionths ::= less_than_thousand MILLIONTHS */
2437
+ #line 371 "parser.yy"
2438
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F, THS); }
2439
+ #line 2440 "parser.c"
2440
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2441
+ break;
2442
+ case 79: /* final_number ::= MILLIONTHS */
2443
+ #line 374 "parser.yy"
2444
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, MILLION_F, THS); }
2445
+ #line 2446 "parser.c"
2446
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2447
+ break;
2448
+ case 80: /* final_number ::= DECIMAL MILLIONTHS */
2449
+ #line 375 "parser.yy"
2450
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F, THS); }
2451
+ #line 2452 "parser.c"
2452
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2453
+ break;
2454
+ case 83: /* less_than_billion ::= MILLION less_than_million_end_only */
2455
+ #line 384 "parser.yy"
2456
+ { COPY_YYSTYPE_BE_ADD_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2457
+ #line 2458 "parser.c"
2458
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2459
+ break;
2460
+ case 84: /* less_than_billion ::= less_than_thousand MILLION less_than_million_end_only */
2461
+ #line 385 "parser.yy"
2462
+ { COPY_YYSTYPE_BE_MUL_ADD(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2463
+ #line 2464 "parser.c"
2464
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2465
+ break;
2466
+ case 85: /* less_than_billion ::= less_than_thousand MILLION */
2467
+ case 89: /* final_number ::= WHOLE_NUMBER MILLION */ yytestcase(yyruleno==89);
2468
+ #line 386 "parser.yy"
2469
+ { COPY_YYSTYPE_BE_MUL(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2470
+ #line 2471 "parser.c"
2471
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2472
+ break;
2473
+ case 87: /* final_number ::= MILLION */
2474
+ #line 389 "parser.yy"
2475
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2476
+ #line 2477 "parser.c"
2477
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2478
+ break;
2479
+ case 88: /* final_number ::= DECIMAL MILLION */
2480
+ #line 390 "parser.yy"
2481
+ { COPY_YYSTYPE_DBL_NUM(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, MILLION_F); }
2482
+ #line 2483 "parser.c"
2483
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2484
+ break;
2485
+ case 92: /* less_than_millionth ::= THOUSAND less_than_thousandth_end_only */
2486
+ case 100: /* less_than_millionths ::= THOUSAND less_than_thousandths_end_only */ yytestcase(yyruleno==100);
2487
+ #line 400 "parser.yy"
2488
+ { COPY_YYSTYPE_BE_ADD_SUFF_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2489
+ #line 2490 "parser.c"
2490
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2491
+ break;
2492
+ case 93: /* less_than_millionth ::= less_than_thousand THOUSAND less_than_thousandth_end_only */
2493
+ case 101: /* less_than_millionths ::= less_than_thousand THOUSAND less_than_thousandths_end_only */ yytestcase(yyruleno==101);
2494
+ #line 401 "parser.yy"
2495
+ { COPY_YYSTYPE_BE_MUL_ADD_SUFF(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2496
+ #line 2497 "parser.c"
2497
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2498
+ break;
2499
+ case 94: /* less_than_millionth ::= less_than_thousand THOUSANDTH */
2500
+ #line 402 "parser.yy"
2501
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F, TH); }
2502
+ #line 2503 "parser.c"
2503
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2504
+ break;
2505
+ case 96: /* final_number ::= THOUSANDTH */
2506
+ #line 405 "parser.yy"
2507
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, THOUSAND_F, TH); }
2508
+ #line 2509 "parser.c"
2509
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2510
+ break;
2511
+ case 97: /* final_number ::= DECIMAL THOUSANDTH */
2512
+ #line 406 "parser.yy"
2513
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F, TH); }
2514
+ #line 2515 "parser.c"
2515
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2516
+ break;
2517
+ case 102: /* less_than_millionths ::= less_than_thousand THOUSANDTHS */
2518
+ #line 415 "parser.yy"
2519
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F, THS); }
2520
+ #line 2521 "parser.c"
2521
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2522
+ break;
2523
+ case 104: /* final_number ::= THOUSANDTHS */
2524
+ #line 418 "parser.yy"
2525
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, THOUSAND_F, THS); }
2526
+ #line 2527 "parser.c"
2527
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2528
+ break;
2529
+ case 105: /* final_number ::= DECIMAL THOUSANDTHS */
2530
+ #line 419 "parser.yy"
2531
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F, THS); }
2532
+ #line 2533 "parser.c"
2533
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2534
+ break;
2535
+ case 108: /* less_than_million ::= THOUSAND less_than_thousand_end_only */
2536
+ #line 428 "parser.yy"
2537
+ { COPY_YYSTYPE_BE_ADD_VALUE(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2538
+ #line 2539 "parser.c"
2539
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2540
+ break;
2541
+ case 109: /* less_than_million ::= less_than_thousand THOUSAND less_than_thousand_end_only */
2542
+ #line 429 "parser.yy"
2543
+ { COPY_YYSTYPE_BE_MUL_ADD(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2544
+ #line 2545 "parser.c"
2545
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2546
+ break;
2547
+ case 110: /* less_than_million ::= less_than_thousand THOUSAND */
2548
+ case 114: /* final_number ::= WHOLE_NUMBER THOUSAND */ yytestcase(yyruleno==114);
2549
+ #line 430 "parser.yy"
2550
+ { COPY_YYSTYPE_BE_MUL(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2551
+ #line 2552 "parser.c"
2552
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2553
+ break;
2554
+ case 112: /* final_number ::= THOUSAND */
2555
+ #line 433 "parser.yy"
2556
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2557
+ #line 2558 "parser.c"
2558
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2559
+ break;
2560
+ case 113: /* final_number ::= DECIMAL THOUSAND */
2561
+ #line 434 "parser.yy"
2562
+ { COPY_YYSTYPE_DBL_NUM(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, THOUSAND_F); }
2563
+ #line 2564 "parser.c"
2564
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2565
+ break;
2566
+ case 115: /* less_than_thousandth_end_only ::= AND less_than_hundredth */
2567
+ case 124: /* less_than_thousandths_end_only ::= AND less_than_hundredths */ yytestcase(yyruleno==124);
2568
+ #line 441 "parser.yy"
2569
+ { COPY_YYSTYPE_BE_DBL_SUFF(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
2570
+ #line 2571 "parser.c"
2571
+ break;
2572
+ case 117: /* less_than_thousandth ::= HUNDRED AND less_than_hundredth */
2573
+ case 126: /* less_than_thousandths ::= HUNDRED AND less_than_hundredths */ yytestcase(yyruleno==126);
2574
+ #line 444 "parser.yy"
2575
+ { COPY_YYSTYPE_BE_ADD_SUFF_VALUE(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2576
+ #line 2577 "parser.c"
2577
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2578
+ break;
2579
+ case 118: /* less_than_thousandth ::= less_than_hundred HUNDRED AND less_than_hundredth */
2580
+ case 127: /* less_than_thousandths ::= less_than_hundred HUNDRED AND less_than_hundredths */ yytestcase(yyruleno==127);
2581
+ #line 445 "parser.yy"
2582
+ { COPY_YYSTYPE_BE_MUL_ADD_SUFF(yylhsminor.yy0, yymsp[-3].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2583
+ #line 2584 "parser.c"
2584
+ yymsp[-3].minor.yy0 = yylhsminor.yy0;
2585
+ break;
2586
+ case 119: /* less_than_thousandth ::= less_than_hundred HUNDRED less_than_hundredth */
2587
+ case 128: /* less_than_thousandths ::= less_than_hundred HUNDRED less_than_hundredths */ yytestcase(yyruleno==128);
2588
+ #line 446 "parser.yy"
2589
+ { COPY_YYSTYPE_BE_MUL_ADD_SUFF(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2590
+ #line 2591 "parser.c"
2591
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2592
+ break;
2593
+ case 120: /* less_than_thousandth ::= less_than_hundred HUNDREDTH */
2594
+ #line 447 "parser.yy"
2595
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F, TH); }
2596
+ #line 2597 "parser.c"
2597
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2598
+ break;
2599
+ case 122: /* final_number ::= HUNDREDTH */
2600
+ #line 450 "parser.yy"
2601
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, HUNDRED_F, TH); }
2602
+ #line 2603 "parser.c"
2603
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2604
+ break;
2605
+ case 123: /* final_number ::= DECIMAL HUNDREDTH */
2606
+ #line 451 "parser.yy"
2607
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F, TH); }
2608
+ #line 2609 "parser.c"
2609
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2610
+ break;
2611
+ case 129: /* less_than_thousandths ::= less_than_hundred HUNDREDTHS */
2612
+ #line 461 "parser.yy"
2613
+ { COPY_YYSTYPE_BE_MUL_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F, THS); }
2614
+ #line 2615 "parser.c"
2615
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2616
+ break;
2617
+ case 131: /* final_number ::= HUNDREDTHS */
2618
+ #line 464 "parser.yy"
2619
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, HUNDRED_F, THS); }
2620
+ #line 2621 "parser.c"
2621
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2622
+ break;
2623
+ case 132: /* final_number ::= DECIMAL HUNDREDTHS */
2624
+ #line 466 "parser.yy"
2625
+ { COPY_YYSTYPE_DBL_NUM_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F, THS); }
2626
+ #line 2627 "parser.c"
2627
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2628
+ break;
2629
+ case 133: /* less_than_thousand_end_only ::= AND less_than_hundred */
2630
+ #line 472 "parser.yy"
2631
+ { COPY_YYSTYPE_BE_DBL(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
2632
+ #line 2633 "parser.c"
2633
+ break;
2634
+ case 135: /* less_than_thousand ::= HUNDRED AND less_than_hundred */
2635
+ #line 475 "parser.yy"
2636
+ { COPY_YYSTYPE_BE_ADD_VALUE(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2637
+ #line 2638 "parser.c"
2638
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2639
+ break;
2640
+ case 136: /* less_than_thousand ::= less_than_hundred HUNDRED AND less_than_hundred */
2641
+ #line 476 "parser.yy"
2642
+ { COPY_YYSTYPE_BE_MUL_ADD(yylhsminor.yy0, yymsp[-3].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2643
+ #line 2644 "parser.c"
2644
+ yymsp[-3].minor.yy0 = yylhsminor.yy0;
2645
+ break;
2646
+ case 137: /* less_than_thousand ::= less_than_hundred HUNDRED less_than_hundred */
2647
+ #line 477 "parser.yy"
2648
+ { COPY_YYSTYPE_BE_MUL_ADD(yylhsminor.yy0, yymsp[-2].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2649
+ #line 2650 "parser.c"
2650
+ yymsp[-2].minor.yy0 = yylhsminor.yy0;
2651
+ break;
2652
+ case 138: /* less_than_thousand ::= less_than_hundred HUNDRED */
2653
+ case 142: /* final_number ::= WHOLE_NUMBER HUNDRED */ yytestcase(yyruleno==142);
2654
+ #line 478 "parser.yy"
2655
+ { COPY_YYSTYPE_BE_MUL(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2656
+ #line 2657 "parser.c"
2657
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2658
+ break;
2659
+ case 140: /* final_number ::= HUNDRED */
2660
+ #line 481 "parser.yy"
2661
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2662
+ #line 2663 "parser.c"
2663
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2664
+ break;
2665
+ case 141: /* final_number ::= DECIMAL HUNDRED */
2666
+ #line 482 "parser.yy"
2667
+ { COPY_YYSTYPE_DBL_NUM(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0, HUNDRED_F); }
2668
+ #line 2669 "parser.c"
2669
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2670
+ break;
2671
+ case 143: /* less_than_hundredth ::= tens less_than_tenth */
2672
+ case 146: /* less_than_hundredths ::= tens less_than_tenths */ yytestcase(yyruleno==146);
2673
+ #line 489 "parser.yy"
2674
+ { COPY_YYSTYPE_BE_ADD_SUFF(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
2675
+ #line 2676 "parser.c"
2676
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2677
+ break;
2678
+ case 149: /* less_than_hundred ::= tens less_than_ten */
2679
+ #line 501 "parser.yy"
2680
+ { COPY_YYSTYPE_BE_ADD(yylhsminor.yy0, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
2681
+ #line 2682 "parser.c"
2682
+ yymsp[-1].minor.yy0 = yylhsminor.yy0;
2683
+ break;
2684
+ case 158: /* less_than_ten ::= ONE */
2685
+ #line 526 "parser.yy"
2686
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 1.0); }
2687
+ #line 2688 "parser.c"
2688
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2689
+ break;
2690
+ case 159: /* less_than_ten ::= TWO */
2691
+ #line 527 "parser.yy"
2692
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 2.0); }
2693
+ #line 2694 "parser.c"
2694
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2695
+ break;
2696
+ case 160: /* less_than_ten ::= THREE */
2697
+ #line 528 "parser.yy"
2698
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 3.0); }
2699
+ #line 2700 "parser.c"
2700
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2701
+ break;
2702
+ case 161: /* less_than_ten ::= FOUR */
2703
+ #line 529 "parser.yy"
2704
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 4.0); }
2705
+ #line 2706 "parser.c"
2706
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2707
+ break;
2708
+ case 162: /* less_than_ten ::= FIVE */
2709
+ #line 530 "parser.yy"
2710
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 5.0); }
2711
+ #line 2712 "parser.c"
2712
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2713
+ break;
2714
+ case 163: /* less_than_ten ::= SIX */
2715
+ #line 531 "parser.yy"
2716
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 6.0); }
2717
+ #line 2718 "parser.c"
2718
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2719
+ break;
2720
+ case 164: /* less_than_ten ::= SEVEN */
2721
+ #line 532 "parser.yy"
2722
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 7.0); }
2723
+ #line 2724 "parser.c"
2724
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2725
+ break;
2726
+ case 165: /* less_than_ten ::= EIGHT */
2727
+ #line 533 "parser.yy"
2728
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 8.0); }
2729
+ #line 2730 "parser.c"
2730
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2731
+ break;
2732
+ case 166: /* less_than_ten ::= NINE */
2733
+ #line 534 "parser.yy"
2734
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 9.0); }
2735
+ #line 2736 "parser.c"
2736
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2737
+ break;
2738
+ case 167: /* ten_to_19 ::= TEN */
2739
+ #line 536 "parser.yy"
2740
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 10.0); }
2741
+ #line 2742 "parser.c"
2742
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2743
+ break;
2744
+ case 168: /* ten_to_19 ::= ELEVEN */
2745
+ #line 537 "parser.yy"
2746
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 11.0); }
2747
+ #line 2748 "parser.c"
2748
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2749
+ break;
2750
+ case 169: /* ten_to_19 ::= TWELVE */
2751
+ #line 538 "parser.yy"
2752
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 12.0); }
2753
+ #line 2754 "parser.c"
2754
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2755
+ break;
2756
+ case 170: /* ten_to_19 ::= THIRTEEN */
2757
+ #line 539 "parser.yy"
2758
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 13.0); }
2759
+ #line 2760 "parser.c"
2760
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2761
+ break;
2762
+ case 171: /* ten_to_19 ::= FOURTEEN */
2763
+ #line 540 "parser.yy"
2764
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 14.0); }
2765
+ #line 2766 "parser.c"
2766
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2767
+ break;
2768
+ case 172: /* ten_to_19 ::= FIFTEEN */
2769
+ #line 541 "parser.yy"
2770
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 15.0); }
2771
+ #line 2772 "parser.c"
2772
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2773
+ break;
2774
+ case 173: /* ten_to_19 ::= SIXTEEN */
2775
+ #line 542 "parser.yy"
2776
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 16.0); }
2777
+ #line 2778 "parser.c"
2778
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2779
+ break;
2780
+ case 174: /* ten_to_19 ::= SEVENTEEN */
2781
+ #line 543 "parser.yy"
2782
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 17.0); }
2783
+ #line 2784 "parser.c"
2784
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2785
+ break;
2786
+ case 175: /* ten_to_19 ::= EIGHTEEN */
2787
+ #line 544 "parser.yy"
2788
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 18.0); }
2789
+ #line 2790 "parser.c"
2790
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2791
+ break;
2792
+ case 176: /* ten_to_19 ::= NINETEEN */
2793
+ #line 545 "parser.yy"
2794
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 19.0); }
2795
+ #line 2796 "parser.c"
2796
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2797
+ break;
2798
+ case 177: /* tens ::= TWENTY */
2799
+ #line 547 "parser.yy"
2800
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 20.0); }
2801
+ #line 2802 "parser.c"
2802
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2803
+ break;
2804
+ case 178: /* tens ::= THIRTY */
2805
+ #line 548 "parser.yy"
2806
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 30.0); }
2807
+ #line 2808 "parser.c"
2808
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2809
+ break;
2810
+ case 179: /* tens ::= FORTY */
2811
+ #line 549 "parser.yy"
2812
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 40.0); }
2813
+ #line 2814 "parser.c"
2814
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2815
+ break;
2816
+ case 180: /* tens ::= FIFTY */
2817
+ #line 550 "parser.yy"
2818
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 50.0); }
2819
+ #line 2820 "parser.c"
2820
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2821
+ break;
2822
+ case 181: /* tens ::= SIXTY */
2823
+ #line 551 "parser.yy"
2824
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 60.0); }
2825
+ #line 2826 "parser.c"
2826
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2827
+ break;
2828
+ case 182: /* tens ::= SEVENTY */
2829
+ #line 552 "parser.yy"
2830
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 70.0); }
2831
+ #line 2832 "parser.c"
2832
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2833
+ break;
2834
+ case 183: /* tens ::= EIGHTY */
2835
+ #line 553 "parser.yy"
2836
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 80.0); }
2837
+ #line 2838 "parser.c"
2838
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2839
+ break;
2840
+ case 184: /* tens ::= NINETY */
2841
+ #line 554 "parser.yy"
2842
+ { COPY_YYSTYPE_BE_VALUE(yylhsminor.yy0, yymsp[0].minor.yy0, 90.0); }
2843
+ #line 2844 "parser.c"
2844
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2845
+ break;
2846
+ case 185: /* less_than_tenth ::= FIRST */
2847
+ #line 556 "parser.yy"
2848
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 1.0, ST); }
2849
+ #line 2850 "parser.c"
2850
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2851
+ break;
2852
+ case 186: /* less_than_tenth ::= SECOND */
2853
+ #line 557 "parser.yy"
2854
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 2.0, ND); }
2855
+ #line 2856 "parser.c"
2856
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2857
+ break;
2858
+ case 187: /* less_than_tenth ::= THIRD */
2859
+ #line 558 "parser.yy"
2860
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 3.0, RD); }
2861
+ #line 2862 "parser.c"
2862
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2863
+ break;
2864
+ case 188: /* less_than_tenth ::= FOURTH */
2865
+ #line 559 "parser.yy"
2866
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 4.0, TH); }
2867
+ #line 2868 "parser.c"
2868
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2869
+ break;
2870
+ case 189: /* less_than_tenth ::= FIFTH */
2871
+ #line 560 "parser.yy"
2872
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 5.0, TH); }
2873
+ #line 2874 "parser.c"
2874
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2875
+ break;
2876
+ case 190: /* less_than_tenth ::= SIXTH */
2877
+ #line 561 "parser.yy"
2878
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 6.0, TH); }
2879
+ #line 2880 "parser.c"
2880
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2881
+ break;
2882
+ case 191: /* less_than_tenth ::= SEVENTH */
2883
+ #line 562 "parser.yy"
2884
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 7.0, TH); }
2885
+ #line 2886 "parser.c"
2886
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2887
+ break;
2888
+ case 192: /* less_than_tenth ::= EIGHTH */
2889
+ #line 563 "parser.yy"
2890
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 8.0, TH); }
2891
+ #line 2892 "parser.c"
2892
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2893
+ break;
2894
+ case 193: /* less_than_tenth ::= NINTH */
2895
+ #line 564 "parser.yy"
2896
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 9.0, TH); }
2897
+ #line 2898 "parser.c"
2898
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2899
+ break;
2900
+ case 194: /* tenth_to_19th ::= TENTH */
2901
+ #line 566 "parser.yy"
2902
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 10.0, TH); }
2903
+ #line 2904 "parser.c"
2904
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2905
+ break;
2906
+ case 195: /* tenth_to_19th ::= ELEVENTH */
2907
+ #line 567 "parser.yy"
2908
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 11.0, TH); }
2909
+ #line 2910 "parser.c"
2910
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2911
+ break;
2912
+ case 196: /* tenth_to_19th ::= TWELFTH */
2913
+ #line 568 "parser.yy"
2914
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 12.0, TH); }
2915
+ #line 2916 "parser.c"
2916
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2917
+ break;
2918
+ case 197: /* tenth_to_19th ::= THIRTEENTH */
2919
+ #line 569 "parser.yy"
2920
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 13.0, TH); }
2921
+ #line 2922 "parser.c"
2922
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2923
+ break;
2924
+ case 198: /* tenth_to_19th ::= FOURTEENTH */
2925
+ #line 570 "parser.yy"
2926
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 14.0, TH); }
2927
+ #line 2928 "parser.c"
2928
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2929
+ break;
2930
+ case 199: /* tenth_to_19th ::= FIFTEENTH */
2931
+ #line 571 "parser.yy"
2932
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 15.0, TH); }
2933
+ #line 2934 "parser.c"
2934
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2935
+ break;
2936
+ case 200: /* tenth_to_19th ::= SIXTEENTH */
2937
+ #line 572 "parser.yy"
2938
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 16.0, TH); }
2939
+ #line 2940 "parser.c"
2940
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2941
+ break;
2942
+ case 201: /* tenth_to_19th ::= SEVENTEENTH */
2943
+ #line 573 "parser.yy"
2944
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 17.0, TH); }
2945
+ #line 2946 "parser.c"
2946
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2947
+ break;
2948
+ case 202: /* tenth_to_19th ::= EIGHTEENTH */
2949
+ #line 574 "parser.yy"
2950
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 18.0, TH); }
2951
+ #line 2952 "parser.c"
2952
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2953
+ break;
2954
+ case 203: /* tenth_to_19th ::= NINETEENTH */
2955
+ #line 575 "parser.yy"
2956
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 19.0, TH); }
2957
+ #line 2958 "parser.c"
2958
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2959
+ break;
2960
+ case 204: /* tenth ::= TWENTIETH */
2961
+ #line 577 "parser.yy"
2962
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 20.0, TH); }
2963
+ #line 2964 "parser.c"
2964
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2965
+ break;
2966
+ case 205: /* tenth ::= THIRTIETH */
2967
+ #line 578 "parser.yy"
2968
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 30.0, TH); }
2969
+ #line 2970 "parser.c"
2970
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2971
+ break;
2972
+ case 206: /* tenth ::= FOURTIETH */
2973
+ #line 579 "parser.yy"
2974
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 40.0, TH); }
2975
+ #line 2976 "parser.c"
2976
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2977
+ break;
2978
+ case 207: /* tenth ::= FIFTIETH */
2979
+ #line 580 "parser.yy"
2980
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 50.0, TH); }
2981
+ #line 2982 "parser.c"
2982
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2983
+ break;
2984
+ case 208: /* tenth ::= SIXTIETH */
2985
+ #line 581 "parser.yy"
2986
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 60.0, TH); }
2987
+ #line 2988 "parser.c"
2988
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2989
+ break;
2990
+ case 209: /* tenth ::= SEVENTIETH */
2991
+ #line 582 "parser.yy"
2992
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 70.0, TH); }
2993
+ #line 2994 "parser.c"
2994
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
2995
+ break;
2996
+ case 210: /* tenth ::= EIGHTIETH */
2997
+ #line 583 "parser.yy"
2998
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 80.0, TH); }
2999
+ #line 3000 "parser.c"
3000
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3001
+ break;
3002
+ case 211: /* tenth ::= NINETIETH */
3003
+ #line 584 "parser.yy"
3004
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 90.0, TH); }
3005
+ #line 3006 "parser.c"
3006
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3007
+ break;
3008
+ case 212: /* less_than_tenths ::= FIRSTS */
3009
+ #line 586 "parser.yy"
3010
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 1.0, STS); }
3011
+ #line 3012 "parser.c"
3012
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3013
+ break;
3014
+ case 213: /* less_than_tenths ::= SECONDS */
3015
+ #line 587 "parser.yy"
3016
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 2.0, NDS); }
3017
+ #line 3018 "parser.c"
3018
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3019
+ break;
3020
+ case 214: /* less_than_tenths ::= THIRDS */
3021
+ #line 588 "parser.yy"
3022
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 3.0, RDS); }
3023
+ #line 3024 "parser.c"
3024
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3025
+ break;
3026
+ case 215: /* less_than_tenths ::= FOURTHS */
3027
+ #line 589 "parser.yy"
3028
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 4.0, THS); }
3029
+ #line 3030 "parser.c"
3030
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3031
+ break;
3032
+ case 216: /* less_than_tenths ::= FIFTHS */
3033
+ #line 590 "parser.yy"
3034
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 5.0, THS); }
3035
+ #line 3036 "parser.c"
3036
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3037
+ break;
3038
+ case 217: /* less_than_tenths ::= SIXTHS */
3039
+ #line 591 "parser.yy"
3040
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 6.0, THS); }
3041
+ #line 3042 "parser.c"
3042
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3043
+ break;
3044
+ case 218: /* less_than_tenths ::= SEVENTHS */
3045
+ #line 592 "parser.yy"
3046
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 7.0, THS); }
3047
+ #line 3048 "parser.c"
3048
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3049
+ break;
3050
+ case 219: /* less_than_tenths ::= EIGHTHS */
3051
+ #line 593 "parser.yy"
3052
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 8.0, THS); }
3053
+ #line 3054 "parser.c"
3054
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3055
+ break;
3056
+ case 220: /* less_than_tenths ::= NINTHS */
3057
+ #line 594 "parser.yy"
3058
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 9.0, THS); }
3059
+ #line 3060 "parser.c"
3060
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3061
+ break;
3062
+ case 221: /* tenths_to_19ths ::= TENTHS */
3063
+ #line 596 "parser.yy"
3064
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 10.0, THS); }
3065
+ #line 3066 "parser.c"
3066
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3067
+ break;
3068
+ case 222: /* tenths_to_19ths ::= ELEVENTHS */
3069
+ #line 597 "parser.yy"
3070
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 11.0, THS); }
3071
+ #line 3072 "parser.c"
3072
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3073
+ break;
3074
+ case 223: /* tenths_to_19ths ::= TWELFTHS */
3075
+ #line 598 "parser.yy"
3076
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 12.0, THS); }
3077
+ #line 3078 "parser.c"
3078
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3079
+ break;
3080
+ case 224: /* tenths_to_19ths ::= THIRTEENTHS */
3081
+ #line 599 "parser.yy"
3082
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 13.0, THS); }
3083
+ #line 3084 "parser.c"
3084
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3085
+ break;
3086
+ case 225: /* tenths_to_19ths ::= FOURTEENTHS */
3087
+ #line 600 "parser.yy"
3088
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 14.0, THS); }
3089
+ #line 3090 "parser.c"
3090
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3091
+ break;
3092
+ case 226: /* tenths_to_19ths ::= FIFTEENTHS */
3093
+ #line 601 "parser.yy"
3094
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 15.0, THS); }
3095
+ #line 3096 "parser.c"
3096
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3097
+ break;
3098
+ case 227: /* tenths_to_19ths ::= SIXTEENTHS */
3099
+ #line 602 "parser.yy"
3100
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 16.0, THS); }
3101
+ #line 3102 "parser.c"
3102
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3103
+ break;
3104
+ case 228: /* tenths_to_19ths ::= SEVENTEENTHS */
3105
+ #line 603 "parser.yy"
3106
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 17.0, THS); }
3107
+ #line 3108 "parser.c"
3108
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3109
+ break;
3110
+ case 229: /* tenths_to_19ths ::= EIGHTEENTHS */
3111
+ #line 604 "parser.yy"
3112
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 18.0, THS); }
3113
+ #line 3114 "parser.c"
3114
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3115
+ break;
3116
+ case 230: /* tenths_to_19ths ::= NINETEENTHS */
3117
+ #line 605 "parser.yy"
3118
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 19.0, THS); }
3119
+ #line 3120 "parser.c"
3120
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3121
+ break;
3122
+ case 231: /* tenths ::= TWENTIETHS */
3123
+ #line 607 "parser.yy"
3124
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 20.0, THS); }
3125
+ #line 3126 "parser.c"
3126
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3127
+ break;
3128
+ case 232: /* tenths ::= THIRTIETHS */
3129
+ #line 608 "parser.yy"
3130
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 30.0, THS); }
3131
+ #line 3132 "parser.c"
3132
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3133
+ break;
3134
+ case 233: /* tenths ::= FOURTIETHS */
3135
+ #line 609 "parser.yy"
3136
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 40.0, THS); }
3137
+ #line 3138 "parser.c"
3138
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3139
+ break;
3140
+ case 234: /* tenths ::= FIFTIETHS */
3141
+ #line 610 "parser.yy"
3142
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 50.0, THS); }
3143
+ #line 3144 "parser.c"
3144
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3145
+ break;
3146
+ case 235: /* tenths ::= SIXTIETHS */
3147
+ #line 611 "parser.yy"
3148
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 60.0, THS); }
3149
+ #line 3150 "parser.c"
3150
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3151
+ break;
3152
+ case 236: /* tenths ::= SEVENTIETHS */
3153
+ #line 612 "parser.yy"
3154
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 70.0, THS); }
3155
+ #line 3156 "parser.c"
3156
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3157
+ break;
3158
+ case 237: /* tenths ::= EIGHTIETHS */
3159
+ #line 613 "parser.yy"
3160
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 80.0, THS); }
3161
+ #line 3162 "parser.c"
3162
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3163
+ break;
3164
+ case 238: /* tenths ::= NINETIETHS */
3165
+ #line 614 "parser.yy"
3166
+ { COPY_YYSTYPE_BE_VALUE_SUFF(yylhsminor.yy0, yymsp[0].minor.yy0, 90.0, THS); }
3167
+ #line 3168 "parser.c"
3168
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
3169
+ break;
3170
+ default:
3171
+ /* (239) program ::= numbers */ yytestcase(yyruleno==239);
3172
+ /* (240) numbers ::= numbers number */ yytestcase(yyruleno==240);
3173
+ /* (241) numbers ::= number (OPTIMIZED OUT) */ assert(yyruleno!=241);
3174
+ break;
3175
+ /********** End reduce actions ************************************************/
3176
+ };
3177
+ assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) );
3178
+ yygoto = yyRuleInfo[yyruleno].lhs;
3179
+ yysize = yyRuleInfo[yyruleno].nrhs;
3180
+ yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
3181
+ if( yyact <= YY_MAX_SHIFTREDUCE ){
3182
+ if( yyact>YY_MAX_SHIFT ){
3183
+ yyact += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
3184
+ }
3185
+ yymsp -= yysize-1;
3186
+ yypParser->yytos = yymsp;
3187
+ yymsp->stateno = (YYACTIONTYPE)yyact;
3188
+ yymsp->major = (YYCODETYPE)yygoto;
3189
+ yyTraceShift(yypParser, yyact);
3190
+ }else{
3191
+ assert( yyact == YY_ACCEPT_ACTION );
3192
+ yypParser->yytos -= yysize;
3193
+ yy_accept(yypParser);
3194
+ }
3195
+ }
3196
+
3197
+ /*
3198
+ ** The following code executes when the parse fails
3199
+ */
3200
+ #ifndef YYNOERRORRECOVERY
3201
+ static void yy_parse_failed(
3202
+ yyParser *yypParser /* The parser */
3203
+ ){
3204
+ ParseARG_FETCH;
3205
+ #ifndef NDEBUG
3206
+ if( yyTraceFILE ){
3207
+ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3208
+ }
3209
+ #endif
3210
+ while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser);
3211
+ /* Here code is inserted which will be executed whenever the
3212
+ ** parser fails */
3213
+ /************ Begin %parse_failure code ***************************************/
3214
+ #line 203 "parser.yy"
3215
+
3216
+ state->error = PARSE_FAILURE;
3217
+ #if print_errors
3218
+ fprintf(stderr,"Giving up. Parser is hopelessly lost...\n");
3219
+ #endif
3220
+ #line 3221 "parser.c"
3221
+ /************ End %parse_failure code *****************************************/
3222
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
3223
+ }
3224
+ #endif /* YYNOERRORRECOVERY */
3225
+
3226
+ /*
3227
+ ** The following code executes when a syntax error first occurs.
3228
+ */
3229
+ static void yy_syntax_error(
3230
+ yyParser *yypParser, /* The parser */
3231
+ int yymajor, /* The major type of the error token */
3232
+ ParseTOKENTYPE yyminor /* The minor type of the error token */
3233
+ ){
3234
+ ParseARG_FETCH;
3235
+ #define TOKEN yyminor
3236
+ /************ Begin %syntax_error code ****************************************/
3237
+ #line 196 "parser.yy"
3238
+
3239
+ state->error = SYNTAX_ERROR;
3240
+ #if print_errors
3241
+ fprintf(stderr, "Syntax error\n");
3242
+ #endif
3243
+ #line 3244 "parser.c"
3244
+ /************ End %syntax_error code ******************************************/
3245
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
3246
+ }
3247
+
3248
+ /*
3249
+ ** The following is executed when the parser accepts
3250
+ */
3251
+ static void yy_accept(
3252
+ yyParser *yypParser /* The parser */
3253
+ ){
3254
+ ParseARG_FETCH;
3255
+ #ifndef NDEBUG
3256
+ if( yyTraceFILE ){
3257
+ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3258
+ }
3259
+ #endif
3260
+ #ifndef YYNOERRORRECOVERY
3261
+ yypParser->yyerrcnt = -1;
3262
+ #endif
3263
+ assert( yypParser->yytos==yypParser->yystack );
3264
+ /* Here code is inserted which will be executed whenever the
3265
+ ** parser accepts */
3266
+ /*********** Begin %parse_accept code *****************************************/
3267
+ /*********** End %parse_accept code *******************************************/
3268
+ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
3269
+ }
3270
+
3271
+ /* The main parser program.
3272
+ ** The first argument is a pointer to a structure obtained from
3273
+ ** "ParseAlloc" which describes the current state of the parser.
3274
+ ** The second argument is the major token number. The third is
3275
+ ** the minor token. The fourth optional argument is whatever the
3276
+ ** user wants (and specified in the grammar) and is available for
3277
+ ** use by the action routines.
3278
+ **
3279
+ ** Inputs:
3280
+ ** <ul>
3281
+ ** <li> A pointer to the parser (an opaque structure.)
3282
+ ** <li> The major token number.
3283
+ ** <li> The minor token number.
3284
+ ** <li> An option argument of a grammar-specified type.
3285
+ ** </ul>
3286
+ **
3287
+ ** Outputs:
3288
+ ** None.
3289
+ */
3290
+ void Parse(
3291
+ void *yyp, /* The parser */
3292
+ int yymajor, /* The major token code number */
3293
+ ParseTOKENTYPE yyminor /* The value for the token */
3294
+ ParseARG_PDECL /* Optional %extra_argument parameter */
3295
+ ){
3296
+ YYMINORTYPE yyminorunion;
3297
+ unsigned int yyact; /* The parser action. */
3298
+ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
3299
+ int yyendofinput; /* True if we are at the end of input */
3300
+ #endif
3301
+ #ifdef YYERRORSYMBOL
3302
+ int yyerrorhit = 0; /* True if yymajor has invoked an error */
3303
+ #endif
3304
+ yyParser *yypParser; /* The parser */
3305
+
3306
+ yypParser = (yyParser*)yyp;
3307
+ assert( yypParser->yytos!=0 );
3308
+ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
3309
+ yyendofinput = (yymajor==0);
3310
+ #endif
3311
+ ParseARG_STORE;
3312
+
3313
+ #ifndef NDEBUG
3314
+ if( yyTraceFILE ){
3315
+ fprintf(yyTraceFILE,"%sInput '%s'\n",yyTracePrompt,yyTokenName[yymajor]);
3316
+ }
3317
+ #endif
3318
+
3319
+ do{
3320
+ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
3321
+ if( yyact <= YY_MAX_SHIFTREDUCE ){
3322
+ yy_shift(yypParser,yyact,yymajor,yyminor);
3323
+ #ifndef YYNOERRORRECOVERY
3324
+ yypParser->yyerrcnt--;
3325
+ #endif
3326
+ yymajor = YYNOCODE;
3327
+ }else if( yyact <= YY_MAX_REDUCE ){
3328
+ yy_reduce(yypParser,yyact-YY_MIN_REDUCE);
3329
+ }else{
3330
+ assert( yyact == YY_ERROR_ACTION );
3331
+ yyminorunion.yy0 = yyminor;
3332
+ #ifdef YYERRORSYMBOL
3333
+ int yymx;
3334
+ #endif
3335
+ #ifndef NDEBUG
3336
+ if( yyTraceFILE ){
3337
+ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
3338
+ }
3339
+ #endif
3340
+ #ifdef YYERRORSYMBOL
3341
+ /* A syntax error has occurred.
3342
+ ** The response to an error depends upon whether or not the
3343
+ ** grammar defines an error token "ERROR".
3344
+ **
3345
+ ** This is what we do if the grammar does define ERROR:
3346
+ **
3347
+ ** * Call the %syntax_error function.
3348
+ **
3349
+ ** * Begin popping the stack until we enter a state where
3350
+ ** it is legal to shift the error symbol, then shift
3351
+ ** the error symbol.
3352
+ **
3353
+ ** * Set the error count to three.
3354
+ **
3355
+ ** * Begin accepting and shifting new tokens. No new error
3356
+ ** processing will occur until three tokens have been
3357
+ ** shifted successfully.
3358
+ **
3359
+ */
3360
+ if( yypParser->yyerrcnt<0 ){
3361
+ yy_syntax_error(yypParser,yymajor,yyminor);
3362
+ }
3363
+ yymx = yypParser->yytos->major;
3364
+ if( yymx==YYERRORSYMBOL || yyerrorhit ){
3365
+ #ifndef NDEBUG
3366
+ if( yyTraceFILE ){
3367
+ fprintf(yyTraceFILE,"%sDiscard input token %s\n",
3368
+ yyTracePrompt,yyTokenName[yymajor]);
3369
+ }
3370
+ #endif
3371
+ yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
3372
+ yymajor = YYNOCODE;
3373
+ }else{
3374
+ while( yypParser->yytos >= yypParser->yystack
3375
+ && yymx != YYERRORSYMBOL
3376
+ && (yyact = yy_find_reduce_action(
3377
+ yypParser->yytos->stateno,
3378
+ YYERRORSYMBOL)) >= YY_MIN_REDUCE
3379
+ ){
3380
+ yy_pop_parser_stack(yypParser);
3381
+ }
3382
+ if( yypParser->yytos < yypParser->yystack || yymajor==0 ){
3383
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3384
+ yy_parse_failed(yypParser);
3385
+ #ifndef YYNOERRORRECOVERY
3386
+ yypParser->yyerrcnt = -1;
3387
+ #endif
3388
+ yymajor = YYNOCODE;
3389
+ }else if( yymx!=YYERRORSYMBOL ){
3390
+ yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor);
3391
+ }
3392
+ }
3393
+ yypParser->yyerrcnt = 3;
3394
+ yyerrorhit = 1;
3395
+ #elif defined(YYNOERRORRECOVERY)
3396
+ /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
3397
+ ** do any kind of error recovery. Instead, simply invoke the syntax
3398
+ ** error routine and continue going as if nothing had happened.
3399
+ **
3400
+ ** Applications can set this macro (for example inside %include) if
3401
+ ** they intend to abandon the parse upon the first syntax error seen.
3402
+ */
3403
+ yy_syntax_error(yypParser,yymajor, yyminor);
3404
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3405
+ yymajor = YYNOCODE;
3406
+
3407
+ #else /* YYERRORSYMBOL is not defined */
3408
+ /* This is what we do if the grammar does not define ERROR:
3409
+ **
3410
+ ** * Report an error message, and throw away the input token.
3411
+ **
3412
+ ** * If the input token is $, then fail the parse.
3413
+ **
3414
+ ** As before, subsequent error messages are suppressed until
3415
+ ** three input tokens have been successfully shifted.
3416
+ */
3417
+ if( yypParser->yyerrcnt<=0 ){
3418
+ yy_syntax_error(yypParser,yymajor, yyminor);
3419
+ }
3420
+ yypParser->yyerrcnt = 3;
3421
+ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
3422
+ if( yyendofinput ){
3423
+ yy_parse_failed(yypParser);
3424
+ #ifndef YYNOERRORRECOVERY
3425
+ yypParser->yyerrcnt = -1;
3426
+ #endif
3427
+ }
3428
+ yymajor = YYNOCODE;
3429
+ #endif
3430
+ }
3431
+ }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack );
3432
+ #ifndef NDEBUG
3433
+ if( yyTraceFILE ){
3434
+ yyStackEntry *i;
3435
+ char cDiv = '[';
3436
+ fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt);
3437
+ for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){
3438
+ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]);
3439
+ cDiv = ' ';
3440
+ }
3441
+ fprintf(yyTraceFILE,"]\n");
3442
+ }
3443
+ #endif
3444
+ return;
3445
+ }