xref: /netbsd-src/external/bsd/elftosb/dist/elftosb2/elftosb_parser.tab.cpp (revision 413d532bcc3f62d122e56d92e13ac64825a40baf)
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 
1034 #if YYERROR_VERBOSE
1035 
1036 # ifndef yystrlen
1037 #  if defined (__GLIBC__) && defined (_STRING_H)
1038 #   define yystrlen strlen
1039 #  else
1040 /* Return the length of YYSTR.  */
1041 static YYSIZE_T
1042 #   if defined (__STDC__) || defined (__cplusplus)
1043 yystrlen (const char *yystr)
1044 #   else
1045 yystrlen (yystr)
1046      const char *yystr;
1047 #   endif
1048 {
1049   const char *yys = yystr;
1050 
1051   while (*yys++ != '\0')
1052     continue;
1053 
1054   return yys - yystr - 1;
1055 }
1056 #  endif
1057 # endif
1058 
1059 # ifndef yystpcpy
1060 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1061 #   define yystpcpy stpcpy
1062 #  else
1063 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1064    YYDEST.  */
1065 static char *
1066 #   if defined (__STDC__) || defined (__cplusplus)
1067 yystpcpy (char *yydest, const char *yysrc)
1068 #   else
1069 yystpcpy (yydest, yysrc)
1070      char *yydest;
1071      const char *yysrc;
1072 #   endif
1073 {
1074   char *yyd = yydest;
1075   const char *yys = yysrc;
1076 
1077   while ((*yyd++ = *yys++) != '\0')
1078     continue;
1079 
1080   return yyd - 1;
1081 }
1082 #  endif
1083 # endif
1084 
1085 # ifndef yytnamerr
1086 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1087    quotes and backslashes, so that it's suitable for yyerror.  The
1088    heuristic is that double-quoting is unnecessary unless the string
1089    contains an apostrophe, a comma, or backslash (other than
1090    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1091    null, do not copy; instead, return the length of what the result
1092    would have been.  */
1093 static YYSIZE_T
1094 yytnamerr (char *yyres, const char *yystr)
1095 {
1096   if (*yystr == '"')
1097     {
1098       size_t yyn = 0;
1099       char const *yyp = yystr;
1100 
1101       for (;;)
1102 	switch (*++yyp)
1103 	  {
1104 	  case '\'':
1105 	  case ',':
1106 	    goto do_not_strip_quotes;
1107 
1108 	  case '\\':
1109 	    if (*++yyp != '\\')
1110 	      goto do_not_strip_quotes;
1111 	    /* Fall through.  */
1112 	  default:
1113 	    if (yyres)
1114 	      yyres[yyn] = *yyp;
1115 	    yyn++;
1116 	    break;
1117 
1118 	  case '"':
1119 	    if (yyres)
1120 	      yyres[yyn] = '\0';
1121 	    return yyn;
1122 	  }
1123     do_not_strip_quotes: ;
1124     }
1125 
1126   if (! yyres)
1127     return yystrlen (yystr);
1128 
1129   return yystpcpy (yyres, yystr) - yyres;
1130 }
1131 # endif
1132 
1133 #endif /* YYERROR_VERBOSE */
1134 
1135 
1136 
1137 #if YYDEBUG
1138 /*--------------------------------.
1139 | Print this symbol on YYOUTPUT.  |
1140 `--------------------------------*/
1141 
1142 #if defined (__STDC__) || defined (__cplusplus)
1143 static void
1144 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1145 #else
1146 static void
1147 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
1148     FILE *yyoutput;
1149     int yytype;
1150     YYSTYPE *yyvaluep;
1151     YYLTYPE *yylocationp;
1152 #endif
1153 {
1154   /* Pacify ``unused variable'' warnings.  */
1155   (void) yyvaluep;
1156   (void) yylocationp;
1157 
1158   if (yytype < YYNTOKENS)
1159     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1160   else
1161     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1162 
1163   YY_LOCATION_PRINT (yyoutput, *yylocationp);
1164   YYFPRINTF (yyoutput, ": ");
1165 
1166 # ifdef YYPRINT
1167   if (yytype < YYNTOKENS)
1168     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1169 # endif
1170   switch (yytype)
1171     {
1172       default:
1173         break;
1174     }
1175   YYFPRINTF (yyoutput, ")");
1176 }
1177 
1178 #endif /* ! YYDEBUG */
1179 /*-----------------------------------------------.
1180 | Release the memory associated to this symbol.  |
1181 `-----------------------------------------------*/
1182 
1183 #if defined (__STDC__) || defined (__cplusplus)
1184 static void
1185 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1186 #else
1187 static void
1188 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1189     const char *yymsg;
1190     int yytype;
1191     YYSTYPE *yyvaluep;
1192     YYLTYPE *yylocationp;
1193 #endif
1194 {
1195   /* Pacify ``unused variable'' warnings.  */
1196   (void) yyvaluep;
1197   (void) yylocationp;
1198 
1199   if (!yymsg)
1200     yymsg = "Deleting";
1201   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1202 
1203   switch (yytype)
1204     {
1205       case 3: /* "\"identifier\"" */
1206 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1207         { delete (yyvaluep->m_str); };
1208 #line 1209 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1209         break;
1210       case 4: /* "\"string\"" */
1211 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1212         { delete (yyvaluep->m_str); };
1213 #line 1214 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1214         break;
1215       case 5: /* "\"integer\"" */
1216 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1217         { delete (yyvaluep->m_int); };
1218 #line 1219 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1219         break;
1220       case 6: /* "\"section name\"" */
1221 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1222         { delete (yyvaluep->m_str); };
1223 #line 1224 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1224         break;
1225       case 7: /* "\"source name\"" */
1226 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1227         { delete (yyvaluep->m_str); };
1228 #line 1229 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1229         break;
1230       case 8: /* "\"binary object\"" */
1231 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1232         { delete (yyvaluep->m_blob); };
1233 #line 1234 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1234         break;
1235       case 36: /* "\"integer size\"" */
1236 #line 158 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1237         { delete (yyvaluep->m_int); };
1238 #line 1239 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
1239         break;
1240 
1241       default:
1242         break;
1243     }
1244 }
1245 
1246 
1247 /* Prevent warnings from -Wmissing-prototypes.  */
1248 
1249 #ifdef YYPARSE_PARAM
1250 # if defined (__STDC__) || defined (__cplusplus)
1251 int yyparse (void *YYPARSE_PARAM);
1252 # else
1253 int yyparse ();
1254 # endif
1255 #else /* ! YYPARSE_PARAM */
1256 #if defined (__STDC__) || defined (__cplusplus)
1257 int yyparse (ElftosbLexer * lexer, CommandFileASTNode ** resultAST);
1258 #else
1259 int yyparse ();
1260 #endif
1261 #endif /* ! YYPARSE_PARAM */
1262 
1263 
1264 
1265 
1266 
1267 
1268 /*----------.
1269 | yyparse.  |
1270 `----------*/
1271 
1272 #ifdef YYPARSE_PARAM
1273 # if defined (__STDC__) || defined (__cplusplus)
1274 int yyparse (void *YYPARSE_PARAM)
1275 # else
1276 int yyparse (YYPARSE_PARAM)
1277   void *YYPARSE_PARAM;
1278 # endif
1279 #else /* ! YYPARSE_PARAM */
1280 #if defined (__STDC__) || defined (__cplusplus)
1281 int
1282 yyparse (ElftosbLexer * lexer, CommandFileASTNode ** resultAST)
1283 #else
1284 int
1285 yyparse (lexer, resultAST)
1286     ElftosbLexer * lexer;
1287     CommandFileASTNode ** resultAST;
1288 #endif
1289 #endif
1290 {
1291   /* The look-ahead symbol.  */
1292 int yychar;
1293 
1294 /* The semantic value of the look-ahead symbol.  */
1295 YYSTYPE yylval;
1296 
1297 /* Number of syntax errors so far.  */
1298 int yynerrs;
1299 /* Location data for the look-ahead symbol.  */
1300 YYLTYPE yylloc;
1301 
1302   int yystate;
1303   int yyn;
1304   int yyresult;
1305   /* Number of tokens to shift before error messages enabled.  */
1306   int yyerrstatus;
1307   /* Look-ahead token as an internal (translated) token number.  */
1308   int yytoken = 0;
1309 
1310   /* Three stacks and their tools:
1311      `yyss': related to states,
1312      `yyvs': related to semantic values,
1313      `yyls': related to locations.
1314 
1315      Refer to the stacks thru separate pointers, to allow yyoverflow
1316      to reallocate them elsewhere.  */
1317 
1318   /* The state stack.  */
1319   short int yyssa[YYINITDEPTH];
1320   short int *yyss = yyssa;
1321   short int *yyssp;
1322 
1323   /* The semantic value stack.  */
1324   YYSTYPE yyvsa[YYINITDEPTH];
1325   YYSTYPE *yyvs = yyvsa;
1326   YYSTYPE *yyvsp;
1327 
1328   /* The location stack.  */
1329   YYLTYPE yylsa[YYINITDEPTH];
1330   YYLTYPE *yyls = yylsa;
1331   YYLTYPE *yylsp;
1332   /* The locations where the error started and ended. */
1333   YYLTYPE yyerror_range[2];
1334 
1335 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1336 
1337   YYSIZE_T yystacksize = YYINITDEPTH;
1338 
1339   /* The variables used to return semantic value and location from the
1340      action routines.  */
1341   YYSTYPE yyval;
1342   YYLTYPE yyloc;
1343 
1344   /* When reducing, the number of symbols on the RHS of the reduced
1345      rule.  */
1346   int yylen;
1347 
1348   YYDPRINTF ((stderr, "Starting parse\n"));
1349 
1350   yystate = 0;
1351   yyerrstatus = 0;
1352   yynerrs = 0;
1353   yychar = YYEMPTY;		/* Cause a token to be read.  */
1354 
1355   /* Initialize stack pointers.
1356      Waste one element of value and location stack
1357      so that they stay on the same level as the state stack.
1358      The wasted elements are never initialized.  */
1359 
1360   yyssp = yyss;
1361   yyvsp = yyvs;
1362   yylsp = yyls;
1363 #if YYLTYPE_IS_TRIVIAL
1364   /* Initialize the default location before parsing starts.  */
1365   yylloc.first_line   = yylloc.last_line   = 1;
1366   yylloc.first_column = yylloc.last_column = 0;
1367 #endif
1368 
1369   goto yysetstate;
1370 
1371 /*------------------------------------------------------------.
1372 | yynewstate -- Push a new state, which is found in yystate.  |
1373 `------------------------------------------------------------*/
1374  yynewstate:
1375   /* In all cases, when you get here, the value and location stacks
1376      have just been pushed. so pushing a state here evens the stacks.
1377      */
1378   yyssp++;
1379 
1380  yysetstate:
1381   *yyssp = yystate;
1382 
1383   if (yyss + yystacksize - 1 <= yyssp)
1384     {
1385       /* Get the current used size of the three stacks, in elements.  */
1386       YYSIZE_T yysize = yyssp - yyss + 1;
1387 
1388 #ifdef yyoverflow
1389       {
1390 	/* Give user a chance to reallocate the stack. Use copies of
1391 	   these so that the &'s don't force the real ones into
1392 	   memory.  */
1393 	YYSTYPE *yyvs1 = yyvs;
1394 	short int *yyss1 = yyss;
1395 	YYLTYPE *yyls1 = yyls;
1396 
1397 	/* Each stack pointer address is followed by the size of the
1398 	   data in use in that stack, in bytes.  This used to be a
1399 	   conditional around just the two extra args, but that might
1400 	   be undefined if yyoverflow is a macro.  */
1401 	yyoverflow (YY_("memory exhausted"),
1402 		    &yyss1, yysize * sizeof (*yyssp),
1403 		    &yyvs1, yysize * sizeof (*yyvsp),
1404 		    &yyls1, yysize * sizeof (*yylsp),
1405 		    &yystacksize);
1406 	yyls = yyls1;
1407 	yyss = yyss1;
1408 	yyvs = yyvs1;
1409       }
1410 #else /* no yyoverflow */
1411 # ifndef YYSTACK_RELOCATE
1412       goto yyexhaustedlab;
1413 # else
1414       /* Extend the stack our own way.  */
1415       if (YYMAXDEPTH <= yystacksize)
1416 	goto yyexhaustedlab;
1417       yystacksize *= 2;
1418       if (YYMAXDEPTH < yystacksize)
1419 	yystacksize = YYMAXDEPTH;
1420 
1421       {
1422 	short int *yyss1 = yyss;
1423 	union yyalloc *yyptr =
1424 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1425 	if (! yyptr)
1426 	  goto yyexhaustedlab;
1427 	YYSTACK_RELOCATE (yyss);
1428 	YYSTACK_RELOCATE (yyvs);
1429 	YYSTACK_RELOCATE (yyls);
1430 #  undef YYSTACK_RELOCATE
1431 	if (yyss1 != yyssa)
1432 	  YYSTACK_FREE (yyss1);
1433       }
1434 # endif
1435 #endif /* no yyoverflow */
1436 
1437       yyssp = yyss + yysize - 1;
1438       yyvsp = yyvs + yysize - 1;
1439       yylsp = yyls + yysize - 1;
1440 
1441       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1442 		  (unsigned long int) yystacksize));
1443 
1444       if (yyss + yystacksize - 1 <= yyssp)
1445 	YYABORT;
1446     }
1447 
1448   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1449 
1450   goto yybackup;
1451 
1452 /*-----------.
1453 | yybackup.  |
1454 `-----------*/
1455 yybackup:
1456 
1457 /* Do appropriate processing given the current state.  */
1458 /* Read a look-ahead token if we need one and don't already have one.  */
1459 /* yyresume: */
1460 
1461   /* First try to decide what to do without reference to look-ahead token.  */
1462 
1463   yyn = yypact[yystate];
1464   if (yyn == YYPACT_NINF)
1465     goto yydefault;
1466 
1467   /* Not known => get a look-ahead token if don't already have one.  */
1468 
1469   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1470   if (yychar == YYEMPTY)
1471     {
1472       YYDPRINTF ((stderr, "Reading a token: "));
1473       yychar = YYLEX;
1474     }
1475 
1476   if (yychar <= YYEOF)
1477     {
1478       yychar = yytoken = YYEOF;
1479       YYDPRINTF ((stderr, "Now at end of input.\n"));
1480     }
1481   else
1482     {
1483       yytoken = YYTRANSLATE (yychar);
1484       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1485     }
1486 
1487   /* If the proper action on seeing token YYTOKEN is to reduce or to
1488      detect an error, take that action.  */
1489   yyn += yytoken;
1490   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1491     goto yydefault;
1492   yyn = yytable[yyn];
1493   if (yyn <= 0)
1494     {
1495       if (yyn == 0 || yyn == YYTABLE_NINF)
1496 	goto yyerrlab;
1497       yyn = -yyn;
1498       goto yyreduce;
1499     }
1500 
1501   if (yyn == YYFINAL)
1502     YYACCEPT;
1503 
1504   /* Shift the look-ahead token.  */
1505   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1506 
1507   /* Discard the token being shifted unless it is eof.  */
1508   if (yychar != YYEOF)
1509     yychar = YYEMPTY;
1510 
1511   *++yyvsp = yylval;
1512   *++yylsp = yylloc;
1513 
1514   /* Count tokens shifted since error; after three, turn off error
1515      status.  */
1516   if (yyerrstatus)
1517     yyerrstatus--;
1518 
1519   yystate = yyn;
1520   goto yynewstate;
1521 
1522 
1523 /*-----------------------------------------------------------.
1524 | yydefault -- do the default action for the current state.  |
1525 `-----------------------------------------------------------*/
1526 yydefault:
1527   yyn = yydefact[yystate];
1528   if (yyn == 0)
1529     goto yyerrlab;
1530   goto yyreduce;
1531 
1532 
1533 /*-----------------------------.
1534 | yyreduce -- Do a reduction.  |
1535 `-----------------------------*/
1536 yyreduce:
1537   /* yyn is the number of a rule to reduce with.  */
1538   yylen = yyr2[yyn];
1539 
1540   /* If YYLEN is nonzero, implement the default value of the action:
1541      `$$ = $1'.
1542 
1543      Otherwise, the following line sets YYVAL to garbage.
1544      This behavior is undocumented and Bison
1545      users should not rely upon it.  Assigning to YYVAL
1546      unconditionally makes the parser a bit smaller, and it avoids a
1547      GCC warning that YYVAL may be used uninitialized.  */
1548   yyval = yyvsp[1-yylen];
1549 
1550   /* Default location. */
1551   YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
1552   YY_REDUCE_PRINT (yyn);
1553   switch (yyn)
1554     {
1555         case 2:
1556 #line 163 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1557     {
1558 							CommandFileASTNode * commandFile = new CommandFileASTNode();
1559 							commandFile->setBlocks(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
1560 							commandFile->setSections(dynamic_cast<ListASTNode*>((yyvsp[0].m_ast)));
1561 							commandFile->setLocation((yylsp[-1]), (yylsp[0]));
1562 							*resultAST = commandFile;
1563 						;}
1564     break;
1565 
1566   case 3:
1567 #line 173 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1568     {
1569 							ListASTNode * list = new ListASTNode();
1570 							list->appendNode((yyvsp[0].m_ast));
1571 							(yyval.m_ast) = list;
1572 						;}
1573     break;
1574 
1575   case 4:
1576 #line 179 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1577     {
1578 							dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1579 							(yyval.m_ast) = (yyvsp[-1].m_ast);
1580 						;}
1581     break;
1582 
1583   case 5:
1584 #line 186 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1585     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1586     break;
1587 
1588   case 6:
1589 #line 187 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1590     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1591     break;
1592 
1593   case 7:
1594 #line 188 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1595     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1596     break;
1597 
1598   case 8:
1599 #line 192 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1600     {
1601 								(yyval.m_ast) = new OptionsBlockASTNode(dynamic_cast<ListASTNode *>((yyvsp[-1].m_ast)));
1602 							;}
1603     break;
1604 
1605   case 9:
1606 #line 198 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1607     {
1608 								(yyval.m_ast) = new ConstantsBlockASTNode(dynamic_cast<ListASTNode *>((yyvsp[-1].m_ast)));
1609 							;}
1610     break;
1611 
1612   case 10:
1613 #line 204 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1614     {
1615 								ListASTNode * list = new ListASTNode();
1616 								list->appendNode((yyvsp[0].m_ast));
1617 								(yyval.m_ast) = list;
1618 							;}
1619     break;
1620 
1621   case 11:
1622 #line 210 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1623     {
1624 								dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1625 								(yyval.m_ast) = (yyvsp[-1].m_ast);
1626 							;}
1627     break;
1628 
1629   case 12:
1630 #line 216 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1631     { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1632     break;
1633 
1634   case 13:
1635 #line 217 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1636     { (yyval.m_ast) = NULL; ;}
1637     break;
1638 
1639   case 14:
1640 #line 221 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1641     {
1642 								(yyval.m_ast) = new AssignmentASTNode((yyvsp[-2].m_str), (yyvsp[0].m_ast));
1643 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1644 							;}
1645     break;
1646 
1647   case 15:
1648 #line 228 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1649     {
1650 							(yyval.m_ast) = new SourcesBlockASTNode(dynamic_cast<ListASTNode *>((yyvsp[-1].m_ast)));
1651 						;}
1652     break;
1653 
1654   case 16:
1655 #line 234 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1656     {
1657 							ListASTNode * list = new ListASTNode();
1658 							list->appendNode((yyvsp[0].m_ast));
1659 							(yyval.m_ast) = list;
1660 						;}
1661     break;
1662 
1663   case 17:
1664 #line 240 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1665     {
1666 							dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1667 							(yyval.m_ast) = (yyvsp[-1].m_ast);
1668 						;}
1669     break;
1670 
1671   case 18:
1672 #line 248 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1673     {
1674 								// tell the lexer that this is the name of a source file
1675 								SourceDefASTNode * node = dynamic_cast<SourceDefASTNode*>((yyvsp[-2].m_ast));
1676 								if ((yyvsp[-1].m_ast))
1677 								{
1678 									node->setAttributes(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
1679 								}
1680 								node->setLocation(node->getLocation(), (yylsp[0]));
1681 								lexer->addSourceName(node->getName());
1682 								(yyval.m_ast) = (yyvsp[-2].m_ast);
1683 							;}
1684     break;
1685 
1686   case 19:
1687 #line 259 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1688     { (yyval.m_ast) = NULL; ;}
1689     break;
1690 
1691   case 20:
1692 #line 263 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1693     {
1694 								(yyval.m_ast) = new PathSourceDefASTNode((yyvsp[-2].m_str), (yyvsp[0].m_str));
1695 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1696 							;}
1697     break;
1698 
1699   case 21:
1700 #line 268 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1701     {
1702 								(yyval.m_ast) = new ExternSourceDefASTNode((yyvsp[-5].m_str), dynamic_cast<ExprASTNode*>((yyvsp[-1].m_ast)));
1703 								(yyval.m_ast)->setLocation((yylsp[-5]), (yylsp[0]));
1704 							;}
1705     break;
1706 
1707   case 22:
1708 #line 275 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1709     { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1710     break;
1711 
1712   case 23:
1713 #line 276 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1714     { (yyval.m_ast) = NULL; ;}
1715     break;
1716 
1717   case 24:
1718 #line 281 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1719     {
1720 								ListASTNode * list = new ListASTNode();
1721 								list->appendNode((yyvsp[0].m_ast));
1722 								(yyval.m_ast) = list;
1723 							;}
1724     break;
1725 
1726   case 25:
1727 #line 287 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1728     {
1729 								dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast))->appendNode((yyvsp[0].m_ast));
1730 								(yyval.m_ast) = (yyvsp[-2].m_ast);
1731 							;}
1732     break;
1733 
1734   case 26:
1735 #line 295 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1736     {
1737 								(yyval.m_ast) = new AssignmentASTNode((yyvsp[-2].m_str), (yyvsp[0].m_ast));
1738 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1739 							;}
1740     break;
1741 
1742   case 27:
1743 #line 302 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1744     {
1745 								ListASTNode * list = new ListASTNode();
1746 								list->appendNode((yyvsp[0].m_ast));
1747 								(yyval.m_ast) = list;
1748 							;}
1749     break;
1750 
1751   case 28:
1752 #line 308 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1753     {
1754 								dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1755 								(yyval.m_ast) = (yyvsp[-1].m_ast);
1756 							;}
1757     break;
1758 
1759   case 29:
1760 #line 315 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1761     {
1762 								SectionContentsASTNode * sectionNode = dynamic_cast<SectionContentsASTNode*>((yyvsp[0].m_ast));
1763 								if (sectionNode)
1764 								{
1765 									ExprASTNode * exprNode = dynamic_cast<ExprASTNode*>((yyvsp[-3].m_ast));
1766 									sectionNode->setSectionNumberExpr(exprNode);
1767 									sectionNode->setOptions(dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast)));
1768 									sectionNode->setLocation((yylsp[-5]), sectionNode->getLocation());
1769 								}
1770 								(yyval.m_ast) = (yyvsp[0].m_ast);
1771 							;}
1772     break;
1773 
1774   case 30:
1775 #line 330 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1776     {
1777 								(yyval.m_ast) = (yyvsp[0].m_ast);
1778 							;}
1779     break;
1780 
1781   case 31:
1782 #line 334 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1783     {
1784 								(yyval.m_ast) = NULL;
1785 							;}
1786     break;
1787 
1788   case 32:
1789 #line 341 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1790     {
1791 								(yyval.m_ast) = (yyvsp[0].m_ast);
1792 							;}
1793     break;
1794 
1795   case 33:
1796 #line 345 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1797     {
1798 								(yyval.m_ast) = NULL;
1799 							;}
1800     break;
1801 
1802   case 34:
1803 #line 352 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1804     {
1805 								DataSectionContentsASTNode * dataSection = new DataSectionContentsASTNode((yyvsp[-1].m_ast));
1806 								dataSection->setLocation((yylsp[-2]), (yylsp[0]));
1807 								(yyval.m_ast) = dataSection;
1808 							;}
1809     break;
1810 
1811   case 35:
1812 #line 358 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1813     {
1814 								ListASTNode * listNode = dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast));
1815 								(yyval.m_ast) = new BootableSectionContentsASTNode(listNode);
1816 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1817 							;}
1818     break;
1819 
1820   case 36:
1821 #line 366 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1822     {
1823 								ListASTNode * list = new ListASTNode();
1824 								list->appendNode((yyvsp[0].m_ast));
1825 								(yyval.m_ast) = list;
1826 							;}
1827     break;
1828 
1829   case 37:
1830 #line 372 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1831     {
1832 								dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1833 								(yyval.m_ast) = (yyvsp[-1].m_ast);
1834 							;}
1835     break;
1836 
1837   case 38:
1838 #line 379 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1839     { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1840     break;
1841 
1842   case 39:
1843 #line 380 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1844     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1845     break;
1846 
1847   case 40:
1848 #line 381 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1849     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1850     break;
1851 
1852   case 41:
1853 #line 382 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1854     { (yyval.m_ast) = NULL; ;}
1855     break;
1856 
1857   case 42:
1858 #line 386 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1859     {
1860 								ListASTNode * list = new ListASTNode();
1861 								list->appendNode((yyvsp[0].m_ast));
1862 								(yyval.m_ast) = list;
1863 							;}
1864     break;
1865 
1866   case 43:
1867 #line 392 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1868     {
1869 								dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast))->appendNode((yyvsp[0].m_ast));
1870 								(yyval.m_ast) = (yyvsp[-1].m_ast);
1871 							;}
1872     break;
1873 
1874   case 44:
1875 #line 399 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1876     { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
1877     break;
1878 
1879   case 45:
1880 #line 400 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1881     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1882     break;
1883 
1884   case 46:
1885 #line 401 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1886     { (yyval.m_ast) = NULL; ;}
1887     break;
1888 
1889   case 47:
1890 #line 404 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1891     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1892     break;
1893 
1894   case 48:
1895 #line 405 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1896     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1897     break;
1898 
1899   case 49:
1900 #line 406 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1901     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1902     break;
1903 
1904   case 50:
1905 #line 407 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1906     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
1907     break;
1908 
1909   case 51:
1910 #line 411 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1911     {
1912 								LoadStatementASTNode * stmt = new LoadStatementASTNode();
1913 								stmt->setData((yyvsp[-1].m_ast));
1914 								stmt->setTarget((yyvsp[0].m_ast));
1915 								// set dcd load flag if the "dcd" keyword was present.
1916 								if ((yyvsp[-2].m_num))
1917 								{
1918 									stmt->setDCDLoad(true);
1919 								}
1920 								// set char locations for the statement
1921 								if ((yyvsp[0].m_ast))
1922 								{
1923 									stmt->setLocation((yylsp[-3]), (yylsp[0]));
1924 								}
1925 								else
1926 								{
1927 									stmt->setLocation((yylsp[-3]), (yylsp[-1]));
1928 								}
1929 								(yyval.m_ast) = stmt;
1930 							;}
1931     break;
1932 
1933   case 52:
1934 #line 434 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1935     {
1936 								if (!elftosb::g_enableHABSupport)
1937 								{
1938 									yyerror(&yylloc, lexer, resultAST, "HAB features not supported with the selected family");
1939 									YYABORT;
1940 								}
1941 
1942 								(yyval.m_num) = 1;
1943 							;}
1944     break;
1945 
1946   case 53:
1947 #line 443 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1948     { (yyval.m_num) = 0; ;}
1949     break;
1950 
1951   case 54:
1952 #line 446 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1953     {
1954 								(yyval.m_ast) = (yyvsp[0].m_ast);
1955 							;}
1956     break;
1957 
1958   case 55:
1959 #line 450 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1960     {
1961 								(yyval.m_ast) = new StringConstASTNode((yyvsp[0].m_str));
1962 								(yyval.m_ast)->setLocation((yylsp[0]));
1963 							;}
1964     break;
1965 
1966   case 56:
1967 #line 455 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1968     {
1969 								(yyval.m_ast) = new SourceASTNode((yyvsp[0].m_str));
1970 								(yyval.m_ast)->setLocation((yylsp[0]));
1971 							;}
1972     break;
1973 
1974   case 57:
1975 #line 460 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1976     {
1977 								(yyval.m_ast) = new SectionMatchListASTNode(dynamic_cast<ListASTNode*>((yyvsp[0].m_ast)));
1978 								(yyval.m_ast)->setLocation((yylsp[0]));
1979 							;}
1980     break;
1981 
1982   case 58:
1983 #line 465 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1984     {
1985 								(yyval.m_ast) = new SectionMatchListASTNode(dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast)), (yyvsp[0].m_str));
1986 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
1987 							;}
1988     break;
1989 
1990   case 59:
1991 #line 470 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
1992     {
1993 								(yyval.m_ast) = new SectionMatchListASTNode(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)), (yyvsp[-3].m_str));
1994 								(yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
1995 							;}
1996     break;
1997 
1998   case 60:
1999 #line 475 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2000     {
2001 								(yyval.m_ast) = new BlobConstASTNode((yyvsp[0].m_blob));
2002 								(yyval.m_ast)->setLocation((yylsp[0]));
2003 							;}
2004     break;
2005 
2006   case 61:
2007 #line 480 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2008     {
2009 							;}
2010     break;
2011 
2012   case 62:
2013 #line 485 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2014     {
2015 								ListASTNode * list = new ListASTNode();
2016 								list->appendNode((yyvsp[0].m_ast));
2017 								(yyval.m_ast) = list;
2018 							;}
2019     break;
2020 
2021   case 63:
2022 #line 491 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2023     {
2024 								dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast))->appendNode((yyvsp[0].m_ast));
2025 								(yyval.m_ast) = (yyvsp[-2].m_ast);
2026 							;}
2027     break;
2028 
2029   case 64:
2030 #line 499 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2031     {
2032 								(yyval.m_ast) = new SectionASTNode((yyvsp[0].m_str), SectionASTNode::kInclude);
2033 								(yyval.m_ast)->setLocation((yylsp[0]));
2034 							;}
2035     break;
2036 
2037   case 65:
2038 #line 504 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2039     {
2040 								(yyval.m_ast) = new SectionASTNode((yyvsp[0].m_str), SectionASTNode::kExclude);
2041 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2042 							;}
2043     break;
2044 
2045   case 66:
2046 #line 511 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2047     {
2048 								(yyval.m_ast) = (yyvsp[0].m_ast);
2049 							;}
2050     break;
2051 
2052   case 67:
2053 #line 515 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2054     {
2055 								(yyval.m_ast) = new NaturalLocationASTNode();
2056 //								$$->setLocation();
2057 							;}
2058     break;
2059 
2060   case 68:
2061 #line 522 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2062     {
2063 								(yyval.m_ast) = new NaturalLocationASTNode();
2064 								(yyval.m_ast)->setLocation((yylsp[0]));
2065 							;}
2066     break;
2067 
2068   case 69:
2069 #line 527 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2070     {
2071 								(yyval.m_ast) = (yyvsp[0].m_ast);
2072 							;}
2073     break;
2074 
2075   case 70:
2076 #line 533 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2077     {
2078 								IVTConstASTNode * ivt = new IVTConstASTNode();
2079 								if ((yyvsp[-1].m_ast))
2080 								{
2081 									ivt->setFieldAssignments(dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
2082 								}
2083 								ivt->setLocation((yylsp[-3]), (yylsp[0]));
2084 								(yyval.m_ast) = ivt;
2085 							;}
2086     break;
2087 
2088   case 71:
2089 #line 544 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2090     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
2091     break;
2092 
2093   case 72:
2094 #line 545 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2095     { (yyval.m_ast) = NULL; ;}
2096     break;
2097 
2098   case 73:
2099 #line 549 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2100     {
2101 								CallStatementASTNode * stmt = new CallStatementASTNode();
2102 								switch ((yyvsp[-2].m_num))
2103 								{
2104 									case 1:
2105 										stmt->setCallType(CallStatementASTNode::kCallType);
2106 										break;
2107 									case 2:
2108 										stmt->setCallType(CallStatementASTNode::kJumpType);
2109 										break;
2110 									default:
2111 										yyerror(&yylloc, lexer, resultAST, "invalid call_or_jump value");
2112 										YYABORT;
2113 										break;
2114 								}
2115 								stmt->setTarget((yyvsp[-1].m_ast));
2116 								stmt->setArgument((yyvsp[0].m_ast));
2117 								stmt->setIsHAB(false);
2118 								if ((yyvsp[0].m_ast))
2119 								{
2120 									stmt->setLocation((yylsp[-2]), (yylsp[0]));
2121 								}
2122 								else
2123 								{
2124 									stmt->setLocation((yylsp[-2]), (yylsp[-1]));
2125 								}
2126 								(yyval.m_ast) = stmt;
2127 							;}
2128     break;
2129 
2130   case 74:
2131 #line 578 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2132     {
2133 								if (!elftosb::g_enableHABSupport)
2134 								{
2135 									yyerror(&yylloc, lexer, resultAST, "HAB features not supported with the selected family");
2136 									YYABORT;
2137 								}
2138 
2139 								CallStatementASTNode * stmt = new CallStatementASTNode();
2140 								switch ((yyvsp[-2].m_num))
2141 								{
2142 									case 1:
2143 										stmt->setCallType(CallStatementASTNode::kCallType);
2144 										break;
2145 									case 2:
2146 										stmt->setCallType(CallStatementASTNode::kJumpType);
2147 										break;
2148 									default:
2149 										yyerror(&yylloc, lexer, resultAST, "invalid call_or_jump value");
2150 										YYABORT;
2151 										break;
2152 								}
2153 								stmt->setTarget((yyvsp[-1].m_ast));
2154 								stmt->setArgument((yyvsp[0].m_ast));
2155 								stmt->setIsHAB(true);
2156 								if ((yyvsp[0].m_ast))
2157 								{
2158 									stmt->setLocation((yylsp[-3]), (yylsp[0]));
2159 								}
2160 								else
2161 								{
2162 									stmt->setLocation((yylsp[-3]), (yylsp[-1]));
2163 								}
2164 								(yyval.m_ast) = stmt;
2165 							;}
2166     break;
2167 
2168   case 75:
2169 #line 614 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2170     { (yyval.m_num) = 1; ;}
2171     break;
2172 
2173   case 76:
2174 #line 615 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2175     { (yyval.m_num) = 2; ;}
2176     break;
2177 
2178   case 77:
2179 #line 619 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2180     {
2181 								(yyval.m_ast) = new SymbolASTNode(NULL, (yyvsp[0].m_str));
2182 								(yyval.m_ast)->setLocation((yylsp[0]));
2183 							;}
2184     break;
2185 
2186   case 78:
2187 #line 624 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2188     {
2189 								(yyval.m_ast) = new AddressRangeASTNode((yyvsp[0].m_ast), NULL);
2190 								(yyval.m_ast)->setLocation((yyvsp[0].m_ast));
2191 							;}
2192     break;
2193 
2194   case 79:
2195 #line 630 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2196     { (yyval.m_ast) = (yyvsp[-1].m_ast); ;}
2197     break;
2198 
2199   case 80:
2200 #line 631 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2201     { (yyval.m_ast) = NULL; ;}
2202     break;
2203 
2204   case 81:
2205 #line 632 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2206     { (yyval.m_ast) = NULL; ;}
2207     break;
2208 
2209   case 82:
2210 #line 636 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2211     {
2212 								(yyval.m_ast) = new FromStatementASTNode((yyvsp[-3].m_str), dynamic_cast<ListASTNode*>((yyvsp[-1].m_ast)));
2213 								(yyval.m_ast)->setLocation((yylsp[-4]), (yylsp[0]));
2214 							;}
2215     break;
2216 
2217   case 83:
2218 #line 643 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2219     {
2220 								(yyval.m_ast) = new ModeStatementASTNode(dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast)));
2221 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2222 							;}
2223     break;
2224 
2225   case 84:
2226 #line 650 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2227     {
2228 								(yyval.m_ast) = new MessageStatementASTNode(MessageStatementASTNode::kInfo, (yyvsp[0].m_str));
2229 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2230 							;}
2231     break;
2232 
2233   case 85:
2234 #line 655 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2235     {
2236 								(yyval.m_ast) = new MessageStatementASTNode(MessageStatementASTNode::kWarning, (yyvsp[0].m_str));
2237 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2238 							;}
2239     break;
2240 
2241   case 86:
2242 #line 660 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2243     {
2244 								(yyval.m_ast) = new MessageStatementASTNode(MessageStatementASTNode::kError, (yyvsp[0].m_str));
2245 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2246 							;}
2247     break;
2248 
2249   case 87:
2250 #line 667 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2251     {
2252 								IfStatementASTNode * ifStmt = new IfStatementASTNode();
2253 								ifStmt->setConditionExpr(dynamic_cast<ExprASTNode*>((yyvsp[-4].m_ast)));
2254 								ifStmt->setIfStatements(dynamic_cast<ListASTNode*>((yyvsp[-2].m_ast)));
2255 								ifStmt->setElseStatements(dynamic_cast<ListASTNode*>((yyvsp[0].m_ast)));
2256 								ifStmt->setLocation((yylsp[-5]), (yylsp[0]));
2257 								(yyval.m_ast) = ifStmt;
2258 							;}
2259     break;
2260 
2261   case 88:
2262 #line 678 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2263     {
2264 								(yyval.m_ast) = (yyvsp[-1].m_ast);
2265 							;}
2266     break;
2267 
2268   case 89:
2269 #line 682 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2270     {
2271 								ListASTNode * list = new ListASTNode();
2272 								list->appendNode((yyvsp[0].m_ast));
2273 								(yyval.m_ast) = list;
2274 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2275 							;}
2276     break;
2277 
2278   case 90:
2279 #line 688 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2280     { (yyval.m_ast) = NULL; ;}
2281     break;
2282 
2283   case 91:
2284 #line 692 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2285     {
2286 								(yyval.m_ast) = new AddressRangeASTNode((yyvsp[0].m_ast), NULL);
2287 								(yyval.m_ast)->setLocation((yyvsp[0].m_ast));
2288 							;}
2289     break;
2290 
2291   case 92:
2292 #line 697 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2293     {
2294 								(yyval.m_ast) = new AddressRangeASTNode((yyvsp[-2].m_ast), (yyvsp[0].m_ast));
2295 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2296 							;}
2297     break;
2298 
2299   case 93:
2300 #line 704 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2301     {
2302 								(yyval.m_ast) = (yyvsp[0].m_ast);
2303 							;}
2304     break;
2305 
2306   case 94:
2307 #line 708 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2308     {
2309 								(yyval.m_ast) = new StringConstASTNode((yyvsp[0].m_str));
2310 								(yyval.m_ast)->setLocation((yylsp[0]));
2311 							;}
2312     break;
2313 
2314   case 95:
2315 #line 715 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2316     {
2317 							(yyval.m_ast) = (yyvsp[0].m_ast);
2318 						;}
2319     break;
2320 
2321   case 96:
2322 #line 719 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2323     {
2324 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2325 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2326 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kLessThan, right);
2327 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2328 						;}
2329     break;
2330 
2331   case 97:
2332 #line 726 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2333     {
2334 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2335 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2336 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kGreaterThan, right);
2337 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2338 						;}
2339     break;
2340 
2341   case 98:
2342 #line 733 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2343     {
2344 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2345 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2346 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kGreaterThanEqual, right);
2347 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2348 						;}
2349     break;
2350 
2351   case 99:
2352 #line 740 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2353     {
2354 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2355 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2356 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kLessThanEqual, right);
2357 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2358 						;}
2359     break;
2360 
2361   case 100:
2362 #line 747 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2363     {
2364 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2365 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2366 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kEqual, right);
2367 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2368 						;}
2369     break;
2370 
2371   case 101:
2372 #line 754 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2373     {
2374 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2375 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2376 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kNotEqual, right);
2377 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2378 						;}
2379     break;
2380 
2381   case 102:
2382 #line 761 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2383     {
2384 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2385 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2386 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBooleanAnd, right);
2387 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2388 						;}
2389     break;
2390 
2391   case 103:
2392 #line 768 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2393     {
2394 							ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2395 							ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2396 							(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBooleanOr, right);
2397 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2398 						;}
2399     break;
2400 
2401   case 104:
2402 #line 775 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2403     {
2404 							(yyval.m_ast) = new BooleanNotExprASTNode(dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast)));
2405 							(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2406 						;}
2407     break;
2408 
2409   case 105:
2410 #line 780 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2411     {
2412 							(yyval.m_ast) = new SourceFileFunctionASTNode((yyvsp[-3].m_str), (yyvsp[-1].m_str));
2413 							(yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2414 						;}
2415     break;
2416 
2417   case 106:
2418 #line 785 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2419     {
2420 							(yyval.m_ast) = (yyvsp[-1].m_ast);
2421 							(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2422 						;}
2423     break;
2424 
2425   case 107:
2426 #line 790 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2427     {
2428 							(yyval.m_ast) = new DefinedOperatorASTNode((yyvsp[-1].m_str));
2429 							(yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2430 						;}
2431     break;
2432 
2433   case 108:
2434 #line 796 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2435     { (yyval.m_ast) = (yyvsp[0].m_ast); ;}
2436     break;
2437 
2438   case 109:
2439 #line 800 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2440     {
2441 								(yyval.m_ast) = new SymbolASTNode((yyvsp[0].m_str), (yyvsp[-2].m_str));
2442 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2443 							;}
2444     break;
2445 
2446   case 110:
2447 #line 805 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2448     {
2449 								(yyval.m_ast) = new SymbolASTNode((yyvsp[0].m_str));
2450 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2451 							;}
2452     break;
2453 
2454   case 111:
2455 #line 813 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2456     {
2457 								(yyval.m_ast) = (yyvsp[0].m_ast);
2458 							;}
2459     break;
2460 
2461   case 112:
2462 #line 817 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2463     {
2464 								(yyval.m_ast) = new VariableExprASTNode((yyvsp[0].m_str));
2465 								(yyval.m_ast)->setLocation((yylsp[0]));
2466 							;}
2467     break;
2468 
2469   case 113:
2470 #line 822 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2471     {
2472 								(yyval.m_ast) = new SymbolRefExprASTNode(dynamic_cast<SymbolASTNode*>((yyvsp[0].m_ast)));
2473 								(yyval.m_ast)->setLocation((yylsp[0]));
2474 							;}
2475     break;
2476 
2477   case 114:
2478 #line 833 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2479     {
2480 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2481 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2482 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kAdd, right);
2483 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2484 							;}
2485     break;
2486 
2487   case 115:
2488 #line 840 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2489     {
2490 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2491 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2492 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kSubtract, right);
2493 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2494 							;}
2495     break;
2496 
2497   case 116:
2498 #line 847 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2499     {
2500 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2501 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2502 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kMultiply, right);
2503 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2504 							;}
2505     break;
2506 
2507   case 117:
2508 #line 854 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2509     {
2510 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2511 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2512 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kDivide, right);
2513 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2514 							;}
2515     break;
2516 
2517   case 118:
2518 #line 861 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2519     {
2520 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2521 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2522 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kModulus, right);
2523 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2524 							;}
2525     break;
2526 
2527   case 119:
2528 #line 868 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2529     {
2530 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2531 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2532 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kPower, right);
2533 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2534 							;}
2535     break;
2536 
2537   case 120:
2538 #line 875 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2539     {
2540 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2541 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2542 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBitwiseAnd, right);
2543 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2544 							;}
2545     break;
2546 
2547   case 121:
2548 #line 882 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2549     {
2550 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2551 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2552 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBitwiseOr, right);
2553 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2554 							;}
2555     break;
2556 
2557   case 122:
2558 #line 889 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2559     {
2560 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2561 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2562 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kBitwiseXor, right);
2563 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2564 							;}
2565     break;
2566 
2567   case 123:
2568 #line 896 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2569     {
2570 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2571 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2572 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kShiftLeft, right);
2573 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2574 							;}
2575     break;
2576 
2577   case 124:
2578 #line 903 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2579     {
2580 								ExprASTNode * left = dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast));
2581 								ExprASTNode * right = dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast));
2582 								(yyval.m_ast) = new BinaryOpExprASTNode(left, BinaryOpExprASTNode::kShiftRight, right);
2583 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2584 							;}
2585     break;
2586 
2587   case 125:
2588 #line 910 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2589     {
2590 								(yyval.m_ast) = (yyvsp[0].m_ast);
2591 							;}
2592     break;
2593 
2594   case 126:
2595 #line 914 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2596     {
2597 								(yyval.m_ast) = new IntSizeExprASTNode(dynamic_cast<ExprASTNode*>((yyvsp[-2].m_ast)), (yyvsp[0].m_int)->getWordSize());
2598 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2599 							;}
2600     break;
2601 
2602   case 127:
2603 #line 919 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2604     {
2605 								(yyval.m_ast) = (yyvsp[-1].m_ast);
2606 								(yyval.m_ast)->setLocation((yylsp[-2]), (yylsp[0]));
2607 							;}
2608     break;
2609 
2610   case 128:
2611 #line 924 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2612     {
2613 							(yyval.m_ast) = new SizeofOperatorASTNode(dynamic_cast<SymbolASTNode*>((yyvsp[-1].m_ast)));
2614 							(yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2615 						;}
2616     break;
2617 
2618   case 129:
2619 #line 929 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2620     {
2621 							(yyval.m_ast) = new SizeofOperatorASTNode((yyvsp[-1].m_str));
2622 							(yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2623 						;}
2624     break;
2625 
2626   case 130:
2627 #line 934 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2628     {
2629 							(yyval.m_ast) = new SizeofOperatorASTNode((yyvsp[-1].m_str));
2630 							(yyval.m_ast)->setLocation((yylsp[-3]), (yylsp[0]));
2631 						;}
2632     break;
2633 
2634   case 131:
2635 #line 941 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2636     {
2637 								(yyval.m_ast) = (yyvsp[0].m_ast);
2638 							;}
2639     break;
2640 
2641   case 132:
2642 #line 945 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2643     {
2644 								(yyval.m_ast) = new NegativeExprASTNode(dynamic_cast<ExprASTNode*>((yyvsp[0].m_ast)));
2645 								(yyval.m_ast)->setLocation((yylsp[-1]), (yylsp[0]));
2646 							;}
2647     break;
2648 
2649   case 133:
2650 #line 952 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2651     {
2652 								(yyval.m_ast) = new IntConstExprASTNode((yyvsp[0].m_int)->getValue(), (yyvsp[0].m_int)->getWordSize());
2653 								(yyval.m_ast)->setLocation((yylsp[0]));
2654 							;}
2655     break;
2656 
2657 
2658       default: break;
2659     }
2660 
2661 /* Line 1126 of yacc.c.  */
2662 #line 2663 "/Users/creed/projects/fsl/fromsvr/elftosb/build/elftosb.build/Debug/elftosb.build/DerivedSources/elftosb_parser.tab.cpp"
2663 
2664   yyvsp -= yylen;
2665   yyssp -= yylen;
2666   yylsp -= yylen;
2667 
2668   YY_STACK_PRINT (yyss, yyssp);
2669 
2670   *++yyvsp = yyval;
2671   *++yylsp = yyloc;
2672 
2673   /* Now `shift' the result of the reduction.  Determine what state
2674      that goes to, based on the state we popped back to and the rule
2675      number reduced by.  */
2676 
2677   yyn = yyr1[yyn];
2678 
2679   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2680   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2681     yystate = yytable[yystate];
2682   else
2683     yystate = yydefgoto[yyn - YYNTOKENS];
2684 
2685   goto yynewstate;
2686 
2687 
2688 /*------------------------------------.
2689 | yyerrlab -- here on detecting error |
2690 `------------------------------------*/
2691 yyerrlab:
2692   /* If not already recovering from an error, report this error.  */
2693   if (!yyerrstatus)
2694     {
2695       ++yynerrs;
2696 #if YYERROR_VERBOSE
2697       yyn = yypact[yystate];
2698 
2699       if (YYPACT_NINF < yyn && yyn < YYLAST)
2700 	{
2701 	  int yytype = YYTRANSLATE (yychar);
2702 	  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2703 	  YYSIZE_T yysize = yysize0;
2704 	  YYSIZE_T yysize1;
2705 	  int yysize_overflow = 0;
2706 	  char *yymsg = 0;
2707 #	  define YYERROR_VERBOSE_ARGS_MAXIMUM 5
2708 	  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2709 	  int yyx;
2710 
2711 #if 0
2712 	  /* This is so xgettext sees the translatable formats that are
2713 	     constructed on the fly.  */
2714 	  YY_("syntax error, unexpected %s");
2715 	  YY_("syntax error, unexpected %s, expecting %s");
2716 	  YY_("syntax error, unexpected %s, expecting %s or %s");
2717 	  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2718 	  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2719 #endif
2720 	  char *yyfmt;
2721 	  char const *yyf;
2722 	  static char const yyunexpected[] = "syntax error, unexpected %s";
2723 	  static char const yyexpecting[] = ", expecting %s";
2724 	  static char const yyor[] = " or %s";
2725 	  char yyformat[sizeof yyunexpected
2726 			+ sizeof yyexpecting - 1
2727 			+ ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2728 			   * (sizeof yyor - 1))];
2729 	  char const *yyprefix = yyexpecting;
2730 
2731 	  /* Start YYX at -YYN if negative to avoid negative indexes in
2732 	     YYCHECK.  */
2733 	  int yyxbegin = yyn < 0 ? -yyn : 0;
2734 
2735 	  /* Stay within bounds of both yycheck and yytname.  */
2736 	  int yychecklim = YYLAST - yyn;
2737 	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2738 	  int yycount = 1;
2739 
2740 	  yyarg[0] = yytname[yytype];
2741 	  yyfmt = yystpcpy (yyformat, yyunexpected);
2742 
2743 	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2744 	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2745 	      {
2746 		if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2747 		  {
2748 		    yycount = 1;
2749 		    yysize = yysize0;
2750 		    yyformat[sizeof yyunexpected - 1] = '\0';
2751 		    break;
2752 		  }
2753 		yyarg[yycount++] = yytname[yyx];
2754 		yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2755 		yysize_overflow |= yysize1 < yysize;
2756 		yysize = yysize1;
2757 		yyfmt = yystpcpy (yyfmt, yyprefix);
2758 		yyprefix = yyor;
2759 	      }
2760 
2761 	  yyf = YY_(yyformat);
2762 	  yysize1 = yysize + yystrlen (yyf);
2763 	  yysize_overflow |= yysize1 < yysize;
2764 	  yysize = yysize1;
2765 
2766 	  if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
2767 	    yymsg = (char *) YYSTACK_ALLOC (yysize);
2768 	  if (yymsg)
2769 	    {
2770 	      /* Avoid sprintf, as that infringes on the user's name space.
2771 		 Don't have undefined behavior even if the translation
2772 		 produced a string with the wrong number of "%s"s.  */
2773 	      char *yyp = yymsg;
2774 	      int yyi = 0;
2775 	      while ((*yyp = *yyf))
2776 		{
2777 		  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2778 		    {
2779 		      yyp += yytnamerr (yyp, yyarg[yyi++]);
2780 		      yyf += 2;
2781 		    }
2782 		  else
2783 		    {
2784 		      yyp++;
2785 		      yyf++;
2786 		    }
2787 		}
2788 	      yyerror (&yylloc, lexer, resultAST, yymsg);
2789 	      YYSTACK_FREE (yymsg);
2790 	    }
2791 	  else
2792 	    {
2793 	      yyerror (&yylloc, lexer, resultAST, YY_("syntax error"));
2794 	      goto yyexhaustedlab;
2795 	    }
2796 	}
2797       else
2798 #endif /* YYERROR_VERBOSE */
2799 	yyerror (&yylloc, lexer, resultAST, YY_("syntax error"));
2800     }
2801 
2802   yyerror_range[0] = yylloc;
2803 
2804   if (yyerrstatus == 3)
2805     {
2806       /* If just tried and failed to reuse look-ahead token after an
2807 	 error, discard it.  */
2808 
2809       if (yychar <= YYEOF)
2810         {
2811 	  /* Return failure if at end of input.  */
2812 	  if (yychar == YYEOF)
2813 	    YYABORT;
2814         }
2815       else
2816 	{
2817 	  yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
2818 	  yychar = YYEMPTY;
2819 	}
2820     }
2821 
2822   /* Else will try to reuse look-ahead token after shifting the error
2823      token.  */
2824   goto yyerrlab1;
2825 
2826 
2827 /*---------------------------------------------------.
2828 | yyerrorlab -- error raised explicitly by YYERROR.  |
2829 `---------------------------------------------------*/
2830 yyerrorlab:
2831 
2832   /* Pacify compilers like GCC when the user code never invokes
2833      YYERROR and the label yyerrorlab therefore never appears in user
2834      code.  */
2835   if (0)
2836      goto yyerrorlab;
2837 
2838   yyerror_range[0] = yylsp[1-yylen];
2839   yylsp -= yylen;
2840   yyvsp -= yylen;
2841   yyssp -= yylen;
2842   yystate = *yyssp;
2843   goto yyerrlab1;
2844 
2845 
2846 /*-------------------------------------------------------------.
2847 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2848 `-------------------------------------------------------------*/
2849 yyerrlab1:
2850   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
2851 
2852   for (;;)
2853     {
2854       yyn = yypact[yystate];
2855       if (yyn != YYPACT_NINF)
2856 	{
2857 	  yyn += YYTERROR;
2858 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2859 	    {
2860 	      yyn = yytable[yyn];
2861 	      if (0 < yyn)
2862 		break;
2863 	    }
2864 	}
2865 
2866       /* Pop the current state because it cannot handle the error token.  */
2867       if (yyssp == yyss)
2868 	YYABORT;
2869 
2870       yyerror_range[0] = *yylsp;
2871       yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
2872       YYPOPSTACK;
2873       yystate = *yyssp;
2874       YY_STACK_PRINT (yyss, yyssp);
2875     }
2876 
2877   if (yyn == YYFINAL)
2878     YYACCEPT;
2879 
2880   *++yyvsp = yylval;
2881 
2882   yyerror_range[1] = yylloc;
2883   /* Using YYLLOC is tempting, but would change the location of
2884      the look-ahead.  YYLOC is available though. */
2885   YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
2886   *++yylsp = yyloc;
2887 
2888   /* Shift the error token. */
2889   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2890 
2891   yystate = yyn;
2892   goto yynewstate;
2893 
2894 
2895 /*-------------------------------------.
2896 | yyacceptlab -- YYACCEPT comes here.  |
2897 `-------------------------------------*/
2898 yyacceptlab:
2899   yyresult = 0;
2900   goto yyreturn;
2901 
2902 /*-----------------------------------.
2903 | yyabortlab -- YYABORT comes here.  |
2904 `-----------------------------------*/
2905 yyabortlab:
2906   yyresult = 1;
2907   goto yyreturn;
2908 
2909 #ifndef yyoverflow
2910 /*-------------------------------------------------.
2911 | yyexhaustedlab -- memory exhaustion comes here.  |
2912 `-------------------------------------------------*/
2913 yyexhaustedlab:
2914   yyerror (&yylloc, lexer, resultAST, YY_("memory exhausted"));
2915   yyresult = 2;
2916   /* Fall through.  */
2917 #endif
2918 
2919 yyreturn:
2920   if (yychar != YYEOF && yychar != YYEMPTY)
2921      yydestruct ("Cleanup: discarding lookahead",
2922 		 yytoken, &yylval, &yylloc);
2923   while (yyssp != yyss)
2924     {
2925       yydestruct ("Cleanup: popping",
2926 		  yystos[*yyssp], yyvsp, yylsp);
2927       YYPOPSTACK;
2928     }
2929 #ifndef yyoverflow
2930   if (yyss != yyssa)
2931     YYSTACK_FREE (yyss);
2932 #endif
2933   return yyresult;
2934 }
2935 
2936 
2937 #line 958 "/Users/creed/projects/fsl/fromsvr/elftosb/elftosb2/elftosb_parser.y"
2938 
2939 
2940 /* code goes here */
2941 
2942 static int yylex(YYSTYPE * lvalp, YYLTYPE * yylloc, ElftosbLexer * lexer)
2943 {
2944 	int token = lexer->yylex();
2945 	*yylloc = lexer->getLocation();
2946 	lexer->getSymbolValue(lvalp);
2947 	return token;
2948 }
2949 
2950 static void yyerror(YYLTYPE * yylloc, ElftosbLexer * lexer, CommandFileASTNode ** resultAST, const char * error)
2951 {
2952 	throw syntax_error(format_string("line %d: %s\n", yylloc->m_firstLine, error));
2953 }
2954 
2955 
2956