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