elftosb_parser.tab.cpp revision 1.1 1 /* A Bison parser, made by GNU Bison 2.1. */
2
3 /* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA. */
20
21 /* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
25
26 /* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
28
29 /* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
35
36 /* Identify Bison output. */
37 #define YYBISON 1
38
39 /* Bison version. */
40 #define YYBISON_VERSION "2.1"
41
42 /* Skeleton name. */
43 #define YYSKELETON_NAME "yacc.c"
44
45 /* Pure parsers. */
46 #define YYPURE 1
47
48 /* Using locations. */
49 #define YYLSP_NEEDED 1
50
51
52
53 /* Tokens. */
54 #ifndef YYTOKENTYPE
55 # define YYTOKENTYPE
56 /* Put the tokens into the symbol table, so that GDB and other debuggers
57 know about them. */
58 enum yytokentype {
59 TOK_IDENT = 258,
60 TOK_STRING_LITERAL = 259,
61 TOK_INT_LITERAL = 260,
62 TOK_SECTION_NAME = 261,
63 TOK_SOURCE_NAME = 262,
64 TOK_BLOB = 263,
65 TOK_DOT_DOT = 264,
66 TOK_AND = 265,
67 TOK_OR = 266,
68 TOK_GEQ = 267,
69 TOK_LEQ = 268,
70 TOK_EQ = 269,
71 TOK_NEQ = 270,
72 TOK_POWER = 271,
73 TOK_LSHIFT = 272,
74 TOK_RSHIFT = 273,
75 TOK_INT_SIZE = 274,
76 TOK_OPTIONS = 275,
77 TOK_CONSTANTS = 276,
78 TOK_SOURCES = 277,
79 TOK_FILTERS = 278,
80 TOK_SECTION = 279,
81 TOK_EXTERN = 280,
82 TOK_FROM = 281,
83 TOK_RAW = 282,
84 TOK_LOAD = 283,
85 TOK_JUMP = 284,
86 TOK_CALL = 285,
87 TOK_MODE = 286,
88 TOK_IF = 287,
89 TOK_ELSE = 288,
90 TOK_DEFINED = 289,
91 TOK_INFO = 290,
92 TOK_WARNING = 291,
93 TOK_ERROR = 292,
94 TOK_SIZEOF = 293,
95 TOK_DCD = 294,
96 TOK_HAB = 295,
97 TOK_IVT = 296,
98 UNARY_OP = 297
99 };
100 #endif
101 /* Tokens. */
102 #define TOK_IDENT 258
103 #define TOK_STRING_LITERAL 259
104 #define TOK_INT_LITERAL 260
105 #define TOK_SECTION_NAME 261
106 #define TOK_SOURCE_NAME 262
107 #define TOK_BLOB 263
108 #define TOK_DOT_DOT 264
109 #define TOK_AND 265
110 #define TOK_OR 266
111 #define TOK_GEQ 267
112 #define TOK_LEQ 268
113 #define TOK_EQ 269
114 #define TOK_NEQ 270
115 #define TOK_POWER 271
116 #define TOK_LSHIFT 272
117 #define TOK_RSHIFT 273
118 #define TOK_INT_SIZE 274
119 #define TOK_OPTIONS 275
120 #define TOK_CONSTANTS 276
121 #define TOK_SOURCES 277
122 #define TOK_FILTERS 278
123 #define TOK_SECTION 279
124 #define TOK_EXTERN 280
125 #define TOK_FROM 281
126 #define TOK_RAW 282
127 #define TOK_LOAD 283
128 #define TOK_JUMP 284
129 #define TOK_CALL 285
130 #define TOK_MODE 286
131 #define TOK_IF 287
132 #define TOK_ELSE 288
133 #define TOK_DEFINED 289
134 #define TOK_INFO 290
135 #define TOK_WARNING 291
136 #define TOK_ERROR 292
137 #define TOK_SIZEOF 293
138 #define TOK_DCD 294
139 #define TOK_HAB 295
140 #define TOK_IVT 296
141 #define UNARY_OP 297
142
143
144
145
146 /* Copy the first part of user declarations. */
147 #line 14 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
148
149 #include "ElftosbLexer.h"
150 #include "ElftosbAST.h"
151 #include "Logging.h"
152 #include "Blob.h"
153 #include "format_string.h"
154 #include "Value.h"
155 #include "ConversionController.h"
156
157 using namespace elftosb;
158
159 //! Our special location type.
160 #define YYLTYPE token_loc_t
161
162 // this indicates that we're using our own type. it should be unset automatically
163 // but that's not working for some reason with the .hpp file.
164 #if defined(YYLTYPE_IS_TRIVIAL)
165 #undef YYLTYPE_IS_TRIVIAL
166 #define YYLTYPE_IS_TRIVIAL 0
167 #endif
168
169 //! Default location action
170 #define YYLLOC_DEFAULT(Current, Rhs, N) \
171 do { \
172 if (N) \
173 { \
174 (Current).m_firstLine = YYRHSLOC(Rhs, 1).m_firstLine; \
175 (Current).m_lastLine = YYRHSLOC(Rhs, N).m_lastLine; \
176 } \
177 else \
178 { \
179 (Current).m_firstLine = (Current).m_lastLine = YYRHSLOC(Rhs, 0).m_lastLine; \
180 } \
181 } while (0)
182
183 //! Forward declaration of yylex().
184 static int yylex(YYSTYPE * lvalp, YYLTYPE * yylloc, ElftosbLexer * lexer);
185
186 // Forward declaration of error handling function.
187 static void yyerror(YYLTYPE * yylloc, ElftosbLexer * lexer, CommandFileASTNode ** resultAST, const char * error);
188
189
190
191 /* Enabling traces. */
192 #ifndef YYDEBUG
193 # define YYDEBUG 0
194 #endif
195
196 /* Enabling verbose error messages. */
197 #ifdef YYERROR_VERBOSE
198 # undef YYERROR_VERBOSE
199 # define YYERROR_VERBOSE 1
200 #else
201 # define YYERROR_VERBOSE 1
202 #endif
203
204 /* Enabling the token table. */
205 #ifndef YYTOKEN_TABLE
206 # define YYTOKEN_TABLE 0
207 #endif
208
209 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
210 #line 58 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
211 typedef union YYSTYPE {
212 int m_num;
213 elftosb::SizedIntegerValue * m_int;
214 Blob * m_blob;
215 std::string * m_str;
216 elftosb::ASTNode * m_ast; // must use full name here because this is put into *.tab.hpp
217 } YYSTYPE;
218 /* Line 196 of yacc.c. */
219 #line 220 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
220 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
221 # define YYSTYPE_IS_DECLARED 1
222 # define YYSTYPE_IS_TRIVIAL 1
223 #endif
224
225 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
226 typedef struct YYLTYPE
227 {
228 int first_line;
229 int first_column;
230 int last_line;
231 int last_column;
232 } YYLTYPE;
233 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
234 # define YYLTYPE_IS_DECLARED 1
235 # define YYLTYPE_IS_TRIVIAL 1
236 #endif
237
238
239 /* Copy the second part of user declarations. */
240
241
242 /* Line 219 of yacc.c. */
243 #line 244 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
244
245 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
246 # define YYSIZE_T __SIZE_TYPE__
247 #endif
248 #if ! defined (YYSIZE_T) && defined (size_t)
249 # define YYSIZE_T size_t
250 #endif
251 #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
252 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
253 # define YYSIZE_T size_t
254 #endif
255 #if ! defined (YYSIZE_T)
256 # define YYSIZE_T unsigned int
257 #endif
258
259 #ifndef YY_
260 # if YYENABLE_NLS
261 # if ENABLE_NLS
262 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
263 # define YY_(msgid) dgettext ("bison-runtime", msgid)
264 # endif
265 # endif
266 # ifndef YY_
267 # define YY_(msgid) msgid
268 # endif
269 #endif
270
271 #if ! defined (yyoverflow) || YYERROR_VERBOSE
272
273 /* The parser invokes alloca or malloc; define the necessary symbols. */
274
275 # ifdef YYSTACK_USE_ALLOCA
276 # if YYSTACK_USE_ALLOCA
277 # ifdef __GNUC__
278 # define YYSTACK_ALLOC __builtin_alloca
279 # else
280 # define YYSTACK_ALLOC alloca
281 # if defined (__STDC__) || defined (__cplusplus)
282 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
283 # define YYINCLUDED_STDLIB_H
284 # endif
285 # endif
286 # endif
287 # endif
288
289 # ifdef YYSTACK_ALLOC
290 /* Pacify GCC's `empty if-body' warning. */
291 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
292 # ifndef YYSTACK_ALLOC_MAXIMUM
293 /* The OS might guarantee only one guard page at the bottom of the stack,
294 and a page size can be as small as 4096 bytes. So we cannot safely
295 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
296 to allow for a few compiler-allocated temporary stack slots. */
297 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
298 # endif
299 # else
300 # define YYSTACK_ALLOC YYMALLOC
301 # define YYSTACK_FREE YYFREE
302 # ifndef YYSTACK_ALLOC_MAXIMUM
303 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
304 # endif
305 # ifdef __cplusplus
306 extern "C" {
307 # endif
308 # ifndef YYMALLOC
309 # define YYMALLOC malloc
310 # if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
311 && (defined (__STDC__) || defined (__cplusplus)))
312 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
313 # endif
314 # endif
315 # ifndef YYFREE
316 # define YYFREE free
317 # if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
318 && (defined (__STDC__) || defined (__cplusplus)))
319 void free (void *); /* INFRINGES ON USER NAME SPACE */
320 # endif
321 # endif
322 # ifdef __cplusplus
323 }
324 # endif
325 # endif
326 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
327
328
329 #if (! defined (yyoverflow) \
330 && (! defined (__cplusplus) \
331 || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
332 && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
333
334 /* A type that is properly aligned for any stack member. */
335 union yyalloc
336 {
337 short int yyss;
338 YYSTYPE yyvs;
339 YYLTYPE yyls;
340 };
341
342 /* The size of the maximum gap between one aligned stack and the next. */
343 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
344
345 /* The size of an array large to enough to hold all stacks, each with
346 N elements. */
347 # define YYSTACK_BYTES(N) \
348 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
349 + 2 * YYSTACK_GAP_MAXIMUM)
350
351 /* Copy COUNT objects from FROM to TO. The source and destination do
352 not overlap. */
353 # ifndef YYCOPY
354 # if defined (__GNUC__) && 1 < __GNUC__
355 # define YYCOPY(To, From, Count) \
356 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
357 # else
358 # define YYCOPY(To, From, Count) \
359 do \
360 { \
361 YYSIZE_T yyi; \
362 for (yyi = 0; yyi < (Count); yyi++) \
363 (To)[yyi] = (From)[yyi]; \
364 } \
365 while (0)
366 # endif
367 # endif
368
369 /* Relocate STACK from its old location to the new one. The
370 local variables YYSIZE and YYSTACKSIZE give the old and new number of
371 elements in the stack, and YYPTR gives the new location of the
372 stack. Advance YYPTR to a properly aligned location for the next
373 stack. */
374 # define YYSTACK_RELOCATE(Stack) \
375 do \
376 { \
377 YYSIZE_T yynewbytes; \
378 YYCOPY (&yyptr->Stack, Stack, yysize); \
379 Stack = &yyptr->Stack; \
380 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
381 yyptr += yynewbytes / sizeof (*yyptr); \
382 } \
383 while (0)
384
385 #endif
386
387 #if defined (__STDC__) || defined (__cplusplus)
388 typedef signed char yysigned_char;
389 #else
390 typedef short int yysigned_char;
391 #endif
392
393 /* YYFINAL -- State number of the termination state. */
394 #define YYFINAL 13
395 /* YYLAST -- Last index in YYTABLE. */
396 #define YYLAST 418
397
398 /* YYNTOKENS -- Number of terminals. */
399 #define YYNTOKENS 66
400 /* YYNNTS -- Number of nonterminals. */
401 #define YYNNTS 52
402 /* YYNRULES -- Number of rules. */
403 #define YYNRULES 133
404 /* YYNRULES -- Number of states. */
405 #define YYNSTATES 238
406
407 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
408 #define YYUNDEFTOK 2
409 #define YYMAXUTOK 297
410
411 #define YYTRANSLATE(YYX) \
412 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
413
414 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
415 static const unsigned char yytranslate[] =
416 {
417 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
420 2, 2, 2, 26, 2, 2, 2, 64, 23, 2,
421 9, 10, 62, 60, 16, 61, 20, 63, 2, 2,
422 2, 2, 2, 2, 2, 2, 2, 2, 18, 17,
423 25, 15, 19, 2, 2, 2, 2, 2, 2, 2,
424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
426 2, 13, 2, 14, 59, 2, 2, 2, 2, 2,
427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
429 2, 2, 2, 11, 24, 12, 22, 2, 2, 2,
430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
442 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
443 5, 6, 7, 8, 21, 27, 28, 29, 30, 31,
444 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
445 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
446 52, 53, 54, 55, 56, 57, 58, 65
447 };
448
449 #if YYDEBUG
450 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
451 YYRHS. */
452 static const unsigned short int yyprhs[] =
453 {
454 0, 0, 3, 6, 8, 11, 13, 15, 17, 22,
455 27, 29, 32, 35, 36, 40, 45, 47, 50, 54,
456 55, 59, 66, 70, 71, 73, 77, 81, 83, 86,
457 93, 96, 97, 99, 100, 104, 108, 110, 113, 116,
458 118, 120, 121, 123, 126, 129, 131, 132, 134, 136,
459 138, 140, 145, 147, 148, 150, 152, 154, 156, 160,
460 165, 167, 169, 171, 175, 177, 180, 183, 184, 186,
461 188, 193, 195, 196, 200, 205, 207, 209, 211, 213,
462 217, 220, 221, 227, 230, 233, 236, 239, 246, 251,
463 254, 255, 257, 261, 263, 265, 267, 271, 275, 279,
464 283, 287, 291, 295, 299, 302, 307, 311, 316, 318,
465 322, 325, 327, 329, 331, 335, 339, 343, 347, 351,
466 355, 359, 363, 367, 371, 375, 377, 381, 385, 390,
467 395, 400, 403, 406
468 };
469
470 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
471 static const yysigned_char yyrhs[] =
472 {
473 67, 0, -1, 68, 82, -1, 69, -1, 68, 69,
474 -1, 70, -1, 71, -1, 75, -1, 37, 11, 72,
475 12, -1, 38, 11, 72, 12, -1, 73, -1, 72,
476 73, -1, 74, 17, -1, -1, 3, 15, 111, -1,
477 39, 11, 76, 12, -1, 77, -1, 76, 77, -1,
478 78, 79, 17, -1, -1, 3, 15, 4, -1, 3,
479 15, 42, 9, 113, 10, -1, 9, 80, 10, -1,
480 -1, 81, -1, 80, 16, 81, -1, 3, 15, 111,
481 -1, 83, -1, 82, 83, -1, 41, 9, 113, 84,
482 10, 86, -1, 17, 85, -1, -1, 80, -1, -1,
483 30, 94, 17, -1, 11, 87, 12, -1, 88, -1,
484 87, 88, -1, 91, 17, -1, 105, -1, 108, -1,
485 -1, 90, -1, 89, 90, -1, 91, 17, -1, 108,
486 -1, -1, 92, -1, 101, -1, 106, -1, 107, -1,
487 45, 93, 94, 97, -1, 56, -1, -1, 113, -1,
488 4, -1, 7, -1, 95, -1, 95, 43, 7, -1,
489 7, 13, 95, 14, -1, 8, -1, 99, -1, 96,
490 -1, 95, 16, 96, -1, 6, -1, 22, 6, -1,
491 19, 98, -1, -1, 20, -1, 110, -1, 58, 9,
492 100, 10, -1, 80, -1, -1, 102, 103, 104, -1,
493 57, 102, 110, 104, -1, 47, -1, 46, -1, 7,
494 -1, 113, -1, 9, 113, 10, -1, 9, 10, -1,
495 -1, 43, 7, 11, 89, 12, -1, 48, 113, -1,
496 52, 4, -1, 53, 4, -1, 54, 4, -1, 49,
497 112, 11, 87, 12, 109, -1, 50, 11, 87, 12,
498 -1, 50, 108, -1, -1, 113, -1, 113, 21, 113,
499 -1, 112, -1, 4, -1, 113, -1, 112, 25, 112,
500 -1, 112, 19, 112, -1, 112, 29, 112, -1, 112,
501 30, 112, -1, 112, 31, 112, -1, 112, 32, 112,
502 -1, 112, 27, 112, -1, 112, 28, 112, -1, 26,
503 112, -1, 3, 9, 7, 10, -1, 9, 112, 10,
504 -1, 51, 9, 3, 10, -1, 115, -1, 7, 18,
505 3, -1, 18, 3, -1, 117, -1, 3, -1, 114,
506 -1, 115, 60, 115, -1, 115, 61, 115, -1, 115,
507 62, 115, -1, 115, 63, 115, -1, 115, 64, 115,
508 -1, 115, 33, 115, -1, 115, 23, 115, -1, 115,
509 24, 115, -1, 115, 59, 115, -1, 115, 34, 115,
510 -1, 115, 35, 115, -1, 116, -1, 115, 20, 36,
511 -1, 9, 115, 10, -1, 55, 9, 114, 10, -1,
512 55, 9, 3, 10, -1, 55, 9, 7, 10, -1,
513 60, 115, -1, 61, 115, -1, 5, -1
514 };
515
516 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
517 static const unsigned short int yyrline[] =
518 {
519 0, 162, 162, 172, 178, 186, 187, 188, 191, 197,
520 203, 209, 216, 217, 220, 227, 233, 239, 247, 259,
521 262, 267, 275, 276, 280, 286, 294, 301, 307, 314,
522 329, 334, 340, 345, 351, 357, 365, 371, 379, 380,
523 381, 382, 385, 391, 399, 400, 401, 404, 405, 406,
524 407, 410, 433, 443, 445, 449, 454, 459, 464, 469,
525 474, 479, 484, 490, 498, 503, 510, 515, 521, 526,
526 532, 544, 545, 548, 577, 614, 615, 618, 623, 630,
527 631, 632, 635, 642, 649, 654, 659, 666, 677, 681,
528 688, 691, 696, 703, 707, 714, 718, 725, 732, 739,
529 746, 753, 760, 767, 774, 779, 784, 789, 796, 799,
530 804, 812, 816, 821, 832, 839, 846, 853, 860, 867,
531 874, 881, 888, 895, 902, 909, 913, 918, 923, 928,
532 933, 940, 944, 951
533 };
534 #endif
535
536 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
537 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
538 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
539 static const char *const yytname[] =
540 {
541 "$end", "error", "$undefined", "\"identifier\"", "\"string\"",
542 "\"integer\"", "\"section name\"", "\"source name\"",
543 "\"binary object\"", "'('", "')'", "'{'", "'}'", "'['", "']'", "'='",
544 "','", "';'", "':'", "'>'", "'.'", "\"..\"", "'~'", "'&'", "'|'", "'<'",
545 "'!'", "\"&&\"", "\"||\"", "\">=\"", "\"<=\"", "\"==\"", "\"!=\"",
546 "\"**\"", "\"<<\"", "\">>\"", "\"integer size\"", "\"options\"",
547 "\"constants\"", "\"sources\"", "\"filters\"", "\"section\"",
548 "\"extern\"", "\"from\"", "\"raw\"", "\"load\"", "\"jump\"", "\"call\"",
549 "\"mode\"", "\"if\"", "\"else\"", "\"defined\"", "\"info\"",
550 "\"warning\"", "\"error\"", "\"sizeof\"", "\"dcd\"", "\"hab\"",
551 "\"ivt\"", "'^'", "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY_OP",
552 "$accept", "command_file", "blocks_list", "pre_section_block",
553 "options_block", "constants_block", "const_def_list",
554 "const_def_list_elem", "const_def", "sources_block", "source_def_list",
555 "source_def_list_elem", "source_def", "source_attrs_opt",
556 "source_attr_list", "source_attr_list_elem", "section_defs",
557 "section_def", "section_options_opt", "source_attr_list_opt",
558 "section_contents", "full_stmt_list", "full_stmt_list_elem",
559 "basic_stmt_list", "basic_stmt_list_elem", "basic_stmt", "load_stmt",
560 "dcd_opt", "load_data", "section_list", "section_list_elem",
561 "load_target_opt", "load_target", "ivt_def", "assignment_list_opt",
562 "call_stmt", "call_or_jump", "call_target", "call_arg_opt", "from_stmt",
563 "mode_stmt", "message_stmt", "if_stmt", "else_opt", "address_or_range",
564 "const_expr", "bool_expr", "int_const_expr", "symbol_ref", "expr",
565 "unary_expr", "int_value", 0
566 };
567 #endif
568
569 # ifdef YYPRINT
570 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
571 token YYLEX-NUM. */
572 static const unsigned short int yytoknum[] =
573 {
574 0, 256, 257, 258, 259, 260, 261, 262, 263, 40,
575 41, 123, 125, 91, 93, 61, 44, 59, 58, 62,
576 46, 264, 126, 38, 124, 60, 33, 265, 266, 267,
577 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
578 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
579 288, 289, 290, 291, 292, 293, 294, 295, 296, 94,
580 43, 45, 42, 47, 37, 297
581 };
582 # endif
583
584 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
585 static const unsigned char yyr1[] =
586 {
587 0, 66, 67, 68, 68, 69, 69, 69, 70, 71,
588 72, 72, 73, 73, 74, 75, 76, 76, 77, 77,
589 78, 78, 79, 79, 80, 80, 81, 82, 82, 83,
590 84, 84, 85, 85, 86, 86, 87, 87, 88, 88,
591 88, 88, 89, 89, 90, 90, 90, 91, 91, 91,
592 91, 92, 93, 93, 94, 94, 94, 94, 94, 94,
593 94, 94, 95, 95, 96, 96, 97, 97, 98, 98,
594 99, 100, 100, 101, 101, 102, 102, 103, 103, 104,
595 104, 104, 105, 106, 107, 107, 107, 108, 109, 109,
596 109, 110, 110, 111, 111, 112, 112, 112, 112, 112,
597 112, 112, 112, 112, 112, 112, 112, 112, 113, 114,
598 114, 115, 115, 115, 115, 115, 115, 115, 115, 115,
599 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
600 115, 116, 116, 117
601 };
602
603 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
604 static const unsigned char yyr2[] =
605 {
606 0, 2, 2, 1, 2, 1, 1, 1, 4, 4,
607 1, 2, 2, 0, 3, 4, 1, 2, 3, 0,
608 3, 6, 3, 0, 1, 3, 3, 1, 2, 6,
609 2, 0, 1, 0, 3, 3, 1, 2, 2, 1,
610 1, 0, 1, 2, 2, 1, 0, 1, 1, 1,
611 1, 4, 1, 0, 1, 1, 1, 1, 3, 4,
612 1, 1, 1, 3, 1, 2, 2, 0, 1, 1,
613 4, 1, 0, 3, 4, 1, 1, 1, 1, 3,
614 2, 0, 5, 2, 2, 2, 2, 6, 4, 2,
615 0, 1, 3, 1, 1, 1, 3, 3, 3, 3,
616 3, 3, 3, 3, 2, 4, 3, 4, 1, 3,
617 2, 1, 1, 1, 3, 3, 3, 3, 3, 3,
618 3, 3, 3, 3, 3, 1, 3, 3, 4, 4,
619 4, 2, 2, 1
620 };
621
622 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
623 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
624 means the default is an error. */
625 static const unsigned char yydefact[] =
626 {
627 0, 0, 0, 0, 0, 0, 3, 5, 6, 7,
628 13, 13, 19, 1, 0, 4, 2, 27, 0, 0,
629 10, 0, 0, 0, 0, 16, 23, 0, 28, 0,
630 8, 11, 12, 9, 0, 15, 17, 0, 0, 112,
631 133, 0, 0, 0, 0, 0, 0, 31, 113, 108,
632 125, 111, 112, 94, 0, 0, 0, 14, 93, 95,
633 20, 0, 0, 0, 24, 18, 0, 0, 110, 0,
634 131, 132, 33, 0, 0, 0, 0, 0, 0, 0,
635 0, 0, 0, 0, 0, 0, 0, 0, 108, 104,
636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
637 0, 22, 0, 109, 127, 0, 0, 0, 32, 30,
638 0, 126, 120, 121, 119, 123, 124, 122, 114, 115,
639 116, 117, 118, 0, 106, 0, 97, 96, 102, 103,
640 98, 99, 100, 101, 0, 26, 25, 129, 130, 128,
641 41, 0, 29, 105, 107, 21, 0, 53, 76, 75,
642 0, 0, 0, 0, 0, 0, 0, 36, 0, 47,
643 48, 0, 39, 49, 50, 40, 55, 64, 56, 60,
644 0, 0, 0, 57, 62, 61, 54, 0, 52, 0,
645 83, 0, 84, 85, 86, 0, 35, 37, 38, 77,
646 81, 78, 0, 65, 72, 34, 0, 0, 46, 67,
647 41, 81, 91, 0, 73, 0, 71, 0, 63, 58,
648 0, 42, 0, 45, 0, 51, 0, 74, 0, 80,
649 0, 59, 70, 82, 43, 44, 68, 66, 69, 90,
650 92, 79, 0, 87, 41, 89, 0, 88
651 };
652
653 /* YYDEFGOTO[NTERM-NUM]. */
654 static const short int yydefgoto[] =
655 {
656 -1, 4, 5, 6, 7, 8, 19, 20, 21, 9,
657 24, 25, 26, 38, 63, 64, 16, 17, 73, 109,
658 142, 156, 157, 210, 211, 158, 159, 179, 172, 173,
659 174, 215, 227, 175, 207, 160, 161, 190, 204, 162,
660 163, 164, 165, 233, 201, 57, 58, 59, 48, 49,
661 50, 51
662 };
663
664 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
665 STATE-NUM. */
666 #define YYPACT_NINF -181
667 static const short int yypact[] =
668 {
669 128, 17, 25, 48, 69, 123, -181, -181, -181, -181,
670 96, 96, 101, -181, 80, -181, 68, -181, 112, 85,
671 -181, 115, 89, 114, 91, -181, 124, 30, -181, 47,
672 -181, -181, -181, -181, 11, -181, -181, 134, 125, -181,
673 -181, 133, 30, 140, 144, 30, 30, 153, -181, 225,
674 -181, -181, 148, -181, 61, 61, 162, -181, 359, -181,
675 -181, 164, 159, 22, -181, -181, 172, 121, -181, 9,
676 -181, -181, 134, 168, 143, 30, 30, 30, 30, 30,
677 30, 30, 30, 30, 30, 30, 179, 303, 121, -181,
678 194, 61, 61, 61, 61, 61, 61, 61, 61, 30,
679 47, -181, 134, -181, -181, 188, 4, 200, 199, -181,
680 56, -181, 241, 231, 236, 86, 86, 247, 76, 76,
681 196, 196, 196, 208, -181, 210, -181, -181, 373, 373,
682 -181, -181, -181, -181, 216, -181, -181, -181, -181, -181,
683 314, 2, -181, -181, -181, -181, 220, 175, -181, -181,
684 30, 61, 228, 230, 237, 28, 147, -181, 223, -181,
685 -181, 108, -181, -181, -181, -181, -181, -181, 92, -181,
686 240, 243, 233, 15, -181, -181, -181, 242, -181, 2,
687 -181, 345, -181, -181, -181, 30, -181, -181, -181, 133,
688 246, -181, 7, -181, 134, -181, 7, 250, 361, 244,
689 314, 246, 248, 16, -181, 104, 199, 252, -181, -181,
690 190, -181, 251, -181, 75, -181, 160, -181, 30, -181,
691 261, -181, -181, -181, -181, -181, -181, -181, -181, 222,
692 -181, -181, 6, -181, 314, -181, 176, -181
693 };
694
695 /* YYPGOTO[NTERM-NUM]. */
696 static const short int yypgoto[] =
697 {
698 -181, -181, -181, 268, -181, -181, 266, 106, -181, -181,
699 -181, 254, -181, -181, -70, 177, -181, 267, -181, -181,
700 -181, -151, -155, -181, 107, -180, -181, -181, 127, 122,
701 129, -181, -181, -181, -181, -181, 163, -181, 118, -181,
702 -181, -181, -21, -181, 109, 221, -51, -27, 257, 270,
703 -181, -181
704 };
705
706 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
707 positive, shift that token. If negative, reduce the rule which
708 number is the opposite. If zero, do what YYDEFACT says.
709 If YYTABLE_NINF, syntax error. */
710 #define YYTABLE_NINF -1
711 static const unsigned char yytable[] =
712 {
713 47, 187, 108, 87, 89, 39, 166, 40, 167, 168,
714 169, 42, 105, 167, 138, 60, 106, 234, 212, 39,
715 43, 40, 66, 41, 170, 42, 219, 43, 10, 170,
716 212, 196, 101, 39, 43, 40, 11, 41, 102, 42,
717 126, 127, 128, 129, 130, 131, 132, 133, 43, 216,
718 52, 53, 40, 61, 41, 151, 54, 44, 197, 12,
719 171, 187, 45, 46, 52, 43, 40, 140, 41, 13,
720 54, 44, 134, 55, 148, 149, 45, 46, 39, 43,
721 40, 187, 41, 236, 42, 44, 141, 55, 18, 27,
722 45, 46, 18, 43, 23, 226, 74, 30, 56, 18,
723 181, 33, 44, 35, 23, 192, 74, 45, 46, 14,
724 66, 39, 56, 40, 176, 189, 44, 42, 221, 77,
725 196, 45, 46, 180, 206, 31, 43, 29, 31, 34,
726 44, 104, 32, 37, 191, 45, 46, 62, 83, 84,
727 85, 74, 65, 68, 75, 76, 81, 82, 83, 84,
728 85, 66, 176, 69, 77, 78, 79, 86, 202, 186,
729 1, 2, 3, 44, 14, 1, 2, 3, 45, 46,
730 72, 90, 229, 99, 100, 103, 220, 213, 110, 111,
731 80, 81, 82, 83, 84, 85, 123, 202, 237, 213,
732 146, 230, 147, 148, 149, 150, 151, 125, 137, 152,
733 153, 154, 223, 146, 155, 147, 148, 149, 150, 151,
734 139, 235, 152, 153, 154, 102, 74, 155, 143, 146,
735 144, 147, 148, 149, 150, 151, 145, 177, 152, 153,
736 154, 178, 182, 155, 183, 147, 148, 149, 150, 151,
737 188, 184, 152, 153, 154, 74, 193, 155, 75, 76,
738 195, 74, 194, 198, 75, 203, 74, 209, 77, 78,
739 79, 74, 222, 214, 77, 78, 79, 74, 225, 218,
740 75, 231, 232, 15, 77, 78, 79, 22, 36, 136,
741 77, 78, 79, 28, 80, 81, 82, 83, 84, 85,
742 80, 81, 82, 83, 84, 85, 81, 82, 83, 84,
743 85, 81, 82, 83, 84, 85, 199, 81, 82, 83,
744 84, 85, 67, 124, 205, 70, 71, 224, 185, 217,
745 0, 135, 91, 228, 88, 208, 107, 0, 92, 0,
746 93, 94, 95, 96, 97, 98, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 112, 113, 114, 115, 116,
748 117, 118, 119, 120, 121, 122, 200, 146, 0, 147,
749 148, 149, 150, 151, 91, 0, 152, 153, 154, 0,
750 92, 155, 93, 94, 95, 96, 97, 98, 91, 0,
751 0, 0, 0, 0, 92, 0, 93, 94, 95, 96,
752 97, 98, 91, 0, 0, 0, 0, 0, 92, 0,
753 0, 0, 95, 96, 97, 98, 147, 148, 149, 150,
754 151, 0, 0, 152, 153, 154, 0, 0, 155
755 };
756
757 static const short int yycheck[] =
758 {
759 27, 156, 72, 54, 55, 3, 4, 5, 6, 7,
760 8, 9, 3, 6, 10, 4, 7, 11, 198, 3,
761 18, 5, 18, 7, 22, 9, 10, 18, 11, 22,
762 210, 16, 10, 3, 18, 5, 11, 7, 16, 9,
763 91, 92, 93, 94, 95, 96, 97, 98, 18, 200,
764 3, 4, 5, 42, 7, 49, 9, 55, 43, 11,
765 58, 216, 60, 61, 3, 18, 5, 11, 7, 0,
766 9, 55, 99, 26, 46, 47, 60, 61, 3, 18,
767 5, 236, 7, 234, 9, 55, 30, 26, 3, 9,
768 60, 61, 3, 18, 3, 20, 20, 12, 51, 3,
769 151, 12, 55, 12, 3, 13, 20, 60, 61, 41,
770 18, 3, 51, 5, 141, 7, 55, 9, 14, 33,
771 16, 60, 61, 150, 194, 19, 18, 15, 22, 15,
772 55, 10, 17, 9, 161, 60, 61, 3, 62, 63,
773 64, 20, 17, 3, 23, 24, 60, 61, 62, 63,
774 64, 18, 179, 9, 33, 34, 35, 9, 185, 12,
775 37, 38, 39, 55, 41, 37, 38, 39, 60, 61,
776 17, 9, 12, 9, 15, 3, 203, 198, 10, 36,
777 59, 60, 61, 62, 63, 64, 7, 214, 12, 210,
778 43, 218, 45, 46, 47, 48, 49, 3, 10, 52,
779 53, 54, 12, 43, 57, 45, 46, 47, 48, 49,
780 10, 232, 52, 53, 54, 16, 20, 57, 10, 43,
781 10, 45, 46, 47, 48, 49, 10, 7, 52, 53,
782 54, 56, 4, 57, 4, 45, 46, 47, 48, 49,
783 17, 4, 52, 53, 54, 20, 6, 57, 23, 24,
784 17, 20, 9, 11, 23, 9, 20, 7, 33, 34,
785 35, 20, 10, 19, 33, 34, 35, 20, 17, 21,
786 23, 10, 50, 5, 33, 34, 35, 11, 24, 102,
787 33, 34, 35, 16, 59, 60, 61, 62, 63, 64,
788 59, 60, 61, 62, 63, 64, 60, 61, 62, 63,
789 64, 60, 61, 62, 63, 64, 179, 60, 61, 62,
790 63, 64, 42, 10, 192, 45, 46, 210, 155, 201,
791 -1, 100, 19, 214, 54, 196, 69, -1, 25, -1,
792 27, 28, 29, 30, 31, 32, -1, -1, -1, -1,
793 -1, -1, -1, -1, -1, 75, 76, 77, 78, 79,
794 80, 81, 82, 83, 84, 85, 11, 43, -1, 45,
795 46, 47, 48, 49, 19, -1, 52, 53, 54, -1,
796 25, 57, 27, 28, 29, 30, 31, 32, 19, -1,
797 -1, -1, -1, -1, 25, -1, 27, 28, 29, 30,
798 31, 32, 19, -1, -1, -1, -1, -1, 25, -1,
799 -1, -1, 29, 30, 31, 32, 45, 46, 47, 48,
800 49, -1, -1, 52, 53, 54, -1, -1, 57
801 };
802
803 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
804 symbol of state STATE-NUM. */
805 static const unsigned char yystos[] =
806 {
807 0, 37, 38, 39, 67, 68, 69, 70, 71, 75,
808 11, 11, 11, 0, 41, 69, 82, 83, 3, 72,
809 73, 74, 72, 3, 76, 77, 78, 9, 83, 15,
810 12, 73, 17, 12, 15, 12, 77, 9, 79, 3,
811 5, 7, 9, 18, 55, 60, 61, 113, 114, 115,
812 116, 117, 3, 4, 9, 26, 51, 111, 112, 113,
813 4, 42, 3, 80, 81, 17, 18, 115, 3, 9,
814 115, 115, 17, 84, 20, 23, 24, 33, 34, 35,
815 59, 60, 61, 62, 63, 64, 9, 112, 115, 112,
816 9, 19, 25, 27, 28, 29, 30, 31, 32, 9,
817 15, 10, 16, 3, 10, 3, 7, 114, 80, 85,
818 10, 36, 115, 115, 115, 115, 115, 115, 115, 115,
819 115, 115, 115, 7, 10, 3, 112, 112, 112, 112,
820 112, 112, 112, 112, 113, 111, 81, 10, 10, 10,
821 11, 30, 86, 10, 10, 10, 43, 45, 46, 47,
822 48, 49, 52, 53, 54, 57, 87, 88, 91, 92,
823 101, 102, 105, 106, 107, 108, 4, 6, 7, 8,
824 22, 58, 94, 95, 96, 99, 113, 7, 56, 93,
825 113, 112, 4, 4, 4, 102, 12, 88, 17, 7,
826 103, 113, 13, 6, 9, 17, 16, 43, 11, 94,
827 11, 110, 113, 9, 104, 95, 80, 100, 96, 7,
828 89, 90, 91, 108, 19, 97, 87, 104, 21, 10,
829 113, 14, 10, 12, 90, 17, 20, 98, 110, 12,
830 113, 10, 50, 109, 11, 108, 87, 12
831 };
832
833 #define yyerrok (yyerrstatus = 0)
834 #define yyclearin (yychar = YYEMPTY)
835 #define YYEMPTY (-2)
836 #define YYEOF 0
837
838 #define YYACCEPT goto yyacceptlab
839 #define YYABORT goto yyabortlab
840 #define YYERROR goto yyerrorlab
841
842
843 /* Like YYERROR except do call yyerror. This remains here temporarily
844 to ease the transition to the new meaning of YYERROR, for GCC.
845 Once GCC version 2 has supplanted version 1, this can go. */
846
847 #define YYFAIL goto yyerrlab
848
849 #define YYRECOVERING() (!!yyerrstatus)
850
851 #define YYBACKUP(Token, Value) \
852 do \
853 if (yychar == YYEMPTY && yylen == 1) \
854 { \
855 yychar = (Token); \
856 yylval = (Value); \
857 yytoken = YYTRANSLATE (yychar); \
858 YYPOPSTACK; \
859 goto yybackup; \
860 } \
861 else \
862 { \
863 yyerror (&yylloc, lexer, resultAST, YY_("syntax error: cannot back up")); \
864 YYERROR; \
865 } \
866 while (0)
867
868
869 #define YYTERROR 1
870 #define YYERRCODE 256
871
872
873 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
874 If N is 0, then set CURRENT to the empty location which ends
875 the previous symbol: RHS[0] (always defined). */
876
877 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
878 #ifndef YYLLOC_DEFAULT
879 # define YYLLOC_DEFAULT(Current, Rhs, N) \
880 do \
881 if (N) \
882 { \
883 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
884 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
885 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
886 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
887 } \
888 else \
889 { \
890 (Current).first_line = (Current).last_line = \
891 YYRHSLOC (Rhs, 0).last_line; \
892 (Current).first_column = (Current).last_column = \
893 YYRHSLOC (Rhs, 0).last_column; \
894 } \
895 while (0)
896 #endif
897
898
899 /* YY_LOCATION_PRINT -- Print the location on the stream.
900 This macro was not mandated originally: define only if we know
901 we won't break user code: when these are the locations we know. */
902
903 #ifndef YY_LOCATION_PRINT
904 # if YYLTYPE_IS_TRIVIAL
905 # define YY_LOCATION_PRINT(File, Loc) \
906 fprintf (File, "%d.%d-%d.%d", \
907 (Loc).first_line, (Loc).first_column, \
908 (Loc).last_line, (Loc).last_column)
909 # else
910 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
911 # endif
912 #endif
913
914
915 /* YYLEX -- calling `yylex' with the right arguments. */
916
917 #ifdef YYLEX_PARAM
918 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
919 #else
920 # define YYLEX yylex (&yylval, &yylloc, lexer)
921 #endif
922
923 /* Enable debugging if requested. */
924 #if YYDEBUG
925
926 # ifndef YYFPRINTF
927 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
928 # define YYFPRINTF fprintf
929 # endif
930
931 # define YYDPRINTF(Args) \
932 do { \
933 if (yydebug) \
934 YYFPRINTF Args; \
935 } while (0)
936
937 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
938 do { \
939 if (yydebug) \
940 { \
941 YYFPRINTF (stderr, "%s ", Title); \
942 yysymprint (stderr, \
943 Type, Value, Location); \
944 YYFPRINTF (stderr, "\n"); \
945 } \
946 } while (0)
947
948 /*------------------------------------------------------------------.
949 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
950 | TOP (included). |
951 `------------------------------------------------------------------*/
952
953 #if defined (__STDC__) || defined (__cplusplus)
954 static void
955 yy_stack_print (short int *bottom, short int *top)
956 #else
957 static void
958 yy_stack_print (bottom, top)
959 short int *bottom;
960 short int *top;
961 #endif
962 {
963 YYFPRINTF (stderr, "Stack now");
964 for (/* Nothing. */; bottom <= top; ++bottom)
965 YYFPRINTF (stderr, " %d", *bottom);
966 YYFPRINTF (stderr, "\n");
967 }
968
969 # define YY_STACK_PRINT(Bottom, Top) \
970 do { \
971 if (yydebug) \
972 yy_stack_print ((Bottom), (Top)); \
973 } while (0)
974
975
976 /*------------------------------------------------.
977 | Report that the YYRULE is going to be reduced. |
978 `------------------------------------------------*/
979
980 #if defined (__STDC__) || defined (__cplusplus)
981 static void
982 yy_reduce_print (int yyrule)
983 #else
984 static void
985 yy_reduce_print (yyrule)
986 int yyrule;
987 #endif
988 {
989 int yyi;
990 unsigned long int yylno = yyrline[yyrule];
991 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
992 yyrule - 1, yylno);
993 /* Print the symbols being reduced, and their result. */
994 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
995 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
996 YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
997 }
998
999 # define YY_REDUCE_PRINT(Rule) \
1000 do { \
1001 if (yydebug) \
1002 yy_reduce_print (Rule); \
1003 } while (0)
1004
1005 /* Nonzero means print parse trace. It is left uninitialized so that
1006 multiple parsers can coexist. */
1007 int yydebug;
1008 #else /* !YYDEBUG */
1009 # define YYDPRINTF(Args)
1010 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1011 # define YY_STACK_PRINT(Bottom, Top)
1012 # define YY_REDUCE_PRINT(Rule)
1013 #endif /* !YYDEBUG */
1014
1015
1016 /* YYINITDEPTH -- initial size of the parser's stacks. */
1017 #ifndef YYINITDEPTH
1018 # define YYINITDEPTH 200
1019 #endif
1020
1021 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1022 if the built-in stack extension method is used).
1023
1024 Do not make this value too large; the results are undefined if
1025 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1026 evaluated with infinite-precision integer arithmetic. */
1027
1028 #ifndef YYMAXDEPTH
1029 # define YYMAXDEPTH 10000
1030 #endif
1031
1032
1033
1035 #if YYERROR_VERBOSE
1036
1037 # ifndef yystrlen
1038 # if defined (__GLIBC__) && defined (_STRING_H)
1039 # define yystrlen strlen
1040 # else
1041 /* Return the length of YYSTR. */
1042 static YYSIZE_T
1043 # if defined (__STDC__) || defined (__cplusplus)
1044 yystrlen (const char *yystr)
1045 # else
1046 yystrlen (yystr)
1047 const char *yystr;
1048 # endif
1049 {
1050 const char *yys = yystr;
1051
1052 while (*yys++ != '\0')
1053 continue;
1054
1055 return yys - yystr - 1;
1056 }
1057 # endif
1058 # endif
1059
1060 # ifndef yystpcpy
1061 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1062 # define yystpcpy stpcpy
1063 # else
1064 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1065 YYDEST. */
1066 static char *
1067 # if defined (__STDC__) || defined (__cplusplus)
1068 yystpcpy (char *yydest, const char *yysrc)
1069 # else
1070 yystpcpy (yydest, yysrc)
1071 char *yydest;
1072 const char *yysrc;
1073 # endif
1074 {
1075 char *yyd = yydest;
1076 const char *yys = yysrc;
1077
1078 while ((*yyd++ = *yys++) != '\0')
1079 continue;
1080
1081 return yyd - 1;
1082 }
1083 # endif
1084 # endif
1085
1086 # ifndef yytnamerr
1087 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1088 quotes and backslashes, so that it's suitable for yyerror. The
1089 heuristic is that double-quoting is unnecessary unless the string
1090 contains an apostrophe, a comma, or backslash (other than
1091 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1092 null, do not copy; instead, return the length of what the result
1093 would have been. */
1094 static YYSIZE_T
1095 yytnamerr (char *yyres, const char *yystr)
1096 {
1097 if (*yystr == '"')
1098 {
1099 size_t yyn = 0;
1100 char const *yyp = yystr;
1101
1102 for (;;)
1103 switch (*++yyp)
1104 {
1105 case '\'':
1106 case ',':
1107 goto do_not_strip_quotes;
1108
1109 case '\\':
1110 if (*++yyp != '\\')
1111 goto do_not_strip_quotes;
1112 /* Fall through. */
1113 default:
1114 if (yyres)
1115 yyres[yyn] = *yyp;
1116 yyn++;
1117 break;
1118
1119 case '"':
1120 if (yyres)
1121 yyres[yyn] = '\0';
1122 return yyn;
1123 }
1124 do_not_strip_quotes: ;
1125 }
1126
1127 if (! yyres)
1128 return yystrlen (yystr);
1129
1130 return yystpcpy (yyres, yystr) - yyres;
1131 }
1132 # endif
1133
1134 #endif /* YYERROR_VERBOSE */
1135
1136
1137
1139 #if YYDEBUG
1140 /*--------------------------------.
1141 | Print this symbol on YYOUTPUT. |
1142 `--------------------------------*/
1143
1144 #if defined (__STDC__) || defined (__cplusplus)
1145 static void
1146 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1147 #else
1148 static void
1149 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
1150 FILE *yyoutput;
1151 int yytype;
1152 YYSTYPE *yyvaluep;
1153 YYLTYPE *yylocationp;
1154 #endif
1155 {
1156 /* Pacify ``unused variable'' warnings. */
1157 (void) yyvaluep;
1158 (void) yylocationp;
1159
1160 if (yytype < YYNTOKENS)
1161 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1162 else
1163 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1164
1165 YY_LOCATION_PRINT (yyoutput, *yylocationp);
1166 YYFPRINTF (yyoutput, ": ");
1167
1168 # ifdef YYPRINT
1169 if (yytype < YYNTOKENS)
1170 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1171 # endif
1172 switch (yytype)
1173 {
1174 default:
1175 break;
1176 }
1177 YYFPRINTF (yyoutput, ")");
1178 }
1179
1180 #endif /* ! YYDEBUG */
1181 /*-----------------------------------------------.
1182 | Release the memory associated to this symbol. |
1183 `-----------------------------------------------*/
1184
1185 #if defined (__STDC__) || defined (__cplusplus)
1186 static void
1187 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1188 #else
1189 static void
1190 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1191 const char *yymsg;
1192 int yytype;
1193 YYSTYPE *yyvaluep;
1194 YYLTYPE *yylocationp;
1195 #endif
1196 {
1197 /* Pacify ``unused variable'' warnings. */
1198 (void) yyvaluep;
1199 (void) yylocationp;
1200
1201 if (!yymsg)
1202 yymsg = "Deleting";
1203 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1204
1205 switch (yytype)
1206 {
1207 case 3: /* "\"identifier\"" */
1208 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1209 { delete (yyvaluep->m_str); };
1210 #line 1209 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1211 break;
1212 case 4: /* "\"string\"" */
1213 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1214 { delete (yyvaluep->m_str); };
1215 #line 1214 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1216 break;
1217 case 5: /* "\"integer\"" */
1218 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1219 { delete (yyvaluep->m_int); };
1220 #line 1219 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1221 break;
1222 case 6: /* "\"section name\"" */
1223 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1224 { delete (yyvaluep->m_str); };
1225 #line 1224 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1226 break;
1227 case 7: /* "\"source name\"" */
1228 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1229 { delete (yyvaluep->m_str); };
1230 #line 1229 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1231 break;
1232 case 8: /* "\"binary object\"" */
1233 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1234 { delete (yyvaluep->m_blob); };
1235 #line 1234 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1236 break;
1237 case 36: /* "\"integer size\"" */
1238 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1239 { delete (yyvaluep->m_int); };
1240 #line 1239 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1241 break;
1242
1243 default:
1244 break;
1245 }
1246 }
1247
1248
1250 /* Prevent warnings from -Wmissing-prototypes. */
1251
1252 #ifdef YYPARSE_PARAM
1253 # if defined (__STDC__) || defined (__cplusplus)
1254 int yyparse (void *YYPARSE_PARAM);
1255 # else
1256 int yyparse ();
1257 # endif
1258 #else /* ! YYPARSE_PARAM */
1259 #if defined (__STDC__) || defined (__cplusplus)
1260 int yyparse (ElftosbLexer * lexer, CommandFileASTNode ** resultAST);
1261 #else
1262 int yyparse ();
1263 #endif
1264 #endif /* ! YYPARSE_PARAM */
1265
1266
1267
1268
1269
1270
1271 /*----------.
1272 | yyparse. |
1273 `----------*/
1274
1275 #ifdef YYPARSE_PARAM
1276 # if defined (__STDC__) || defined (__cplusplus)
1277 int yyparse (void *YYPARSE_PARAM)
1278 # else
1279 int yyparse (YYPARSE_PARAM)
1280 void *YYPARSE_PARAM;
1281 # endif
1282 #else /* ! YYPARSE_PARAM */
1283 #if defined (__STDC__) || defined (__cplusplus)
1284 int
1285 yyparse (ElftosbLexer * lexer, CommandFileASTNode ** resultAST)
1286 #else
1287 int
1288 yyparse (lexer, resultAST)
1289 ElftosbLexer * lexer;
1290 CommandFileASTNode ** resultAST;
1291 #endif
1292 #endif
1293 {
1294 /* The look-ahead symbol. */
1295 int yychar;
1296
1297 /* The semantic value of the look-ahead symbol. */
1298 YYSTYPE yylval;
1299
1300 /* Number of syntax errors so far. */
1301 int yynerrs;
1302 /* Location data for the look-ahead symbol. */
1303 YYLTYPE yylloc;
1304
1305 int yystate;
1306 int yyn;
1307 int yyresult;
1308 /* Number of tokens to shift before error messages enabled. */
1309 int yyerrstatus;
1310 /* Look-ahead token as an internal (translated) token number. */
1311 int yytoken = 0;
1312
1313 /* Three stacks and their tools:
1314 `yyss': related to states,
1315 `yyvs': related to semantic values,
1316 `yyls': related to locations.
1317
1318 Refer to the stacks thru separate pointers, to allow yyoverflow
1319 to reallocate them elsewhere. */
1320
1321 /* The state stack. */
1322 short int yyssa[YYINITDEPTH];
1323 short int *yyss = yyssa;
1324 short int *yyssp;
1325
1326 /* The semantic value stack. */
1327 YYSTYPE yyvsa[YYINITDEPTH];
1328 YYSTYPE *yyvs = yyvsa;
1329 YYSTYPE *yyvsp;
1330
1331 /* The location stack. */
1332 YYLTYPE yylsa[YYINITDEPTH];
1333 YYLTYPE *yyls = yylsa;
1334 YYLTYPE *yylsp;
1335 /* The locations where the error started and ended. */
1336 YYLTYPE yyerror_range[2];
1337
1338 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1339
1340 YYSIZE_T yystacksize = YYINITDEPTH;
1341
1342 /* The variables used to return semantic value and location from the
1343 action routines. */
1344 YYSTYPE yyval;
1345 YYLTYPE yyloc;
1346
1347 /* When reducing, the number of symbols on the RHS of the reduced
1348 rule. */
1349 int yylen;
1350
1351 YYDPRINTF ((stderr, "Starting parse\n"));
1352
1353 yystate = 0;
1354 yyerrstatus = 0;
1355 yynerrs = 0;
1356 yychar = YYEMPTY; /* Cause a token to be read. */
1357
1358 /* Initialize stack pointers.
1359 Waste one element of value and location stack
1360 so that they stay on the same level as the state stack.
1361 The wasted elements are never initialized. */
1362
1363 yyssp = yyss;
1364 yyvsp = yyvs;
1365 yylsp = yyls;
1366 #if YYLTYPE_IS_TRIVIAL
1367 /* Initialize the default location before parsing starts. */
1368 yylloc.first_line = yylloc.last_line = 1;
1369 yylloc.first_column = yylloc.last_column = 0;
1370 #endif
1371
1372 goto yysetstate;
1373
1374 /*------------------------------------------------------------.
1375 | yynewstate -- Push a new state, which is found in yystate. |
1376 `------------------------------------------------------------*/
1377 yynewstate:
1378 /* In all cases, when you get here, the value and location stacks
1379 have just been pushed. so pushing a state here evens the stacks.
1380 */
1381 yyssp++;
1382
1383 yysetstate:
1384 *yyssp = yystate;
1385
1386 if (yyss + yystacksize - 1 <= yyssp)
1387 {
1388 /* Get the current used size of the three stacks, in elements. */
1389 YYSIZE_T yysize = yyssp - yyss + 1;
1390
1391 #ifdef yyoverflow
1392 {
1393 /* Give user a chance to reallocate the stack. Use copies of
1394 these so that the &'s don't force the real ones into
1395 memory. */
1396 YYSTYPE *yyvs1 = yyvs;
1397 short int *yyss1 = yyss;
1398 YYLTYPE *yyls1 = yyls;
1399
1400 /* Each stack pointer address is followed by the size of the
1401 data in use in that stack, in bytes. This used to be a
1402 conditional around just the two extra args, but that might
1403 be undefined if yyoverflow is a macro. */
1404 yyoverflow (YY_("memory exhausted"),
1405 &yyss1, yysize * sizeof (*yyssp),
1406 &yyvs1, yysize * sizeof (*yyvsp),
1407 &yyls1, yysize * sizeof (*yylsp),
1408 &yystacksize);
1409 yyls = yyls1;
1410 yyss = yyss1;
1411 yyvs = yyvs1;
1412 }
1413 #else /* no yyoverflow */
1414 # ifndef YYSTACK_RELOCATE
1415 goto yyexhaustedlab;
1416 # else
1417 /* Extend the stack our own way. */
1418 if (YYMAXDEPTH <= yystacksize)
1419 goto yyexhaustedlab;
1420 yystacksize *= 2;
1421 if (YYMAXDEPTH < yystacksize)
1422 yystacksize = YYMAXDEPTH;
1423
1424 {
1425 short int *yyss1 = yyss;
1426 union yyalloc *yyptr =
1427 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1428 if (! yyptr)
1429 goto yyexhaustedlab;
1430 YYSTACK_RELOCATE (yyss);
1431 YYSTACK_RELOCATE (yyvs);
1432 YYSTACK_RELOCATE (yyls);
1433 # undef YYSTACK_RELOCATE
1434 if (yyss1 != yyssa)
1435 YYSTACK_FREE (yyss1);
1436 }
1437 # endif
1438 #endif /* no yyoverflow */
1439
1440 yyssp = yyss + yysize - 1;
1441 yyvsp = yyvs + yysize - 1;
1442 yylsp = yyls + yysize - 1;
1443
1444 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1445 (unsigned long int) yystacksize));
1446
1447 if (yyss + yystacksize - 1 <= yyssp)
1448 YYABORT;
1449 }
1450
1451 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1452
1453 goto yybackup;
1454
1455 /*-----------.
1456 | yybackup. |
1457 `-----------*/
1458 yybackup:
1459
1460 /* Do appropriate processing given the current state. */
1461 /* Read a look-ahead token if we need one and don't already have one. */
1462 /* yyresume: */
1463
1464 /* First try to decide what to do without reference to look-ahead token. */
1465
1466 yyn = yypact[yystate];
1467 if (yyn == YYPACT_NINF)
1468 goto yydefault;
1469
1470 /* Not known => get a look-ahead token if don't already have one. */
1471
1472 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1473 if (yychar == YYEMPTY)
1474 {
1475 YYDPRINTF ((stderr, "Reading a token: "));
1476 yychar = YYLEX;
1477 }
1478
1479 if (yychar <= YYEOF)
1480 {
1481 yychar = yytoken = YYEOF;
1482 YYDPRINTF ((stderr, "Now at end of input.\n"));
1483 }
1484 else
1485 {
1486 yytoken = YYTRANSLATE (yychar);
1487 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1488 }
1489
1490 /* If the proper action on seeing token YYTOKEN is to reduce or to
1491 detect an error, take that action. */
1492 yyn += yytoken;
1493 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1494 goto yydefault;
1495 yyn = yytable[yyn];
1496 if (yyn <= 0)
1497 {
1498 if (yyn == 0 || yyn == YYTABLE_NINF)
1499 goto yyerrlab;
1500 yyn = -yyn;
1501 goto yyreduce;
1502 }
1503
1504 if (yyn == YYFINAL)
1505 YYACCEPT;
1506
1507 /* Shift the look-ahead token. */
1508 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1509
1510 /* Discard the token being shifted unless it is eof. */
1511 if (yychar != YYEOF)
1512 yychar = YYEMPTY;
1513
1514 *++yyvsp = yylval;
1515 *++yylsp = yylloc;
1516
1517 /* Count tokens shifted since error; after three, turn off error
1518 status. */
1519 if (yyerrstatus)
1520 yyerrstatus--;
1521
1522 yystate = yyn;
1523 goto yynewstate;
1524
1525
1526 /*-----------------------------------------------------------.
1527 | yydefault -- do the default action for the current state. |
1528 `-----------------------------------------------------------*/
1529 yydefault:
1530 yyn = yydefact[yystate];
1531 if (yyn == 0)
1532 goto yyerrlab;
1533 goto yyreduce;
1534
1535
1536 /*-----------------------------.
1537 | yyreduce -- Do a reduction. |
1538 `-----------------------------*/
1539 yyreduce:
1540 /* yyn is the number of a rule to reduce with. */
1541 yylen = yyr2[yyn];
1542
1543 /* If YYLEN is nonzero, implement the default value of the action:
1544 `$$ = $1'.
1545
1546 Otherwise, the following line sets YYVAL to garbage.
1547 This behavior is undocumented and Bison
1548 users should not rely upon it. Assigning to YYVAL
1549 unconditionally makes the parser a bit smaller, and it avoids a
1550 GCC warning that YYVAL may be used uninitialized. */
1551 yyval = yyvsp[1-yylen];
1552
1553 /* Default location. */
1554 YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
1555 YY_REDUCE_PRINT (yyn);
1556 switch (yyn)
1557 {
1558 case 2:
1559 #line 163 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1560 {
1561 CommandFileASTNode * commandFile = new CommandFileASTNode();
1562 commandFile->setBlocks(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
1563 commandFile->setSections(dynamic_cast<ListASTNode*>((yyvsp[0].m_ast)));
1564 commandFile->setLocation((yylsp[-1]), (yylsp[0]));
1565 *resultAST = commandFile;
1566 ;}
1567 break;
1568
1569 case 3:
1570 #line 173 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1571 {
1572 ListASTNode * list = new ListASTNode();
1573 list->appendNode((yyvsp[0].m_ast));
1574 (yyval.m_ast) = list;
1575 ;}
1576 break;
1577
1578 case 4:
1579 #line 179 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1580 {
1581 dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1582 (yyval.m_ast) = (yyvsp[-1].m_ast);
1583 ;}
1584 break;
1585
1586 case 5:
1587 #line 186 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1588 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1589 break;
1590
1591 case 6:
1592 #line 187 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1593 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1594 break;
1595
1596 case 7:
1597 #line 188 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1598 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1599 break;
1600
1601 case 8:
1602 #line 192 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1603 {
1604 (yyval.m_ast) = new OptionsBlockASTNode(dynamic_cast<ListASTNode *>((yyvsp[-1].m_ast)));
1605 ;}
1606 break;
1607
1608 case 9:
1609 #line 198 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1610 {
1611 (yyval.m_ast) = new ConstantsBlockASTNode(dynamic_cast<ListASTNode *>((yyvsp[-1].m_ast)));
1612 ;}
1613 break;
1614
1615 case 10:
1616 #line 204 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1617 {
1618 ListASTNode * list = new ListASTNode();
1619 list->appendNode((yyvsp[0].m_ast));
1620 (yyval.m_ast) = list;
1621 ;}
1622 break;
1623
1624 case 11:
1625 #line 210 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1626 {
1627 dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1628 (yyval.m_ast) = (yyvsp[-1].m_ast);
1629 ;}
1630 break;
1631
1632 case 12:
1633 #line 216 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1634 { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1635 break;
1636
1637 case 13:
1638 #line 217 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1639 { (yyval.m_ast) = NULL; ;}
1640 break;
1641
1642 case 14:
1643 #line 221 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1644 {
1645 (yyval.m_ast) = new AssignmentASTNode((yyvsp[-2].m_str), (yyvsp[0].m_ast));
1646 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1647 ;}
1648 break;
1649
1650 case 15:
1651 #line 228 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1652 {
1653 (yyval.m_ast) = new SourcesBlockASTNode(dynamic_cast<ListASTNode *>((yyvsp[-1].m_ast)));
1654 ;}
1655 break;
1656
1657 case 16:
1658 #line 234 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1659 {
1660 ListASTNode * list = new ListASTNode();
1661 list->appendNode((yyvsp[0].m_ast));
1662 (yyval.m_ast) = list;
1663 ;}
1664 break;
1665
1666 case 17:
1667 #line 240 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1668 {
1669 dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1670 (yyval.m_ast) = (yyvsp[-1].m_ast);
1671 ;}
1672 break;
1673
1674 case 18:
1675 #line 248 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1676 {
1677 // tell the lexer that this is the name of a source file
1678 SourceDefASTNode * node = dynamic_cast<SourceDefASTNode*>((yyvsp[-2].m_ast));
1679 if ((yyvsp[-1].m_ast))
1680 {
1681 node->setAttributes(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
1682 }
1683 node->setLocation(node->getLocation(), (yylsp[0]));
1684 lexer->addSourceName(node->getName());
1685 (yyval.m_ast) = (yyvsp[-2].m_ast);
1686 ;}
1687 break;
1688
1689 case 19:
1690 #line 259 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1691 { (yyval.m_ast) = NULL; ;}
1692 break;
1693
1694 case 20:
1695 #line 263 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1696 {
1697 (yyval.m_ast) = new PathSourceDefASTNode((yyvsp[-2].m_str), (yyvsp[0].m_str));
1698 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1699 ;}
1700 break;
1701
1702 case 21:
1703 #line 268 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1704 {
1705 (yyval.m_ast) = new ExternSourceDefASTNode((yyvsp[-5].m_str), dynamic_cast<ExprASTNode*>((yyvsp[-1].m_ast)));
1706 (yyval.m_ast)->setLocation((yylsp[-5]), (yylsp[0]));
1707 ;}
1708 break;
1709
1710 case 22:
1711 #line 275 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1712 { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1713 break;
1714
1715 case 23:
1716 #line 276 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1717 { (yyval.m_ast) = NULL; ;}
1718 break;
1719
1720 case 24:
1721 #line 281 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1722 {
1723 ListASTNode * list = new ListASTNode();
1724 list->appendNode((yyvsp[0].m_ast));
1725 (yyval.m_ast) = list;
1726 ;}
1727 break;
1728
1729 case 25:
1730 #line 287 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1731 {
1732 dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast))->appendNode((yyvsp[0].m_ast));
1733 (yyval.m_ast) = (yyvsp[-2].m_ast);
1734 ;}
1735 break;
1736
1737 case 26:
1738 #line 295 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1739 {
1740 (yyval.m_ast) = new AssignmentASTNode((yyvsp[-2].m_str), (yyvsp[0].m_ast));
1741 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1742 ;}
1743 break;
1744
1745 case 27:
1746 #line 302 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1747 {
1748 ListASTNode * list = new ListASTNode();
1749 list->appendNode((yyvsp[0].m_ast));
1750 (yyval.m_ast) = list;
1751 ;}
1752 break;
1753
1754 case 28:
1755 #line 308 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1756 {
1757 dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1758 (yyval.m_ast) = (yyvsp[-1].m_ast);
1759 ;}
1760 break;
1761
1762 case 29:
1763 #line 315 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1764 {
1765 SectionContentsASTNode * sectionNode = dynamic_cast<SectionContentsASTNode*>((yyvsp[0].m_ast));
1766 if (sectionNode)
1767 {
1768 ExprASTNode * exprNode = dynamic_cast<ExprASTNode*>((yyvsp[-3].m_ast));
1769 sectionNode->setSectionNumberExpr(exprNode);
1770 sectionNode->setOptions(dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast)));
1771 sectionNode->setLocation((yylsp[-5]), sectionNode->getLocation());
1772 }
1773 (yyval.m_ast) = (yyvsp[0].m_ast);
1774 ;}
1775 break;
1776
1777 case 30:
1778 #line 330 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1779 {
1780 (yyval.m_ast) = (yyvsp[0].m_ast);
1781 ;}
1782 break;
1783
1784 case 31:
1785 #line 334 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1786 {
1787 (yyval.m_ast) = NULL;
1788 ;}
1789 break;
1790
1791 case 32:
1792 #line 341 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1793 {
1794 (yyval.m_ast) = (yyvsp[0].m_ast);
1795 ;}
1796 break;
1797
1798 case 33:
1799 #line 345 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1800 {
1801 (yyval.m_ast) = NULL;
1802 ;}
1803 break;
1804
1805 case 34:
1806 #line 352 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1807 {
1808 DataSectionContentsASTNode * dataSection = new DataSectionContentsASTNode((yyvsp[-1].m_ast));
1809 dataSection->setLocation((yylsp[-2]), (yylsp[0]));
1810 (yyval.m_ast) = dataSection;
1811 ;}
1812 break;
1813
1814 case 35:
1815 #line 358 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1816 {
1817 ListASTNode * listNode = dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast));
1818 (yyval.m_ast) = new BootableSectionContentsASTNode(listNode);
1819 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1820 ;}
1821 break;
1822
1823 case 36:
1824 #line 366 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1825 {
1826 ListASTNode * list = new ListASTNode();
1827 list->appendNode((yyvsp[0].m_ast));
1828 (yyval.m_ast) = list;
1829 ;}
1830 break;
1831
1832 case 37:
1833 #line 372 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1834 {
1835 dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1836 (yyval.m_ast) = (yyvsp[-1].m_ast);
1837 ;}
1838 break;
1839
1840 case 38:
1841 #line 379 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1842 { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1843 break;
1844
1845 case 39:
1846 #line 380 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1847 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1848 break;
1849
1850 case 40:
1851 #line 381 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1852 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1853 break;
1854
1855 case 41:
1856 #line 382 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1857 { (yyval.m_ast) = NULL; ;}
1858 break;
1859
1860 case 42:
1861 #line 386 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1862 {
1863 ListASTNode * list = new ListASTNode();
1864 list->appendNode((yyvsp[0].m_ast));
1865 (yyval.m_ast) = list;
1866 ;}
1867 break;
1868
1869 case 43:
1870 #line 392 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1871 {
1872 dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1873 (yyval.m_ast) = (yyvsp[-1].m_ast);
1874 ;}
1875 break;
1876
1877 case 44:
1878 #line 399 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1879 { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1880 break;
1881
1882 case 45:
1883 #line 400 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1884 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1885 break;
1886
1887 case 46:
1888 #line 401 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1889 { (yyval.m_ast) = NULL; ;}
1890 break;
1891
1892 case 47:
1893 #line 404 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1894 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1895 break;
1896
1897 case 48:
1898 #line 405 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1899 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1900 break;
1901
1902 case 49:
1903 #line 406 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1904 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1905 break;
1906
1907 case 50:
1908 #line 407 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1909 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1910 break;
1911
1912 case 51:
1913 #line 411 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1914 {
1915 LoadStatementASTNode * stmt = new LoadStatementASTNode();
1916 stmt->setData((yyvsp[-1].m_ast));
1917 stmt->setTarget((yyvsp[0].m_ast));
1918 // set dcd load flag if the "dcd" keyword was present.
1919 if ((yyvsp[-2].m_num))
1920 {
1921 stmt->setDCDLoad(true);
1922 }
1923 // set char locations for the statement
1924 if ((yyvsp[0].m_ast))
1925 {
1926 stmt->setLocation((yylsp[-3]), (yylsp[0]));
1927 }
1928 else
1929 {
1930 stmt->setLocation((yylsp[-3]), (yylsp[-1]));
1931 }
1932 (yyval.m_ast) = stmt;
1933 ;}
1934 break;
1935
1936 case 52:
1937 #line 434 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1938 {
1939 if (!elftosb::g_enableHABSupport)
1940 {
1941 yyerror(&yylloc, lexer, resultAST, "HAB features not supported with the selected family");
1942 YYABORT;
1943 }
1944
1945 (yyval.m_num) = 1;
1946 ;}
1947 break;
1948
1949 case 53:
1950 #line 443 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1951 { (yyval.m_num) = 0; ;}
1952 break;
1953
1954 case 54:
1955 #line 446 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1956 {
1957 (yyval.m_ast) = (yyvsp[0].m_ast);
1958 ;}
1959 break;
1960
1961 case 55:
1962 #line 450 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1963 {
1964 (yyval.m_ast) = new StringConstASTNode((yyvsp[0].m_str));
1965 (yyval.m_ast)->setLocation((yylsp[0]));
1966 ;}
1967 break;
1968
1969 case 56:
1970 #line 455 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1971 {
1972 (yyval.m_ast) = new SourceASTNode((yyvsp[0].m_str));
1973 (yyval.m_ast)->setLocation((yylsp[0]));
1974 ;}
1975 break;
1976
1977 case 57:
1978 #line 460 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1979 {
1980 (yyval.m_ast) = new SectionMatchListASTNode(dynamic_cast<ListASTNode*>((yyvsp[0].m_ast)));
1981 (yyval.m_ast)->setLocation((yylsp[0]));
1982 ;}
1983 break;
1984
1985 case 58:
1986 #line 465 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1987 {
1988 (yyval.m_ast) = new SectionMatchListASTNode(dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast)), (yyvsp[0].m_str));
1989 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1990 ;}
1991 break;
1992
1993 case 59:
1994 #line 470 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1995 {
1996 (yyval.m_ast) = new SectionMatchListASTNode(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)), (yyvsp[-3].m_str));
1997 (yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
1998 ;}
1999 break;
2000
2001 case 60:
2002 #line 475 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2003 {
2004 (yyval.m_ast) = new BlobConstASTNode((yyvsp[0].m_blob));
2005 (yyval.m_ast)->setLocation((yylsp[0]));
2006 ;}
2007 break;
2008
2009 case 61:
2010 #line 480 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2011 {
2012 ;}
2013 break;
2014
2015 case 62:
2016 #line 485 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2017 {
2018 ListASTNode * list = new ListASTNode();
2019 list->appendNode((yyvsp[0].m_ast));
2020 (yyval.m_ast) = list;
2021 ;}
2022 break;
2023
2024 case 63:
2025 #line 491 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2026 {
2027 dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast))->appendNode((yyvsp[0].m_ast));
2028 (yyval.m_ast) = (yyvsp[-2].m_ast);
2029 ;}
2030 break;
2031
2032 case 64:
2033 #line 499 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2034 {
2035 (yyval.m_ast) = new SectionASTNode((yyvsp[0].m_str), SectionASTNode::kInclude);
2036 (yyval.m_ast)->setLocation((yylsp[0]));
2037 ;}
2038 break;
2039
2040 case 65:
2041 #line 504 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2042 {
2043 (yyval.m_ast) = new SectionASTNode((yyvsp[0].m_str), SectionASTNode::kExclude);
2044 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2045 ;}
2046 break;
2047
2048 case 66:
2049 #line 511 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2050 {
2051 (yyval.m_ast) = (yyvsp[0].m_ast);
2052 ;}
2053 break;
2054
2055 case 67:
2056 #line 515 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2057 {
2058 (yyval.m_ast) = new NaturalLocationASTNode();
2059 // $$->setLocation();
2060 ;}
2061 break;
2062
2063 case 68:
2064 #line 522 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2065 {
2066 (yyval.m_ast) = new NaturalLocationASTNode();
2067 (yyval.m_ast)->setLocation((yylsp[0]));
2068 ;}
2069 break;
2070
2071 case 69:
2072 #line 527 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2073 {
2074 (yyval.m_ast) = (yyvsp[0].m_ast);
2075 ;}
2076 break;
2077
2078 case 70:
2079 #line 533 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2080 {
2081 IVTConstASTNode * ivt = new IVTConstASTNode();
2082 if ((yyvsp[-1].m_ast))
2083 {
2084 ivt->setFieldAssignments(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
2085 }
2086 ivt->setLocation((yylsp[-3]), (yylsp[0]));
2087 (yyval.m_ast) = ivt;
2088 ;}
2089 break;
2090
2091 case 71:
2092 #line 544 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2093 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
2094 break;
2095
2096 case 72:
2097 #line 545 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2098 { (yyval.m_ast) = NULL; ;}
2099 break;
2100
2101 case 73:
2102 #line 549 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2103 {
2104 CallStatementASTNode * stmt = new CallStatementASTNode();
2105 switch ((yyvsp[-2].m_num))
2106 {
2107 case 1:
2108 stmt->setCallType(CallStatementASTNode::kCallType);
2109 break;
2110 case 2:
2111 stmt->setCallType(CallStatementASTNode::kJumpType);
2112 break;
2113 default:
2114 yyerror(&yylloc, lexer, resultAST, "invalid call_or_jump value");
2115 YYABORT;
2116 break;
2117 }
2118 stmt->setTarget((yyvsp[-1].m_ast));
2119 stmt->setArgument((yyvsp[0].m_ast));
2120 stmt->setIsHAB(false);
2121 if ((yyvsp[0].m_ast))
2122 {
2123 stmt->setLocation((yylsp[-2]), (yylsp[0]));
2124 }
2125 else
2126 {
2127 stmt->setLocation((yylsp[-2]), (yylsp[-1]));
2128 }
2129 (yyval.m_ast) = stmt;
2130 ;}
2131 break;
2132
2133 case 74:
2134 #line 578 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2135 {
2136 if (!elftosb::g_enableHABSupport)
2137 {
2138 yyerror(&yylloc, lexer, resultAST, "HAB features not supported with the selected family");
2139 YYABORT;
2140 }
2141
2142 CallStatementASTNode * stmt = new CallStatementASTNode();
2143 switch ((yyvsp[-2].m_num))
2144 {
2145 case 1:
2146 stmt->setCallType(CallStatementASTNode::kCallType);
2147 break;
2148 case 2:
2149 stmt->setCallType(CallStatementASTNode::kJumpType);
2150 break;
2151 default:
2152 yyerror(&yylloc, lexer, resultAST, "invalid call_or_jump value");
2153 YYABORT;
2154 break;
2155 }
2156 stmt->setTarget((yyvsp[-1].m_ast));
2157 stmt->setArgument((yyvsp[0].m_ast));
2158 stmt->setIsHAB(true);
2159 if ((yyvsp[0].m_ast))
2160 {
2161 stmt->setLocation((yylsp[-3]), (yylsp[0]));
2162 }
2163 else
2164 {
2165 stmt->setLocation((yylsp[-3]), (yylsp[-1]));
2166 }
2167 (yyval.m_ast) = stmt;
2168 ;}
2169 break;
2170
2171 case 75:
2172 #line 614 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2173 { (yyval.m_num) = 1; ;}
2174 break;
2175
2176 case 76:
2177 #line 615 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2178 { (yyval.m_num) = 2; ;}
2179 break;
2180
2181 case 77:
2182 #line 619 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2183 {
2184 (yyval.m_ast) = new SymbolASTNode(NULL, (yyvsp[0].m_str));
2185 (yyval.m_ast)->setLocation((yylsp[0]));
2186 ;}
2187 break;
2188
2189 case 78:
2190 #line 624 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2191 {
2192 (yyval.m_ast) = new AddressRangeASTNode((yyvsp[0].m_ast), NULL);
2193 (yyval.m_ast)->setLocation((yyvsp[0].m_ast));
2194 ;}
2195 break;
2196
2197 case 79:
2198 #line 630 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2199 { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
2200 break;
2201
2202 case 80:
2203 #line 631 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2204 { (yyval.m_ast) = NULL; ;}
2205 break;
2206
2207 case 81:
2208 #line 632 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2209 { (yyval.m_ast) = NULL; ;}
2210 break;
2211
2212 case 82:
2213 #line 636 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2214 {
2215 (yyval.m_ast) = new FromStatementASTNode((yyvsp[-3].m_str), dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
2216 (yyval.m_ast)->setLocation((yylsp[-4]), (yylsp[0]));
2217 ;}
2218 break;
2219
2220 case 83:
2221 #line 643 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2222 {
2223 (yyval.m_ast) = new ModeStatementASTNode(dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast)));
2224 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2225 ;}
2226 break;
2227
2228 case 84:
2229 #line 650 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2230 {
2231 (yyval.m_ast) = new MessageStatementASTNode(MessageStatementASTNode::kInfo, (yyvsp[0].m_str));
2232 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2233 ;}
2234 break;
2235
2236 case 85:
2237 #line 655 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2238 {
2239 (yyval.m_ast) = new MessageStatementASTNode(MessageStatementASTNode::kWarning, (yyvsp[0].m_str));
2240 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2241 ;}
2242 break;
2243
2244 case 86:
2245 #line 660 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2246 {
2247 (yyval.m_ast) = new MessageStatementASTNode(MessageStatementASTNode::kError, (yyvsp[0].m_str));
2248 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2249 ;}
2250 break;
2251
2252 case 87:
2253 #line 667 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2254 {
2255 IfStatementASTNode * ifStmt = new IfStatementASTNode();
2256 ifStmt->setConditionExpr(dynamic_cast<ExprASTNode*>((yyvsp[-4].m_ast)));
2257 ifStmt->setIfStatements(dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast)));
2258 ifStmt->setElseStatements(dynamic_cast<ListASTNode*>((yyvsp[0].m_ast)));
2259 ifStmt->setLocation((yylsp[-5]), (yylsp[0]));
2260 (yyval.m_ast) = ifStmt;
2261 ;}
2262 break;
2263
2264 case 88:
2265 #line 678 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2266 {
2267 (yyval.m_ast) = (yyvsp[-1].m_ast);
2268 ;}
2269 break;
2270
2271 case 89:
2272 #line 682 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2273 {
2274 ListASTNode * list = new ListASTNode();
2275 list->appendNode((yyvsp[0].m_ast));
2276 (yyval.m_ast) = list;
2277 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2278 ;}
2279 break;
2280
2281 case 90:
2282 #line 688 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2283 { (yyval.m_ast) = NULL; ;}
2284 break;
2285
2286 case 91:
2287 #line 692 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2288 {
2289 (yyval.m_ast) = new AddressRangeASTNode((yyvsp[0].m_ast), NULL);
2290 (yyval.m_ast)->setLocation((yyvsp[0].m_ast));
2291 ;}
2292 break;
2293
2294 case 92:
2295 #line 697 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2296 {
2297 (yyval.m_ast) = new AddressRangeASTNode((yyvsp[-2].m_ast), (yyvsp[0].m_ast));
2298 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2299 ;}
2300 break;
2301
2302 case 93:
2303 #line 704 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2304 {
2305 (yyval.m_ast) = (yyvsp[0].m_ast);
2306 ;}
2307 break;
2308
2309 case 94:
2310 #line 708 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2311 {
2312 (yyval.m_ast) = new StringConstASTNode((yyvsp[0].m_str));
2313 (yyval.m_ast)->setLocation((yylsp[0]));
2314 ;}
2315 break;
2316
2317 case 95:
2318 #line 715 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2319 {
2320 (yyval.m_ast) = (yyvsp[0].m_ast);
2321 ;}
2322 break;
2323
2324 case 96:
2325 #line 719 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2326 {
2327 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2328 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2329 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kLessThan, right);
2330 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2331 ;}
2332 break;
2333
2334 case 97:
2335 #line 726 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2336 {
2337 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2338 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2339 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kGreaterThan, right);
2340 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2341 ;}
2342 break;
2343
2344 case 98:
2345 #line 733 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2346 {
2347 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2348 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2349 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kGreaterThanEqual, right);
2350 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2351 ;}
2352 break;
2353
2354 case 99:
2355 #line 740 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2356 {
2357 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2358 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2359 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kLessThanEqual, right);
2360 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2361 ;}
2362 break;
2363
2364 case 100:
2365 #line 747 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2366 {
2367 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2368 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2369 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kEqual, right);
2370 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2371 ;}
2372 break;
2373
2374 case 101:
2375 #line 754 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2376 {
2377 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2378 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2379 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kNotEqual, right);
2380 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2381 ;}
2382 break;
2383
2384 case 102:
2385 #line 761 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2386 {
2387 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2388 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2389 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBooleanAnd, right);
2390 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2391 ;}
2392 break;
2393
2394 case 103:
2395 #line 768 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2396 {
2397 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2398 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2399 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBooleanOr, right);
2400 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2401 ;}
2402 break;
2403
2404 case 104:
2405 #line 775 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2406 {
2407 (yyval.m_ast) = new BooleanNotExprASTNode(dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast)));
2408 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2409 ;}
2410 break;
2411
2412 case 105:
2413 #line 780 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2414 {
2415 (yyval.m_ast) = new SourceFileFunctionASTNode((yyvsp[-3].m_str), (yyvsp[-1].m_str));
2416 (yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2417 ;}
2418 break;
2419
2420 case 106:
2421 #line 785 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2422 {
2423 (yyval.m_ast) = (yyvsp[-1].m_ast);
2424 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2425 ;}
2426 break;
2427
2428 case 107:
2429 #line 790 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2430 {
2431 (yyval.m_ast) = new DefinedOperatorASTNode((yyvsp[-1].m_str));
2432 (yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2433 ;}
2434 break;
2435
2436 case 108:
2437 #line 796 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2438 { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
2439 break;
2440
2441 case 109:
2442 #line 800 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2443 {
2444 (yyval.m_ast) = new SymbolASTNode((yyvsp[0].m_str), (yyvsp[-2].m_str));
2445 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2446 ;}
2447 break;
2448
2449 case 110:
2450 #line 805 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2451 {
2452 (yyval.m_ast) = new SymbolASTNode((yyvsp[0].m_str));
2453 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2454 ;}
2455 break;
2456
2457 case 111:
2458 #line 813 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2459 {
2460 (yyval.m_ast) = (yyvsp[0].m_ast);
2461 ;}
2462 break;
2463
2464 case 112:
2465 #line 817 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2466 {
2467 (yyval.m_ast) = new VariableExprASTNode((yyvsp[0].m_str));
2468 (yyval.m_ast)->setLocation((yylsp[0]));
2469 ;}
2470 break;
2471
2472 case 113:
2473 #line 822 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2474 {
2475 (yyval.m_ast) = new SymbolRefExprASTNode(dynamic_cast<SymbolASTNode*>((yyvsp[0].m_ast)));
2476 (yyval.m_ast)->setLocation((yylsp[0]));
2477 ;}
2478 break;
2479
2480 case 114:
2481 #line 833 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2482 {
2483 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2484 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2485 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kAdd, right);
2486 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2487 ;}
2488 break;
2489
2490 case 115:
2491 #line 840 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2492 {
2493 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2494 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2495 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kSubtract, right);
2496 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2497 ;}
2498 break;
2499
2500 case 116:
2501 #line 847 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2502 {
2503 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2504 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2505 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kMultiply, right);
2506 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2507 ;}
2508 break;
2509
2510 case 117:
2511 #line 854 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2512 {
2513 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2514 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2515 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kDivide, right);
2516 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2517 ;}
2518 break;
2519
2520 case 118:
2521 #line 861 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2522 {
2523 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2524 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2525 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kModulus, right);
2526 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2527 ;}
2528 break;
2529
2530 case 119:
2531 #line 868 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2532 {
2533 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2534 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2535 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kPower, right);
2536 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2537 ;}
2538 break;
2539
2540 case 120:
2541 #line 875 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2542 {
2543 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2544 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2545 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBitwiseAnd, right);
2546 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2547 ;}
2548 break;
2549
2550 case 121:
2551 #line 882 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2552 {
2553 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2554 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2555 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBitwiseOr, right);
2556 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2557 ;}
2558 break;
2559
2560 case 122:
2561 #line 889 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2562 {
2563 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2564 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2565 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBitwiseXor, right);
2566 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2567 ;}
2568 break;
2569
2570 case 123:
2571 #line 896 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2572 {
2573 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2574 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2575 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kShiftLeft, right);
2576 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2577 ;}
2578 break;
2579
2580 case 124:
2581 #line 903 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2582 {
2583 ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2584 ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2585 (yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kShiftRight, right);
2586 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2587 ;}
2588 break;
2589
2590 case 125:
2591 #line 910 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2592 {
2593 (yyval.m_ast) = (yyvsp[0].m_ast);
2594 ;}
2595 break;
2596
2597 case 126:
2598 #line 914 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2599 {
2600 (yyval.m_ast) = new IntSizeExprASTNode(dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast)), (yyvsp[0].m_int)->getWordSize());
2601 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2602 ;}
2603 break;
2604
2605 case 127:
2606 #line 919 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2607 {
2608 (yyval.m_ast) = (yyvsp[-1].m_ast);
2609 (yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2610 ;}
2611 break;
2612
2613 case 128:
2614 #line 924 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2615 {
2616 (yyval.m_ast) = new SizeofOperatorASTNode(dynamic_cast<SymbolASTNode*>((yyvsp[-1].m_ast)));
2617 (yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2618 ;}
2619 break;
2620
2621 case 129:
2622 #line 929 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2623 {
2624 (yyval.m_ast) = new SizeofOperatorASTNode((yyvsp[-1].m_str));
2625 (yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2626 ;}
2627 break;
2628
2629 case 130:
2630 #line 934 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2631 {
2632 (yyval.m_ast) = new SizeofOperatorASTNode((yyvsp[-1].m_str));
2633 (yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2634 ;}
2635 break;
2636
2637 case 131:
2638 #line 941 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2639 {
2640 (yyval.m_ast) = (yyvsp[0].m_ast);
2641 ;}
2642 break;
2643
2644 case 132:
2645 #line 945 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2646 {
2647 (yyval.m_ast) = new NegativeExprASTNode(dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast)));
2648 (yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2649 ;}
2650 break;
2651
2652 case 133:
2653 #line 952 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2654 {
2655 (yyval.m_ast) = new IntConstExprASTNode((yyvsp[0].m_int)->getValue(), (yyvsp[0].m_int)->getWordSize());
2656 (yyval.m_ast)->setLocation((yylsp[0]));
2657 ;}
2658 break;
2659
2660
2661 default: break;
2662 }
2663
2664 /* Line 1126 of yacc.c. */
2665 #line 2663 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
2666
2667 yyvsp -= yylen;
2669 yyssp -= yylen;
2670 yylsp -= yylen;
2671
2672 YY_STACK_PRINT (yyss, yyssp);
2673
2674 *++yyvsp = yyval;
2675 *++yylsp = yyloc;
2676
2677 /* Now `shift' the result of the reduction. Determine what state
2678 that goes to, based on the state we popped back to and the rule
2679 number reduced by. */
2680
2681 yyn = yyr1[yyn];
2682
2683 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2684 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2685 yystate = yytable[yystate];
2686 else
2687 yystate = yydefgoto[yyn - YYNTOKENS];
2688
2689 goto yynewstate;
2690
2691
2692 /*------------------------------------.
2693 | yyerrlab -- here on detecting error |
2694 `------------------------------------*/
2695 yyerrlab:
2696 /* If not already recovering from an error, report this error. */
2697 if (!yyerrstatus)
2698 {
2699 ++yynerrs;
2700 #if YYERROR_VERBOSE
2701 yyn = yypact[yystate];
2702
2703 if (YYPACT_NINF < yyn && yyn < YYLAST)
2704 {
2705 int yytype = YYTRANSLATE (yychar);
2706 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2707 YYSIZE_T yysize = yysize0;
2708 YYSIZE_T yysize1;
2709 int yysize_overflow = 0;
2710 char *yymsg = 0;
2711 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5
2712 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2713 int yyx;
2714
2715 #if 0
2716 /* This is so xgettext sees the translatable formats that are
2717 constructed on the fly. */
2718 YY_("syntax error, unexpected %s");
2719 YY_("syntax error, unexpected %s, expecting %s");
2720 YY_("syntax error, unexpected %s, expecting %s or %s");
2721 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2722 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2723 #endif
2724 char *yyfmt;
2725 char const *yyf;
2726 static char const yyunexpected[] = "syntax error, unexpected %s";
2727 static char const yyexpecting[] = ", expecting %s";
2728 static char const yyor[] = " or %s";
2729 char yyformat[sizeof yyunexpected
2730 + sizeof yyexpecting - 1
2731 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2732 * (sizeof yyor - 1))];
2733 char const *yyprefix = yyexpecting;
2734
2735 /* Start YYX at -YYN if negative to avoid negative indexes in
2736 YYCHECK. */
2737 int yyxbegin = yyn < 0 ? -yyn : 0;
2738
2739 /* Stay within bounds of both yycheck and yytname. */
2740 int yychecklim = YYLAST - yyn;
2741 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2742 int yycount = 1;
2743
2744 yyarg[0] = yytname[yytype];
2745 yyfmt = yystpcpy (yyformat, yyunexpected);
2746
2747 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2748 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2749 {
2750 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2751 {
2752 yycount = 1;
2753 yysize = yysize0;
2754 yyformat[sizeof yyunexpected - 1] = '\0';
2755 break;
2756 }
2757 yyarg[yycount++] = yytname[yyx];
2758 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2759 yysize_overflow |= yysize1 < yysize;
2760 yysize = yysize1;
2761 yyfmt = yystpcpy (yyfmt, yyprefix);
2762 yyprefix = yyor;
2763 }
2764
2765 yyf = YY_(yyformat);
2766 yysize1 = yysize + yystrlen (yyf);
2767 yysize_overflow |= yysize1 < yysize;
2768 yysize = yysize1;
2769
2770 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
2771 yymsg = (char *) YYSTACK_ALLOC (yysize);
2772 if (yymsg)
2773 {
2774 /* Avoid sprintf, as that infringes on the user's name space.
2775 Don't have undefined behavior even if the translation
2776 produced a string with the wrong number of "%s"s. */
2777 char *yyp = yymsg;
2778 int yyi = 0;
2779 while ((*yyp = *yyf))
2780 {
2781 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2782 {
2783 yyp += yytnamerr (yyp, yyarg[yyi++]);
2784 yyf += 2;
2785 }
2786 else
2787 {
2788 yyp++;
2789 yyf++;
2790 }
2791 }
2792 yyerror (&yylloc, lexer, resultAST, yymsg);
2793 YYSTACK_FREE (yymsg);
2794 }
2795 else
2796 {
2797 yyerror (&yylloc, lexer, resultAST, YY_("syntax error"));
2798 goto yyexhaustedlab;
2799 }
2800 }
2801 else
2802 #endif /* YYERROR_VERBOSE */
2803 yyerror (&yylloc, lexer, resultAST, YY_("syntax error"));
2804 }
2805
2806 yyerror_range[0] = yylloc;
2807
2808 if (yyerrstatus == 3)
2809 {
2810 /* If just tried and failed to reuse look-ahead token after an
2811 error, discard it. */
2812
2813 if (yychar <= YYEOF)
2814 {
2815 /* Return failure if at end of input. */
2816 if (yychar == YYEOF)
2817 YYABORT;
2818 }
2819 else
2820 {
2821 yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
2822 yychar = YYEMPTY;
2823 }
2824 }
2825
2826 /* Else will try to reuse look-ahead token after shifting the error
2827 token. */
2828 goto yyerrlab1;
2829
2830
2831 /*---------------------------------------------------.
2832 | yyerrorlab -- error raised explicitly by YYERROR. |
2833 `---------------------------------------------------*/
2834 yyerrorlab:
2835
2836 /* Pacify compilers like GCC when the user code never invokes
2837 YYERROR and the label yyerrorlab therefore never appears in user
2838 code. */
2839 if (0)
2840 goto yyerrorlab;
2841
2842 yyerror_range[0] = yylsp[1-yylen];
2843 yylsp -= yylen;
2844 yyvsp -= yylen;
2845 yyssp -= yylen;
2846 yystate = *yyssp;
2847 goto yyerrlab1;
2848
2849
2850 /*-------------------------------------------------------------.
2851 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2852 `-------------------------------------------------------------*/
2853 yyerrlab1:
2854 yyerrstatus = 3; /* Each real token shifted decrements this. */
2855
2856 for (;;)
2857 {
2858 yyn = yypact[yystate];
2859 if (yyn != YYPACT_NINF)
2860 {
2861 yyn += YYTERROR;
2862 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2863 {
2864 yyn = yytable[yyn];
2865 if (0 < yyn)
2866 break;
2867 }
2868 }
2869
2870 /* Pop the current state because it cannot handle the error token. */
2871 if (yyssp == yyss)
2872 YYABORT;
2873
2874 yyerror_range[0] = *yylsp;
2875 yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
2876 YYPOPSTACK;
2877 yystate = *yyssp;
2878 YY_STACK_PRINT (yyss, yyssp);
2879 }
2880
2881 if (yyn == YYFINAL)
2882 YYACCEPT;
2883
2884 *++yyvsp = yylval;
2885
2886 yyerror_range[1] = yylloc;
2887 /* Using YYLLOC is tempting, but would change the location of
2888 the look-ahead. YYLOC is available though. */
2889 YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
2890 *++yylsp = yyloc;
2891
2892 /* Shift the error token. */
2893 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2894
2895 yystate = yyn;
2896 goto yynewstate;
2897
2898
2899 /*-------------------------------------.
2900 | yyacceptlab -- YYACCEPT comes here. |
2901 `-------------------------------------*/
2902 yyacceptlab:
2903 yyresult = 0;
2904 goto yyreturn;
2905
2906 /*-----------------------------------.
2907 | yyabortlab -- YYABORT comes here. |
2908 `-----------------------------------*/
2909 yyabortlab:
2910 yyresult = 1;
2911 goto yyreturn;
2912
2913 #ifndef yyoverflow
2914 /*-------------------------------------------------.
2915 | yyexhaustedlab -- memory exhaustion comes here. |
2916 `-------------------------------------------------*/
2917 yyexhaustedlab:
2918 yyerror (&yylloc, lexer, resultAST, YY_("memory exhausted"));
2919 yyresult = 2;
2920 /* Fall through. */
2921 #endif
2922
2923 yyreturn:
2924 if (yychar != YYEOF && yychar != YYEMPTY)
2925 yydestruct ("Cleanup: discarding lookahead",
2926 yytoken, &yylval, &yylloc);
2927 while (yyssp != yyss)
2928 {
2929 yydestruct ("Cleanup: popping",
2930 yystos[*yyssp], yyvsp, yylsp);
2931 YYPOPSTACK;
2932 }
2933 #ifndef yyoverflow
2934 if (yyss != yyssa)
2935 YYSTACK_FREE (yyss);
2936 #endif
2937 return yyresult;
2938 }
2939
2940
2941 #line 958 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2942
2943
2944 /* code goes here */
2945
2946 static int yylex(YYSTYPE * lvalp, YYLTYPE * yylloc, ElftosbLexer * lexer)
2947 {
2948 int token = lexer->yylex();
2949 *yylloc = lexer->getLocation();
2950 lexer->getSymbolValue(lvalp);
2951 return token;
2952 }
2953
2954 static void yyerror(YYLTYPE * yylloc, ElftosbLexer * lexer, CommandFileASTNode ** resultAST, const char * error)
2955 {
2956 throw syntax_error(format_string("line %d: %s\n", yylloc->m_firstLine, error));
2957 }
2958
2959
2960