UnitsApi.tab.c

Go to the documentation of this file.
00001 
00002 /* A Bison parser, made by GNU Bison 2.4.1.  */
00003 
00004 /* Skeleton implementation for Bison's Yacc-like parsers in C
00005    
00006       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
00007    Free Software Foundation, Inc.
00008    
00009    This program is free software: you can redistribute it and/or modify
00010    it under the terms of the GNU General Public License as published by
00011    the Free Software Foundation, either version 3 of the License, or
00012    (at your option) any later version.
00013    
00014    This program is distributed in the hope that it will be useful,
00015    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017    GNU General Public License for more details.
00018    
00019    You should have received a copy of the GNU General Public License
00020    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
00021 
00022 /* As a special exception, you may create a larger work that contains
00023    part or all of the Bison parser skeleton and distribute that work
00024    under terms of your choice, so long as that work isn't itself a
00025    parser generator using the skeleton or a modified version thereof
00026    as a parser skeleton.  Alternatively, if you modify or redistribute
00027    the parser skeleton itself, you may (at your option) remove this
00028    special exception, which will cause the skeleton and the resulting
00029    Bison output files to be licensed under the GNU General Public
00030    License without this special exception.
00031    
00032    This special exception was added by the Free Software Foundation in
00033    version 2.2 of Bison.  */
00034 
00035 /* C LALR(1) parser skeleton written by Richard Stallman, by
00036    simplifying the original so-called "semantic" parser.  */
00037 
00038 /* All symbols defined below should begin with yy or YY, to avoid
00039    infringing on user name space.  This should be done even for local
00040    variables, as they might otherwise be expanded by user macros.
00041    There are some unavoidable exceptions within include files to
00042    define necessary library symbols; they are noted "INFRINGES ON
00043    USER NAME SPACE" below.  */
00044 
00045 /* Identify Bison output.  */
00046 #define YYBISON 1
00047 
00048 /* Bison version.  */
00049 #define YYBISON_VERSION "2.4.1"
00050 
00051 /* Skeleton name.  */
00052 #define YYSKELETON_NAME "yacc.c"
00053 
00054 /* Pure parsers.  */
00055 #define YYPURE 0
00056 
00057 /* Push parsers.  */
00058 #define YYPUSH 0
00059 
00060 /* Pull parsers.  */
00061 #define YYPULL 1
00062 
00063 /* Using locations.  */
00064 #define YYLSP_NEEDED 0
00065 
00066 
00067 
00068 /* Copy the first part of user declarations.  */
00069 
00070 /* Line 189 of yacc.c  */
00071 #line 6 "UnitsApi.y"
00072 
00073        #define YYSTYPE double
00074        #define yyparse Unit_yyparse
00075        #define yyerror Unit_yyerror
00076 
00077 
00078 /* Line 189 of yacc.c  */
00079 #line 80 "UnitsApi.tab.c"
00080 
00081 /* Enabling traces.  */
00082 #ifndef YYDEBUG
00083 # define YYDEBUG 0
00084 #endif
00085 
00086 /* Enabling verbose error messages.  */
00087 #ifdef YYERROR_VERBOSE
00088 # undef YYERROR_VERBOSE
00089 # define YYERROR_VERBOSE 1
00090 #else
00091 # define YYERROR_VERBOSE 0
00092 #endif
00093 
00094 /* Enabling the token table.  */
00095 #ifndef YYTOKEN_TABLE
00096 # define YYTOKEN_TABLE 0
00097 #endif
00098 
00099 
00100 /* Tokens.  */
00101 #ifndef YYTOKENTYPE
00102 # define YYTOKENTYPE
00103    /* Put the tokens into the symbol table, so that GDB and other debuggers
00104       know about them.  */
00105    enum yytokentype {
00106      ACOS = 258,
00107      ASIN = 259,
00108      ATAN = 260,
00109      ATAN2 = 261,
00110      COS = 262,
00111      EXP = 263,
00112      ABS = 264,
00113      MOD = 265,
00114      LOG = 266,
00115      LOG10 = 267,
00116      POW = 268,
00117      SIN = 269,
00118      SINH = 270,
00119      TAN = 271,
00120      TANH = 272,
00121      SQRT = 273,
00122      UNIT = 274,
00123      NUM = 275,
00124      NEG = 276
00125    };
00126 #endif
00127 
00128 
00129 
00130 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00131 typedef int YYSTYPE;
00132 # define YYSTYPE_IS_TRIVIAL 1
00133 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00134 # define YYSTYPE_IS_DECLARED 1
00135 #endif
00136 
00137 
00138 /* Copy the second part of user declarations.  */
00139 
00140 
00141 /* Line 264 of yacc.c  */
00142 #line 143 "UnitsApi.tab.c"
00143 
00144 #ifdef short
00145 # undef short
00146 #endif
00147 
00148 #ifdef YYTYPE_UINT8
00149 typedef YYTYPE_UINT8 yytype_uint8;
00150 #else
00151 typedef unsigned char yytype_uint8;
00152 #endif
00153 
00154 #ifdef YYTYPE_INT8
00155 typedef YYTYPE_INT8 yytype_int8;
00156 #elif (defined __STDC__ || defined __C99__FUNC__ \
00157      || defined __cplusplus || defined _MSC_VER)
00158 typedef signed char yytype_int8;
00159 #else
00160 typedef short int yytype_int8;
00161 #endif
00162 
00163 #ifdef YYTYPE_UINT16
00164 typedef YYTYPE_UINT16 yytype_uint16;
00165 #else
00166 typedef unsigned short int yytype_uint16;
00167 #endif
00168 
00169 #ifdef YYTYPE_INT16
00170 typedef YYTYPE_INT16 yytype_int16;
00171 #else
00172 typedef short int yytype_int16;
00173 #endif
00174 
00175 #ifndef YYSIZE_T
00176 # ifdef __SIZE_TYPE__
00177 #  define YYSIZE_T __SIZE_TYPE__
00178 # elif defined size_t
00179 #  define YYSIZE_T size_t
00180 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00181      || defined __cplusplus || defined _MSC_VER)
00182 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00183 #  define YYSIZE_T size_t
00184 # else
00185 #  define YYSIZE_T unsigned int
00186 # endif
00187 #endif
00188 
00189 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00190 
00191 #ifndef YY_
00192 # if YYENABLE_NLS
00193 #  if ENABLE_NLS
00194 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
00195 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
00196 #  endif
00197 # endif
00198 # ifndef YY_
00199 #  define YY_(msgid) msgid
00200 # endif
00201 #endif
00202 
00203 /* Suppress unused-variable warnings by "using" E.  */
00204 #if ! defined lint || defined __GNUC__
00205 # define YYUSE(e) ((void) (e))
00206 #else
00207 # define YYUSE(e) /* empty */
00208 #endif
00209 
00210 /* Identity function, used to suppress warnings about constant conditions.  */
00211 #ifndef lint
00212 # define YYID(n) (n)
00213 #else
00214 #if (defined __STDC__ || defined __C99__FUNC__ \
00215      || defined __cplusplus || defined _MSC_VER)
00216 static int
00217 YYID (int yyi)
00218 #else
00219 static int
00220 YYID (yyi)
00221     int yyi;
00222 #endif
00223 {
00224   return yyi;
00225 }
00226 #endif
00227 
00228 #if ! defined yyoverflow || YYERROR_VERBOSE
00229 
00230 /* The parser invokes alloca or malloc; define the necessary symbols.  */
00231 
00232 # ifdef YYSTACK_USE_ALLOCA
00233 #  if YYSTACK_USE_ALLOCA
00234 #   ifdef __GNUC__
00235 #    define YYSTACK_ALLOC __builtin_alloca
00236 #   elif defined __BUILTIN_VA_ARG_INCR
00237 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
00238 #   elif defined _AIX
00239 #    define YYSTACK_ALLOC __alloca
00240 #   elif defined _MSC_VER
00241 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
00242 #    define alloca _alloca
00243 #   else
00244 #    define YYSTACK_ALLOC alloca
00245 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00246      || defined __cplusplus || defined _MSC_VER)
00247 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00248 #     ifndef _STDLIB_H
00249 #      define _STDLIB_H 1
00250 #     endif
00251 #    endif
00252 #   endif
00253 #  endif
00254 # endif
00255 
00256 # ifdef YYSTACK_ALLOC
00257    /* Pacify GCC's `empty if-body' warning.  */
00258 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
00259 #  ifndef YYSTACK_ALLOC_MAXIMUM
00260     /* The OS might guarantee only one guard page at the bottom of the stack,
00261        and a page size can be as small as 4096 bytes.  So we cannot safely
00262        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
00263        to allow for a few compiler-allocated temporary stack slots.  */
00264 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
00265 #  endif
00266 # else
00267 #  define YYSTACK_ALLOC YYMALLOC
00268 #  define YYSTACK_FREE YYFREE
00269 #  ifndef YYSTACK_ALLOC_MAXIMUM
00270 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00271 #  endif
00272 #  if (defined __cplusplus && ! defined _STDLIB_H \
00273        && ! ((defined YYMALLOC || defined malloc) \
00274              && (defined YYFREE || defined free)))
00275 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00276 #   ifndef _STDLIB_H
00277 #    define _STDLIB_H 1
00278 #   endif
00279 #  endif
00280 #  ifndef YYMALLOC
00281 #   define YYMALLOC malloc
00282 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00283      || defined __cplusplus || defined _MSC_VER)
00284 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
00285 #   endif
00286 #  endif
00287 #  ifndef YYFREE
00288 #   define YYFREE free
00289 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00290      || defined __cplusplus || defined _MSC_VER)
00291 void free (void *); /* INFRINGES ON USER NAME SPACE */
00292 #   endif
00293 #  endif
00294 # endif
00295 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
00296 
00297 
00298 #if (! defined yyoverflow \
00299      && (! defined __cplusplus \
00300          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00301 
00302 /* A type that is properly aligned for any stack member.  */
00303 union yyalloc
00304 {
00305   yytype_int16 yyss_alloc;
00306   YYSTYPE yyvs_alloc;
00307 };
00308 
00309 /* The size of the maximum gap between one aligned stack and the next.  */
00310 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00311 
00312 /* The size of an array large to enough to hold all stacks, each with
00313    N elements.  */
00314 # define YYSTACK_BYTES(N) \
00315      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
00316       + YYSTACK_GAP_MAXIMUM)
00317 
00318 /* Copy COUNT objects from FROM to TO.  The source and destination do
00319    not overlap.  */
00320 # ifndef YYCOPY
00321 #  if defined __GNUC__ && 1 < __GNUC__
00322 #   define YYCOPY(To, From, Count) \
00323       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00324 #  else
00325 #   define YYCOPY(To, From, Count)              \
00326       do                                        \
00327         {                                       \
00328           YYSIZE_T yyi;                         \
00329           for (yyi = 0; yyi < (Count); yyi++)   \
00330             (To)[yyi] = (From)[yyi];            \
00331         }                                       \
00332       while (YYID (0))
00333 #  endif
00334 # endif
00335 
00336 /* Relocate STACK from its old location to the new one.  The
00337    local variables YYSIZE and YYSTACKSIZE give the old and new number of
00338    elements in the stack, and YYPTR gives the new location of the
00339    stack.  Advance YYPTR to a properly aligned location for the next
00340    stack.  */
00341 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
00342     do                                                                  \
00343       {                                                                 \
00344         YYSIZE_T yynewbytes;                                            \
00345         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
00346         Stack = &yyptr->Stack_alloc;                                    \
00347         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00348         yyptr += yynewbytes / sizeof (*yyptr);                          \
00349       }                                                                 \
00350     while (YYID (0))
00351 
00352 #endif
00353 
00354 /* YYFINAL -- State number of the termination state.  */
00355 #define YYFINAL  42
00356 /* YYLAST -- Last index in YYTABLE.  */
00357 #define YYLAST   702
00358 
00359 /* YYNTOKENS -- Number of terminals.  */
00360 #define YYNTOKENS  30
00361 /* YYNNTS -- Number of nonterminals.  */
00362 #define YYNNTS  3
00363 /* YYNRULES -- Number of rules.  */
00364 #define YYNRULES  29
00365 /* YYNRULES -- Number of states.  */
00366 #define YYNSTATES  93
00367 
00368 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
00369 #define YYUNDEFTOK  2
00370 #define YYMAXUTOK   276
00371 
00372 #define YYTRANSLATE(YYX)                                                \
00373   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00374 
00375 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
00376 static const yytype_uint8 yytranslate[] =
00377 {
00378        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00379        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00380        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00381        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00382       27,    28,    23,    22,    29,    21,     2,    24,     2,     2,
00383        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00384        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00385        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00386        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00387        2,     2,     2,     2,    26,     2,     2,     2,     2,     2,
00388        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00389        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00390        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00391        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00392        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00393        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00394        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00395        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00396        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00397        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00398        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00399        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00400        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00401        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00402        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00403        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
00404        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00405       15,    16,    17,    18,    19,    20,    25
00406 };
00407 
00408 #if YYDEBUG
00409 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
00410    YYRHS.  */
00411 static const yytype_uint8 yyprhs[] =
00412 {
00413        0,     0,     3,     5,     7,     9,    12,    16,    20,    24,
00414       28,    31,    35,    39,    44,    49,    54,    61,    66,    71,
00415       78,    83,    88,    95,   100,   105,   110,   115,   120,   125
00416 };
00417 
00418 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
00419 static const yytype_int8 yyrhs[] =
00420 {
00421       31,     0,    -1,    32,    -1,    20,    -1,    19,    -1,    20,
00422       19,    -1,    32,    22,    32,    -1,    32,    21,    32,    -1,
00423       32,    23,    32,    -1,    32,    24,    32,    -1,    21,    32,
00424       -1,    32,    26,    32,    -1,    27,    32,    28,    -1,     3,
00425       27,    32,    28,    -1,     4,    27,    32,    28,    -1,     5,
00426       27,    32,    28,    -1,     6,    27,    32,    29,    32,    28,
00427       -1,     9,    27,    32,    28,    -1,     8,    27,    32,    28,
00428       -1,    10,    27,    32,    29,    32,    28,    -1,    11,    27,
00429       32,    28,    -1,    12,    27,    32,    28,    -1,    13,    27,
00430       32,    29,    32,    28,    -1,    14,    27,    32,    28,    -1,
00431       15,    27,    32,    28,    -1,    16,    27,    32,    28,    -1,
00432       17,    27,    32,    28,    -1,    18,    27,    32,    28,    -1,
00433        7,    27,    32,    28,    -1,    32,    32,    -1
00434 };
00435 
00436 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
00437 static const yytype_uint8 yyrline[] =
00438 {
00439        0,    26,    26,    29,    30,    31,    32,    33,    34,    35,
00440       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
00441       46,    47,    48,    49,    50,    51,    52,    53,    54,    55
00442 };
00443 #endif
00444 
00445 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00446 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
00447    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
00448 static const char *const yytname[] =
00449 {
00450   "$end", "error", "$undefined", "ACOS", "ASIN", "ATAN", "ATAN2", "COS",
00451   "EXP", "ABS", "MOD", "LOG", "LOG10", "POW", "SIN", "SINH", "TAN", "TANH",
00452   "SQRT", "UNIT", "NUM", "'-'", "'+'", "'*'", "'/'", "NEG", "'^'", "'('",
00453   "')'", "','", "$accept", "input", "exp", 0
00454 };
00455 #endif
00456 
00457 # ifdef YYPRINT
00458 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
00459    token YYLEX-NUM.  */
00460 static const yytype_uint16 yytoknum[] =
00461 {
00462        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
00463      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
00464      275,    45,    43,    42,    47,   276,    94,    40,    41,    44
00465 };
00466 # endif
00467 
00468 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
00469 static const yytype_uint8 yyr1[] =
00470 {
00471        0,    30,    31,    32,    32,    32,    32,    32,    32,    32,
00472       32,    32,    32,    32,    32,    32,    32,    32,    32,    32,
00473       32,    32,    32,    32,    32,    32,    32,    32,    32,    32
00474 };
00475 
00476 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
00477 static const yytype_uint8 yyr2[] =
00478 {
00479        0,     2,     1,     1,     1,     2,     3,     3,     3,     3,
00480        2,     3,     3,     4,     4,     4,     6,     4,     4,     6,
00481        4,     4,     6,     4,     4,     4,     4,     4,     4,     2
00482 };
00483 
00484 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
00485    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
00486    means the default is an error.  */
00487 static const yytype_uint8 yydefact[] =
00488 {
00489        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00490        0,     0,     0,     0,     0,     0,     0,     4,     3,     0,
00491        0,     0,     2,     0,     0,     0,     0,     0,     0,     0,
00492        0,     0,     0,     0,     0,     0,     0,     0,     0,     5,
00493       10,     0,     1,     0,     0,     0,     0,     0,    29,     0,
00494        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00495        0,     0,     0,     0,     0,    12,     7,     6,     8,     9,
00496       11,    13,    14,    15,     0,    28,    18,    17,     0,    20,
00497       21,     0,    23,    24,    25,    26,    27,     0,     0,     0,
00498       16,    19,    22
00499 };
00500 
00501 /* YYDEFGOTO[NTERM-NUM].  */
00502 static const yytype_int8 yydefgoto[] =
00503 {
00504       -1,    21,    48
00505 };
00506 
00507 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
00508    STATE-NUM.  */
00509 #define YYPACT_NINF -27
00510 static const yytype_int16 yypact[] =
00511 {
00512      650,   -26,   -25,   -24,   -23,   -22,   -21,   -20,   -19,   -18,
00513      -17,   -16,   -15,   -14,   -13,   -12,   -11,   -27,    -2,   650,
00514      650,    18,   575,   650,   650,   650,   650,   650,   650,   650,
00515      650,   650,   650,   650,   650,   650,   650,   650,   650,   -27,
00516      675,   133,   -27,   650,   650,   650,   650,   650,   575,   159,
00517      185,   211,    46,   237,   263,   289,    79,   315,   341,   106,
00518      367,   393,   419,   445,   471,   -27,   600,   625,   675,   675,
00519      675,   -27,   -27,   -27,   650,   -27,   -27,   -27,   650,   -27,
00520      -27,   650,   -27,   -27,   -27,   -27,   -27,   497,   523,   549,
00521      -27,   -27,   -27
00522 };
00523 
00524 /* YYPGOTO[NTERM-NUM].  */
00525 static const yytype_int8 yypgoto[] =
00526 {
00527      -27,   -27,     0
00528 };
00529 
00530 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
00531    positive, shift that token.  If negative, reduce the rule which
00532    number is the opposite.  If zero, do what YYDEFACT says.
00533    If YYTABLE_NINF, syntax error.  */
00534 #define YYTABLE_NINF -11
00535 static const yytype_int8 yytable[] =
00536 {
00537       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
00538       32,    33,    34,    35,    36,    37,    38,    39,    42,    40,
00539       41,     0,     0,    49,    50,    51,    52,    53,    54,    55,
00540       56,    57,    58,    59,    60,    61,    62,    63,    64,     0,
00541        0,     0,     0,    66,    67,    68,    69,    70,     0,     1,
00542        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
00543       12,    13,    14,    15,    16,    17,    18,    43,    44,    45,
00544       46,     0,    47,    20,    87,    74,     0,     0,    88,     0,
00545        0,    89,     1,     2,     3,     4,     5,     6,     7,     8,
00546        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00547       43,    44,    45,    46,     0,    47,    20,     0,    78,     1,
00548        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
00549       12,    13,    14,    15,    16,    17,    18,    43,    44,    45,
00550       46,     0,    47,    20,     0,    81,     1,     2,     3,     4,
00551        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00552       15,    16,    17,    18,    43,    44,    45,    46,     0,    47,
00553       20,    65,     1,     2,     3,     4,     5,     6,     7,     8,
00554        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00555       43,    44,    45,    46,     0,    47,    20,    71,     1,     2,
00556        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00557       13,    14,    15,    16,    17,    18,    43,    44,    45,    46,
00558        0,    47,    20,    72,     1,     2,     3,     4,     5,     6,
00559        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00560       17,    18,    43,    44,    45,    46,     0,    47,    20,    73,
00561        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
00562       11,    12,    13,    14,    15,    16,    17,    18,    43,    44,
00563       45,    46,     0,    47,    20,    75,     1,     2,     3,     4,
00564        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00565       15,    16,    17,    18,    43,    44,    45,    46,     0,    47,
00566       20,    76,     1,     2,     3,     4,     5,     6,     7,     8,
00567        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00568       43,    44,    45,    46,     0,    47,    20,    77,     1,     2,
00569        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00570       13,    14,    15,    16,    17,    18,    43,    44,    45,    46,
00571        0,    47,    20,    79,     1,     2,     3,     4,     5,     6,
00572        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00573       17,    18,    43,    44,    45,    46,     0,    47,    20,    80,
00574        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
00575       11,    12,    13,    14,    15,    16,    17,    18,    43,    44,
00576       45,    46,     0,    47,    20,    82,     1,     2,     3,     4,
00577        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00578       15,    16,    17,    18,    43,    44,    45,    46,     0,    47,
00579       20,    83,     1,     2,     3,     4,     5,     6,     7,     8,
00580        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00581       43,    44,    45,    46,     0,    47,    20,    84,     1,     2,
00582        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00583       13,    14,    15,    16,    17,    18,    43,    44,    45,    46,
00584        0,    47,    20,    85,     1,     2,     3,     4,     5,     6,
00585        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00586       17,    18,    43,    44,    45,    46,     0,    47,    20,    86,
00587        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
00588       11,    12,    13,    14,    15,    16,    17,    18,    43,    44,
00589       45,    46,     0,    47,    20,    90,     1,     2,     3,     4,
00590        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00591       15,    16,    17,    18,    43,    44,    45,    46,     0,    47,
00592       20,    91,     1,     2,     3,     4,     5,     6,     7,     8,
00593        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00594       43,    44,    45,    46,     0,    47,    20,    92,     1,     2,
00595        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00596       13,    14,    15,    16,    17,    18,    43,    44,    45,    46,
00597        0,    47,    20,     1,     2,     3,     4,     5,     6,     7,
00598        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
00599       18,     0,     0,   -10,   -10,     0,    47,    20,     1,     2,
00600        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00601       13,    14,    15,    16,    17,    18,     0,     0,    45,    46,
00602        0,    47,    20,     1,     2,     3,     4,     5,     6,     7,
00603        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
00604       18,    19,     0,     0,     0,     0,     0,    20,     1,     2,
00605        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00606       13,    14,    15,    16,    17,    18,     0,     0,     0,     0,
00607        0,    47,    20
00608 };
00609 
00610 static const yytype_int8 yycheck[] =
00611 {
00612        0,    27,    27,    27,    27,    27,    27,    27,    27,    27,
00613       27,    27,    27,    27,    27,    27,    27,    19,     0,    19,
00614       20,    -1,    -1,    23,    24,    25,    26,    27,    28,    29,
00615       30,    31,    32,    33,    34,    35,    36,    37,    38,    -1,
00616       -1,    -1,    -1,    43,    44,    45,    46,    47,    -1,     3,
00617        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
00618       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
00619       24,    -1,    26,    27,    74,    29,    -1,    -1,    78,    -1,
00620       -1,    81,     3,     4,     5,     6,     7,     8,     9,    10,
00621       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
00622       21,    22,    23,    24,    -1,    26,    27,    -1,    29,     3,
00623        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
00624       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
00625       24,    -1,    26,    27,    -1,    29,     3,     4,     5,     6,
00626        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00627       17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
00628       27,    28,     3,     4,     5,     6,     7,     8,     9,    10,
00629       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
00630       21,    22,    23,    24,    -1,    26,    27,    28,     3,     4,
00631        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00632       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00633       -1,    26,    27,    28,     3,     4,     5,     6,     7,     8,
00634        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00635       19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
00636        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00637       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
00638       23,    24,    -1,    26,    27,    28,     3,     4,     5,     6,
00639        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00640       17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
00641       27,    28,     3,     4,     5,     6,     7,     8,     9,    10,
00642       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
00643       21,    22,    23,    24,    -1,    26,    27,    28,     3,     4,
00644        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00645       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00646       -1,    26,    27,    28,     3,     4,     5,     6,     7,     8,
00647        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00648       19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
00649        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00650       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
00651       23,    24,    -1,    26,    27,    28,     3,     4,     5,     6,
00652        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00653       17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
00654       27,    28,     3,     4,     5,     6,     7,     8,     9,    10,
00655       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
00656       21,    22,    23,    24,    -1,    26,    27,    28,     3,     4,
00657        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00658       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00659       -1,    26,    27,    28,     3,     4,     5,     6,     7,     8,
00660        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00661       19,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
00662        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
00663       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
00664       23,    24,    -1,    26,    27,    28,     3,     4,     5,     6,
00665        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00666       17,    18,    19,    20,    21,    22,    23,    24,    -1,    26,
00667       27,    28,     3,     4,     5,     6,     7,     8,     9,    10,
00668       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
00669       21,    22,    23,    24,    -1,    26,    27,    28,     3,     4,
00670        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00671       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00672       -1,    26,    27,     3,     4,     5,     6,     7,     8,     9,
00673       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
00674       20,    -1,    -1,    23,    24,    -1,    26,    27,     3,     4,
00675        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00676       15,    16,    17,    18,    19,    20,    -1,    -1,    23,    24,
00677       -1,    26,    27,     3,     4,     5,     6,     7,     8,     9,
00678       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
00679       20,    21,    -1,    -1,    -1,    -1,    -1,    27,     3,     4,
00680        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00681       15,    16,    17,    18,    19,    20,    -1,    -1,    -1,    -1,
00682       -1,    26,    27
00683 };
00684 
00685 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
00686    symbol of state STATE-NUM.  */
00687 static const yytype_uint8 yystos[] =
00688 {
00689        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
00690       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
00691       27,    31,    32,    27,    27,    27,    27,    27,    27,    27,
00692       27,    27,    27,    27,    27,    27,    27,    27,    27,    19,
00693       32,    32,     0,    21,    22,    23,    24,    26,    32,    32,
00694       32,    32,    32,    32,    32,    32,    32,    32,    32,    32,
00695       32,    32,    32,    32,    32,    28,    32,    32,    32,    32,
00696       32,    28,    28,    28,    29,    28,    28,    28,    29,    28,
00697       28,    29,    28,    28,    28,    28,    28,    32,    32,    32,
00698       28,    28,    28
00699 };
00700 
00701 #define yyerrok         (yyerrstatus = 0)
00702 #define yyclearin       (yychar = YYEMPTY)
00703 #define YYEMPTY         (-2)
00704 #define YYEOF           0
00705 
00706 #define YYACCEPT        goto yyacceptlab
00707 #define YYABORT         goto yyabortlab
00708 #define YYERROR         goto yyerrorlab
00709 
00710 
00711 /* Like YYERROR except do call yyerror.  This remains here temporarily
00712    to ease the transition to the new meaning of YYERROR, for GCC.
00713    Once GCC version 2 has supplanted version 1, this can go.  */
00714 
00715 #define YYFAIL          goto yyerrlab
00716 
00717 #define YYRECOVERING()  (!!yyerrstatus)
00718 
00719 #define YYBACKUP(Token, Value)                                  \
00720 do                                                              \
00721   if (yychar == YYEMPTY && yylen == 1)                          \
00722     {                                                           \
00723       yychar = (Token);                                         \
00724       yylval = (Value);                                         \
00725       yytoken = YYTRANSLATE (yychar);                           \
00726       YYPOPSTACK (1);                                           \
00727       goto yybackup;                                            \
00728     }                                                           \
00729   else                                                          \
00730     {                                                           \
00731       yyerror (YY_("syntax error: cannot back up")); \
00732       YYERROR;                                                  \
00733     }                                                           \
00734 while (YYID (0))
00735 
00736 
00737 #define YYTERROR        1
00738 #define YYERRCODE       256
00739 
00740 
00741 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
00742    If N is 0, then set CURRENT to the empty location which ends
00743    the previous symbol: RHS[0] (always defined).  */
00744 
00745 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
00746 #ifndef YYLLOC_DEFAULT
00747 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
00748     do                                                                  \
00749       if (YYID (N))                                                    \
00750         {                                                               \
00751           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
00752           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
00753           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
00754           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
00755         }                                                               \
00756       else                                                              \
00757         {                                                               \
00758           (Current).first_line   = (Current).last_line   =              \
00759             YYRHSLOC (Rhs, 0).last_line;                                \
00760           (Current).first_column = (Current).last_column =              \
00761             YYRHSLOC (Rhs, 0).last_column;                              \
00762         }                                                               \
00763     while (YYID (0))
00764 #endif
00765 
00766 
00767 /* YY_LOCATION_PRINT -- Print the location on the stream.
00768    This macro was not mandated originally: define only if we know
00769    we won't break user code: when these are the locations we know.  */
00770 
00771 #ifndef YY_LOCATION_PRINT
00772 # if YYLTYPE_IS_TRIVIAL
00773 #  define YY_LOCATION_PRINT(File, Loc)                  \
00774      fprintf (File, "%d.%d-%d.%d",                      \
00775               (Loc).first_line, (Loc).first_column,     \
00776               (Loc).last_line,  (Loc).last_column)
00777 # else
00778 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
00779 # endif
00780 #endif
00781 
00782 
00783 /* YYLEX -- calling `yylex' with the right arguments.  */
00784 
00785 #ifdef YYLEX_PARAM
00786 # define YYLEX yylex (YYLEX_PARAM)
00787 #else
00788 # define YYLEX yylex ()
00789 #endif
00790 
00791 /* Enable debugging if requested.  */
00792 #if YYDEBUG
00793 
00794 # ifndef YYFPRINTF
00795 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
00796 #  define YYFPRINTF fprintf
00797 # endif
00798 
00799 # define YYDPRINTF(Args)                        \
00800 do {                                            \
00801   if (yydebug)                                  \
00802     YYFPRINTF Args;                             \
00803 } while (YYID (0))
00804 
00805 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
00806 do {                                                                      \
00807   if (yydebug)                                                            \
00808     {                                                                     \
00809       YYFPRINTF (stderr, "%s ", Title);                                   \
00810       yy_symbol_print (stderr,                                            \
00811                   Type, Value); \
00812       YYFPRINTF (stderr, "\n");                                           \
00813     }                                                                     \
00814 } while (YYID (0))
00815 
00816 
00817 /*--------------------------------.
00818 | Print this symbol on YYOUTPUT.  |
00819 `--------------------------------*/
00820 
00821 /*ARGSUSED*/
00822 #if (defined __STDC__ || defined __C99__FUNC__ \
00823      || defined __cplusplus || defined _MSC_VER)
00824 static void
00825 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00826 #else
00827 static void
00828 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
00829     FILE *yyoutput;
00830     int yytype;
00831     YYSTYPE const * const yyvaluep;
00832 #endif
00833 {
00834   if (!yyvaluep)
00835     return;
00836 # ifdef YYPRINT
00837   if (yytype < YYNTOKENS)
00838     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
00839 # else
00840   YYUSE (yyoutput);
00841 # endif
00842   switch (yytype)
00843     {
00844       default:
00845         break;
00846     }
00847 }
00848 
00849 
00850 /*--------------------------------.
00851 | Print this symbol on YYOUTPUT.  |
00852 `--------------------------------*/
00853 
00854 #if (defined __STDC__ || defined __C99__FUNC__ \
00855      || defined __cplusplus || defined _MSC_VER)
00856 static void
00857 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00858 #else
00859 static void
00860 yy_symbol_print (yyoutput, yytype, yyvaluep)
00861     FILE *yyoutput;
00862     int yytype;
00863     YYSTYPE const * const yyvaluep;
00864 #endif
00865 {
00866   if (yytype < YYNTOKENS)
00867     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
00868   else
00869     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
00870 
00871   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
00872   YYFPRINTF (yyoutput, ")");
00873 }
00874 
00875 /*------------------------------------------------------------------.
00876 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
00877 | TOP (included).                                                   |
00878 `------------------------------------------------------------------*/
00879 
00880 #if (defined __STDC__ || defined __C99__FUNC__ \
00881      || defined __cplusplus || defined _MSC_VER)
00882 static void
00883 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
00884 #else
00885 static void
00886 yy_stack_print (yybottom, yytop)
00887     yytype_int16 *yybottom;
00888     yytype_int16 *yytop;
00889 #endif
00890 {
00891   YYFPRINTF (stderr, "Stack now");
00892   for (; yybottom <= yytop; yybottom++)
00893     {
00894       int yybot = *yybottom;
00895       YYFPRINTF (stderr, " %d", yybot);
00896     }
00897   YYFPRINTF (stderr, "\n");
00898 }
00899 
00900 # define YY_STACK_PRINT(Bottom, Top)                            \
00901 do {                                                            \
00902   if (yydebug)                                                  \
00903     yy_stack_print ((Bottom), (Top));                           \
00904 } while (YYID (0))
00905 
00906 
00907 /*------------------------------------------------.
00908 | Report that the YYRULE is going to be reduced.  |
00909 `------------------------------------------------*/
00910 
00911 #if (defined __STDC__ || defined __C99__FUNC__ \
00912      || defined __cplusplus || defined _MSC_VER)
00913 static void
00914 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
00915 #else
00916 static void
00917 yy_reduce_print (yyvsp, yyrule)
00918     YYSTYPE *yyvsp;
00919     int yyrule;
00920 #endif
00921 {
00922   int yynrhs = yyr2[yyrule];
00923   int yyi;
00924   unsigned long int yylno = yyrline[yyrule];
00925   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
00926              yyrule - 1, yylno);
00927   /* The symbols being reduced.  */
00928   for (yyi = 0; yyi < yynrhs; yyi++)
00929     {
00930       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
00931       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
00932                        &(yyvsp[(yyi + 1) - (yynrhs)])
00933                                        );
00934       YYFPRINTF (stderr, "\n");
00935     }
00936 }
00937 
00938 # define YY_REDUCE_PRINT(Rule)          \
00939 do {                                    \
00940   if (yydebug)                          \
00941     yy_reduce_print (yyvsp, Rule); \
00942 } while (YYID (0))
00943 
00944 /* Nonzero means print parse trace.  It is left uninitialized so that
00945    multiple parsers can coexist.  */
00946 int yydebug;
00947 #else /* !YYDEBUG */
00948 # define YYDPRINTF(Args)
00949 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
00950 # define YY_STACK_PRINT(Bottom, Top)
00951 # define YY_REDUCE_PRINT(Rule)
00952 #endif /* !YYDEBUG */
00953 
00954 
00955 /* YYINITDEPTH -- initial size of the parser's stacks.  */
00956 #ifndef YYINITDEPTH
00957 # define YYINITDEPTH 200
00958 #endif
00959 
00960 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
00961    if the built-in stack extension method is used).
00962 
00963    Do not make this value too large; the results are undefined if
00964    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
00965    evaluated with infinite-precision integer arithmetic.  */
00966 
00967 #ifndef YYMAXDEPTH
00968 # define YYMAXDEPTH 10000
00969 #endif
00970 
00971 
00972 
00973 #if YYERROR_VERBOSE
00974 
00975 # ifndef yystrlen
00976 #  if defined __GLIBC__ && defined _STRING_H
00977 #   define yystrlen strlen
00978 #  else
00979 /* Return the length of YYSTR.  */
00980 #if (defined __STDC__ || defined __C99__FUNC__ \
00981      || defined __cplusplus || defined _MSC_VER)
00982 static YYSIZE_T
00983 yystrlen (const char *yystr)
00984 #else
00985 static YYSIZE_T
00986 yystrlen (yystr)
00987     const char *yystr;
00988 #endif
00989 {
00990   YYSIZE_T yylen;
00991   for (yylen = 0; yystr[yylen]; yylen++)
00992     continue;
00993   return yylen;
00994 }
00995 #  endif
00996 # endif
00997 
00998 # ifndef yystpcpy
00999 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
01000 #   define yystpcpy stpcpy
01001 #  else
01002 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
01003    YYDEST.  */
01004 #if (defined __STDC__ || defined __C99__FUNC__ \
01005      || defined __cplusplus || defined _MSC_VER)
01006 static char *
01007 yystpcpy (char *yydest, const char *yysrc)
01008 #else
01009 static char *
01010 yystpcpy (yydest, yysrc)
01011     char *yydest;
01012     const char *yysrc;
01013 #endif
01014 {
01015   char *yyd = yydest;
01016   const char *yys = yysrc;
01017 
01018   while ((*yyd++ = *yys++) != '\0')
01019     continue;
01020 
01021   return yyd - 1;
01022 }
01023 #  endif
01024 # endif
01025 
01026 # ifndef yytnamerr
01027 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
01028    quotes and backslashes, so that it's suitable for yyerror.  The
01029    heuristic is that double-quoting is unnecessary unless the string
01030    contains an apostrophe, a comma, or backslash (other than
01031    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
01032    null, do not copy; instead, return the length of what the result
01033    would have been.  */
01034 static YYSIZE_T
01035 yytnamerr (char *yyres, const char *yystr)
01036 {
01037   if (*yystr == '"')
01038     {
01039       YYSIZE_T yyn = 0;
01040       char const *yyp = yystr;
01041 
01042       for (;;)
01043         switch (*++yyp)
01044           {
01045           case '\'':
01046           case ',':
01047             goto do_not_strip_quotes;
01048 
01049           case '\\':
01050             if (*++yyp != '\\')
01051               goto do_not_strip_quotes;
01052             /* Fall through.  */
01053           default:
01054             if (yyres)
01055               yyres[yyn] = *yyp;
01056             yyn++;
01057             break;
01058 
01059           case '"':
01060             if (yyres)
01061               yyres[yyn] = '\0';
01062             return yyn;
01063           }
01064     do_not_strip_quotes: ;
01065     }
01066 
01067   if (! yyres)
01068     return yystrlen (yystr);
01069 
01070   return yystpcpy (yyres, yystr) - yyres;
01071 }
01072 # endif
01073 
01074 /* Copy into YYRESULT an error message about the unexpected token
01075    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
01076    including the terminating null byte.  If YYRESULT is null, do not
01077    copy anything; just return the number of bytes that would be
01078    copied.  As a special case, return 0 if an ordinary "syntax error"
01079    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
01080    size calculation.  */
01081 static YYSIZE_T
01082 yysyntax_error (char *yyresult, int yystate, int yychar)
01083 {
01084   int yyn = yypact[yystate];
01085 
01086   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
01087     return 0;
01088   else
01089     {
01090       int yytype = YYTRANSLATE (yychar);
01091       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
01092       YYSIZE_T yysize = yysize0;
01093       YYSIZE_T yysize1;
01094       int yysize_overflow = 0;
01095       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01096       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01097       int yyx;
01098 
01099 # if 0
01100       /* This is so xgettext sees the translatable formats that are
01101          constructed on the fly.  */
01102       YY_("syntax error, unexpected %s");
01103       YY_("syntax error, unexpected %s, expecting %s");
01104       YY_("syntax error, unexpected %s, expecting %s or %s");
01105       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
01106       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
01107 # endif
01108       char *yyfmt;
01109       char const *yyf;
01110       static char const yyunexpected[] = "syntax error, unexpected %s";
01111       static char const yyexpecting[] = ", expecting %s";
01112       static char const yyor[] = " or %s";
01113       char yyformat[sizeof yyunexpected
01114                     + sizeof yyexpecting - 1
01115                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
01116                        * (sizeof yyor - 1))];
01117       char const *yyprefix = yyexpecting;
01118 
01119       /* Start YYX at -YYN if negative to avoid negative indexes in
01120          YYCHECK.  */
01121       int yyxbegin = yyn < 0 ? -yyn : 0;
01122 
01123       /* Stay within bounds of both yycheck and yytname.  */
01124       int yychecklim = YYLAST - yyn + 1;
01125       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01126       int yycount = 1;
01127 
01128       yyarg[0] = yytname[yytype];
01129       yyfmt = yystpcpy (yyformat, yyunexpected);
01130 
01131       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01132         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
01133           {
01134             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01135               {
01136                 yycount = 1;
01137                 yysize = yysize0;
01138                 yyformat[sizeof yyunexpected - 1] = '\0';
01139                 break;
01140               }
01141             yyarg[yycount++] = yytname[yyx];
01142             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01143             yysize_overflow |= (yysize1 < yysize);
01144             yysize = yysize1;
01145             yyfmt = yystpcpy (yyfmt, yyprefix);
01146             yyprefix = yyor;
01147           }
01148 
01149       yyf = YY_(yyformat);
01150       yysize1 = yysize + yystrlen (yyf);
01151       yysize_overflow |= (yysize1 < yysize);
01152       yysize = yysize1;
01153 
01154       if (yysize_overflow)
01155         return YYSIZE_MAXIMUM;
01156 
01157       if (yyresult)
01158         {
01159           /* Avoid sprintf, as that infringes on the user's name space.
01160              Don't have undefined behavior even if the translation
01161              produced a string with the wrong number of "%s"s.  */
01162           char *yyp = yyresult;
01163           int yyi = 0;
01164           while ((*yyp = *yyf) != '\0')
01165             {
01166               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01167                 {
01168                   yyp += yytnamerr (yyp, yyarg[yyi++]);
01169                   yyf += 2;
01170                 }
01171               else
01172                 {
01173                   yyp++;
01174                   yyf++;
01175                 }
01176             }
01177         }
01178       return yysize;
01179     }
01180 }
01181 #endif /* YYERROR_VERBOSE */
01182 
01183 
01184 /*-----------------------------------------------.
01185 | Release the memory associated to this symbol.  |
01186 `-----------------------------------------------*/
01187 
01188 /*ARGSUSED*/
01189 #if (defined __STDC__ || defined __C99__FUNC__ \
01190      || defined __cplusplus || defined _MSC_VER)
01191 static void
01192 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
01193 #else
01194 static void
01195 yydestruct (yymsg, yytype, yyvaluep)
01196     const char *yymsg;
01197     int yytype;
01198     YYSTYPE *yyvaluep;
01199 #endif
01200 {
01201   YYUSE (yyvaluep);
01202 
01203   if (!yymsg)
01204     yymsg = "Deleting";
01205   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01206 
01207   switch (yytype)
01208     {
01209 
01210       default:
01211         break;
01212     }
01213 }
01214 
01215 /* Prevent warnings from -Wmissing-prototypes.  */
01216 #ifdef YYPARSE_PARAM
01217 #if defined __STDC__ || defined __cplusplus
01218 int yyparse (void *YYPARSE_PARAM);
01219 #else
01220 int yyparse ();
01221 #endif
01222 #else /* ! YYPARSE_PARAM */
01223 #if defined __STDC__ || defined __cplusplus
01224 int yyparse (void);
01225 #else
01226 int yyparse ();
01227 #endif
01228 #endif /* ! YYPARSE_PARAM */
01229 
01230 
01231 /* The lookahead symbol.  */
01232 int yychar;
01233 
01234 /* The semantic value of the lookahead symbol.  */
01235 YYSTYPE yylval;
01236 
01237 /* Number of syntax errors so far.  */
01238 int yynerrs;
01239 
01240 
01241 
01242 /*-------------------------.
01243 | yyparse or yypush_parse.  |
01244 `-------------------------*/
01245 
01246 #ifdef YYPARSE_PARAM
01247 #if (defined __STDC__ || defined __C99__FUNC__ \
01248      || defined __cplusplus || defined _MSC_VER)
01249 int
01250 yyparse (void *YYPARSE_PARAM)
01251 #else
01252 int
01253 yyparse (YYPARSE_PARAM)
01254     void *YYPARSE_PARAM;
01255 #endif
01256 #else /* ! YYPARSE_PARAM */
01257 #if (defined __STDC__ || defined __C99__FUNC__ \
01258      || defined __cplusplus || defined _MSC_VER)
01259 int
01260 yyparse (void)
01261 #else
01262 int
01263 yyparse ()
01264 
01265 #endif
01266 #endif
01267 {
01268 
01269 
01270     int yystate;
01271     /* Number of tokens to shift before error messages enabled.  */
01272     int yyerrstatus;
01273 
01274     /* The stacks and their tools:
01275        `yyss': related to states.
01276        `yyvs': related to semantic values.
01277 
01278        Refer to the stacks thru separate pointers, to allow yyoverflow
01279        to reallocate them elsewhere.  */
01280 
01281     /* The state stack.  */
01282     yytype_int16 yyssa[YYINITDEPTH];
01283     yytype_int16 *yyss;
01284     yytype_int16 *yyssp;
01285 
01286     /* The semantic value stack.  */
01287     YYSTYPE yyvsa[YYINITDEPTH];
01288     YYSTYPE *yyvs;
01289     YYSTYPE *yyvsp;
01290 
01291     YYSIZE_T yystacksize;
01292 
01293   int yyn;
01294   int yyresult;
01295   /* Lookahead token as an internal (translated) token number.  */
01296   int yytoken;
01297   /* The variables used to return semantic value and location from the
01298      action routines.  */
01299   YYSTYPE yyval;
01300 
01301 #if YYERROR_VERBOSE
01302   /* Buffer for error messages, and its allocated size.  */
01303   char yymsgbuf[128];
01304   char *yymsg = yymsgbuf;
01305   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01306 #endif
01307 
01308 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
01309 
01310   /* The number of symbols on the RHS of the reduced rule.
01311      Keep to zero when no symbol should be popped.  */
01312   int yylen = 0;
01313 
01314   yytoken = 0;
01315   yyss = yyssa;
01316   yyvs = yyvsa;
01317   yystacksize = YYINITDEPTH;
01318 
01319   YYDPRINTF ((stderr, "Starting parse\n"));
01320 
01321   yystate = 0;
01322   yyerrstatus = 0;
01323   yynerrs = 0;
01324   yychar = YYEMPTY; /* Cause a token to be read.  */
01325 
01326   /* Initialize stack pointers.
01327      Waste one element of value and location stack
01328      so that they stay on the same level as the state stack.
01329      The wasted elements are never initialized.  */
01330   yyssp = yyss;
01331   yyvsp = yyvs;
01332 
01333   goto yysetstate;
01334 
01335 /*------------------------------------------------------------.
01336 | yynewstate -- Push a new state, which is found in yystate.  |
01337 `------------------------------------------------------------*/
01338  yynewstate:
01339   /* In all cases, when you get here, the value and location stacks
01340      have just been pushed.  So pushing a state here evens the stacks.  */
01341   yyssp++;
01342 
01343  yysetstate:
01344   *yyssp = yystate;
01345 
01346   if (yyss + yystacksize - 1 <= yyssp)
01347     {
01348       /* Get the current used size of the three stacks, in elements.  */
01349       YYSIZE_T yysize = yyssp - yyss + 1;
01350 
01351 #ifdef yyoverflow
01352       {
01353         /* Give user a chance to reallocate the stack.  Use copies of
01354            these so that the &'s don't force the real ones into
01355            memory.  */
01356         YYSTYPE *yyvs1 = yyvs;
01357         yytype_int16 *yyss1 = yyss;
01358 
01359         /* Each stack pointer address is followed by the size of the
01360            data in use in that stack, in bytes.  This used to be a
01361            conditional around just the two extra args, but that might
01362            be undefined if yyoverflow is a macro.  */
01363         yyoverflow (YY_("memory exhausted"),
01364                     &yyss1, yysize * sizeof (*yyssp),
01365                     &yyvs1, yysize * sizeof (*yyvsp),
01366                     &yystacksize);
01367 
01368         yyss = yyss1;
01369         yyvs = yyvs1;
01370       }
01371 #else /* no yyoverflow */
01372 # ifndef YYSTACK_RELOCATE
01373       goto yyexhaustedlab;
01374 # else
01375       /* Extend the stack our own way.  */
01376       if (YYMAXDEPTH <= yystacksize)
01377         goto yyexhaustedlab;
01378       yystacksize *= 2;
01379       if (YYMAXDEPTH < yystacksize)
01380         yystacksize = YYMAXDEPTH;
01381 
01382       {
01383         yytype_int16 *yyss1 = yyss;
01384         union yyalloc *yyptr =
01385           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01386         if (! yyptr)
01387           goto yyexhaustedlab;
01388         YYSTACK_RELOCATE (yyss_alloc, yyss);
01389         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
01390 #  undef YYSTACK_RELOCATE
01391         if (yyss1 != yyssa)
01392           YYSTACK_FREE (yyss1);
01393       }
01394 # endif
01395 #endif /* no yyoverflow */
01396 
01397       yyssp = yyss + yysize - 1;
01398       yyvsp = yyvs + yysize - 1;
01399 
01400       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01401                   (unsigned long int) yystacksize));
01402 
01403       if (yyss + yystacksize - 1 <= yyssp)
01404         YYABORT;
01405     }
01406 
01407   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01408 
01409   if (yystate == YYFINAL)
01410     YYACCEPT;
01411 
01412   goto yybackup;
01413 
01414 /*-----------.
01415 | yybackup.  |
01416 `-----------*/
01417 yybackup:
01418 
01419   /* Do appropriate processing given the current state.  Read a
01420      lookahead token if we need one and don't already have one.  */
01421 
01422   /* First try to decide what to do without reference to lookahead token.  */
01423   yyn = yypact[yystate];
01424   if (yyn == YYPACT_NINF)
01425     goto yydefault;
01426 
01427   /* Not known => get a lookahead token if don't already have one.  */
01428 
01429   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
01430   if (yychar == YYEMPTY)
01431     {
01432       YYDPRINTF ((stderr, "Reading a token: "));
01433       yychar = YYLEX;
01434     }
01435 
01436   if (yychar <= YYEOF)
01437     {
01438       yychar = yytoken = YYEOF;
01439       YYDPRINTF ((stderr, "Now at end of input.\n"));
01440     }
01441   else
01442     {
01443       yytoken = YYTRANSLATE (yychar);
01444       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
01445     }
01446 
01447   /* If the proper action on seeing token YYTOKEN is to reduce or to
01448      detect an error, take that action.  */
01449   yyn += yytoken;
01450   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01451     goto yydefault;
01452   yyn = yytable[yyn];
01453   if (yyn <= 0)
01454     {
01455       if (yyn == 0 || yyn == YYTABLE_NINF)
01456         goto yyerrlab;
01457       yyn = -yyn;
01458       goto yyreduce;
01459     }
01460 
01461   /* Count tokens shifted since error; after three, turn off error
01462      status.  */
01463   if (yyerrstatus)
01464     yyerrstatus--;
01465 
01466   /* Shift the lookahead token.  */
01467   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
01468 
01469   /* Discard the shifted token.  */
01470   yychar = YYEMPTY;
01471 
01472   yystate = yyn;
01473   *++yyvsp = yylval;
01474 
01475   goto yynewstate;
01476 
01477 
01478 /*-----------------------------------------------------------.
01479 | yydefault -- do the default action for the current state.  |
01480 `-----------------------------------------------------------*/
01481 yydefault:
01482   yyn = yydefact[yystate];
01483   if (yyn == 0)
01484     goto yyerrlab;
01485   goto yyreduce;
01486 
01487 
01488 /*-----------------------------.
01489 | yyreduce -- Do a reduction.  |
01490 `-----------------------------*/
01491 yyreduce:
01492   /* yyn is the number of a rule to reduce with.  */
01493   yylen = yyr2[yyn];
01494 
01495   /* If YYLEN is nonzero, implement the default value of the action:
01496      `$$ = $1'.
01497 
01498      Otherwise, the following line sets YYVAL to garbage.
01499      This behavior is undocumented and Bison
01500      users should not rely upon it.  Assigning to YYVAL
01501      unconditionally makes the parser a bit smaller, and it avoids a
01502      GCC warning that YYVAL may be used uninitialized.  */
01503   yyval = yyvsp[1-yylen];
01504 
01505 
01506   YY_REDUCE_PRINT (yyn);
01507   switch (yyn)
01508     {
01509         case 2:
01510 
01511 /* Line 1455 of yacc.c  */
01512 #line 26 "UnitsApi.y"
01513     { ScanResult = (yyvsp[(1) - (1)])     ;    ;}
01514     break;
01515 
01516   case 3:
01517 
01518 /* Line 1455 of yacc.c  */
01519 #line 29 "UnitsApi.y"
01520     { (yyval) = (yyvsp[(1) - (1)]);             ;}
01521     break;
01522 
01523   case 4:
01524 
01525 /* Line 1455 of yacc.c  */
01526 #line 30 "UnitsApi.y"
01527     { (yyval) = (yyvsp[(1) - (1)]);UU=true;     ;}
01528     break;
01529 
01530   case 5:
01531 
01532 /* Line 1455 of yacc.c  */
01533 #line 31 "UnitsApi.y"
01534     { (yyval) = (yyvsp[(1) - (2)])*(yyvsp[(2) - (2)]);UU=true;  ;}
01535     break;
01536 
01537   case 6:
01538 
01539 /* Line 1455 of yacc.c  */
01540 #line 32 "UnitsApi.y"
01541     { (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]);        ;}
01542     break;
01543 
01544   case 7:
01545 
01546 /* Line 1455 of yacc.c  */
01547 #line 33 "UnitsApi.y"
01548     { (yyval) = (yyvsp[(1) - (3)]) - (yyvsp[(3) - (3)]);        ;}
01549     break;
01550 
01551   case 8:
01552 
01553 /* Line 1455 of yacc.c  */
01554 #line 34 "UnitsApi.y"
01555     { (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]);        ;}
01556     break;
01557 
01558   case 9:
01559 
01560 /* Line 1455 of yacc.c  */
01561 #line 35 "UnitsApi.y"
01562     { (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]);        ;}
01563     break;
01564 
01565   case 10:
01566 
01567 /* Line 1455 of yacc.c  */
01568 #line 36 "UnitsApi.y"
01569     { (yyval) = -(yyvsp[(2) - (2)]);            ;}
01570     break;
01571 
01572   case 11:
01573 
01574 /* Line 1455 of yacc.c  */
01575 #line 37 "UnitsApi.y"
01576     { (yyval) = pow ((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]));;}
01577     break;
01578 
01579   case 12:
01580 
01581 /* Line 1455 of yacc.c  */
01582 #line 38 "UnitsApi.y"
01583     { (yyval) = (yyvsp[(2) - (3)]);             ;}
01584     break;
01585 
01586   case 13:
01587 
01588 /* Line 1455 of yacc.c  */
01589 #line 39 "UnitsApi.y"
01590     { (yyval) = acos((yyvsp[(3) - (4)]));       ;}
01591     break;
01592 
01593   case 14:
01594 
01595 /* Line 1455 of yacc.c  */
01596 #line 40 "UnitsApi.y"
01597     { (yyval) = asin((yyvsp[(3) - (4)]));       ;}
01598     break;
01599 
01600   case 15:
01601 
01602 /* Line 1455 of yacc.c  */
01603 #line 41 "UnitsApi.y"
01604     { (yyval) = atan((yyvsp[(3) - (4)]));       ;}
01605     break;
01606 
01607   case 16:
01608 
01609 /* Line 1455 of yacc.c  */
01610 #line 42 "UnitsApi.y"
01611     { (yyval) = atan2((yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));;}
01612     break;
01613 
01614   case 17:
01615 
01616 /* Line 1455 of yacc.c  */
01617 #line 43 "UnitsApi.y"
01618     { (yyval) = fabs((yyvsp[(3) - (4)]));       ;}
01619     break;
01620 
01621   case 18:
01622 
01623 /* Line 1455 of yacc.c  */
01624 #line 44 "UnitsApi.y"
01625     { (yyval) = exp((yyvsp[(3) - (4)]));        ;}
01626     break;
01627 
01628   case 19:
01629 
01630 /* Line 1455 of yacc.c  */
01631 #line 45 "UnitsApi.y"
01632     { (yyval) = fmod((yyvsp[(3) - (6)]),(yyvsp[(5) - (6)])); ;}
01633     break;
01634 
01635   case 20:
01636 
01637 /* Line 1455 of yacc.c  */
01638 #line 46 "UnitsApi.y"
01639     { (yyval) = log((yyvsp[(3) - (4)]));     ;}
01640     break;
01641 
01642   case 21:
01643 
01644 /* Line 1455 of yacc.c  */
01645 #line 47 "UnitsApi.y"
01646     { (yyval) = log10((yyvsp[(3) - (4)]));   ;}
01647     break;
01648 
01649   case 22:
01650 
01651 /* Line 1455 of yacc.c  */
01652 #line 48 "UnitsApi.y"
01653     { (yyval) = pow((yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]));  ;}
01654     break;
01655 
01656   case 23:
01657 
01658 /* Line 1455 of yacc.c  */
01659 #line 49 "UnitsApi.y"
01660     { (yyval) = sin((yyvsp[(3) - (4)]));     ;}
01661     break;
01662 
01663   case 24:
01664 
01665 /* Line 1455 of yacc.c  */
01666 #line 50 "UnitsApi.y"
01667     { (yyval) = sinh((yyvsp[(3) - (4)]));    ;}
01668     break;
01669 
01670   case 25:
01671 
01672 /* Line 1455 of yacc.c  */
01673 #line 51 "UnitsApi.y"
01674     { (yyval) = tan((yyvsp[(3) - (4)]));     ;}
01675     break;
01676 
01677   case 26:
01678 
01679 /* Line 1455 of yacc.c  */
01680 #line 52 "UnitsApi.y"
01681     { (yyval) = tanh((yyvsp[(3) - (4)]));    ;}
01682     break;
01683 
01684   case 27:
01685 
01686 /* Line 1455 of yacc.c  */
01687 #line 53 "UnitsApi.y"
01688     { (yyval) = tanh((yyvsp[(3) - (4)]));    ;}
01689     break;
01690 
01691   case 28:
01692 
01693 /* Line 1455 of yacc.c  */
01694 #line 54 "UnitsApi.y"
01695     { (yyval) = cos((yyvsp[(3) - (4)]));    ;}
01696     break;
01697 
01698   case 29:
01699 
01700 /* Line 1455 of yacc.c  */
01701 #line 55 "UnitsApi.y"
01702     { (yyval) = (yyvsp[(1) - (2)]) * (yyvsp[(2) - (2)]);        ;}
01703     break;
01704 
01705 
01706 
01707 /* Line 1455 of yacc.c  */
01708 #line 1709 "UnitsApi.tab.c"
01709       default: break;
01710     }
01711   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
01712 
01713   YYPOPSTACK (yylen);
01714   yylen = 0;
01715   YY_STACK_PRINT (yyss, yyssp);
01716 
01717   *++yyvsp = yyval;
01718 
01719   /* Now `shift' the result of the reduction.  Determine what state
01720      that goes to, based on the state we popped back to and the rule
01721      number reduced by.  */
01722 
01723   yyn = yyr1[yyn];
01724 
01725   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
01726   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
01727     yystate = yytable[yystate];
01728   else
01729     yystate = yydefgoto[yyn - YYNTOKENS];
01730 
01731   goto yynewstate;
01732 
01733 
01734 /*------------------------------------.
01735 | yyerrlab -- here on detecting error |
01736 `------------------------------------*/
01737 yyerrlab:
01738   /* If not already recovering from an error, report this error.  */
01739   if (!yyerrstatus)
01740     {
01741       ++yynerrs;
01742 #if ! YYERROR_VERBOSE
01743       yyerror (YY_("syntax error"));
01744 #else
01745       {
01746         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
01747         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
01748           {
01749             YYSIZE_T yyalloc = 2 * yysize;
01750             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
01751               yyalloc = YYSTACK_ALLOC_MAXIMUM;
01752             if (yymsg != yymsgbuf)
01753               YYSTACK_FREE (yymsg);
01754             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
01755             if (yymsg)
01756               yymsg_alloc = yyalloc;
01757             else
01758               {
01759                 yymsg = yymsgbuf;
01760                 yymsg_alloc = sizeof yymsgbuf;
01761               }
01762           }
01763 
01764         if (0 < yysize && yysize <= yymsg_alloc)
01765           {
01766             (void) yysyntax_error (yymsg, yystate, yychar);
01767             yyerror (yymsg);
01768           }
01769         else
01770           {
01771             yyerror (YY_("syntax error"));
01772             if (yysize != 0)
01773               goto yyexhaustedlab;
01774           }
01775       }
01776 #endif
01777     }
01778 
01779 
01780 
01781   if (yyerrstatus == 3)
01782     {
01783       /* If just tried and failed to reuse lookahead token after an
01784          error, discard it.  */
01785 
01786       if (yychar <= YYEOF)
01787         {
01788           /* Return failure if at end of input.  */
01789           if (yychar == YYEOF)
01790             YYABORT;
01791         }
01792       else
01793         {
01794           yydestruct ("Error: discarding",
01795                       yytoken, &yylval);
01796           yychar = YYEMPTY;
01797         }
01798     }
01799 
01800   /* Else will try to reuse lookahead token after shifting the error
01801      token.  */
01802   goto yyerrlab1;
01803 
01804 
01805 /*---------------------------------------------------.
01806 | yyerrorlab -- error raised explicitly by YYERROR.  |
01807 `---------------------------------------------------*/
01808 yyerrorlab:
01809 
01810   /* Pacify compilers like GCC when the user code never invokes
01811      YYERROR and the label yyerrorlab therefore never appears in user
01812      code.  */
01813   if (/*CONSTCOND*/ 0)
01814      goto yyerrorlab;
01815 
01816   /* Do not reclaim the symbols of the rule which action triggered
01817      this YYERROR.  */
01818   YYPOPSTACK (yylen);
01819   yylen = 0;
01820   YY_STACK_PRINT (yyss, yyssp);
01821   yystate = *yyssp;
01822   goto yyerrlab1;
01823 
01824 
01825 /*-------------------------------------------------------------.
01826 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
01827 `-------------------------------------------------------------*/
01828 yyerrlab1:
01829   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
01830 
01831   for (;;)
01832     {
01833       yyn = yypact[yystate];
01834       if (yyn != YYPACT_NINF)
01835         {
01836           yyn += YYTERROR;
01837           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
01838             {
01839               yyn = yytable[yyn];
01840               if (0 < yyn)
01841                 break;
01842             }
01843         }
01844 
01845       /* Pop the current state because it cannot handle the error token.  */
01846       if (yyssp == yyss)
01847         YYABORT;
01848 
01849 
01850       yydestruct ("Error: popping",
01851                   yystos[yystate], yyvsp);
01852       YYPOPSTACK (1);
01853       yystate = *yyssp;
01854       YY_STACK_PRINT (yyss, yyssp);
01855     }
01856 
01857   *++yyvsp = yylval;
01858 
01859 
01860   /* Shift the error token.  */
01861   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
01862 
01863   yystate = yyn;
01864   goto yynewstate;
01865 
01866 
01867 /*-------------------------------------.
01868 | yyacceptlab -- YYACCEPT comes here.  |
01869 `-------------------------------------*/
01870 yyacceptlab:
01871   yyresult = 0;
01872   goto yyreturn;
01873 
01874 /*-----------------------------------.
01875 | yyabortlab -- YYABORT comes here.  |
01876 `-----------------------------------*/
01877 yyabortlab:
01878   yyresult = 1;
01879   goto yyreturn;
01880 
01881 #if !defined(yyoverflow) || YYERROR_VERBOSE
01882 /*-------------------------------------------------.
01883 | yyexhaustedlab -- memory exhaustion comes here.  |
01884 `-------------------------------------------------*/
01885 yyexhaustedlab:
01886   yyerror (YY_("memory exhausted"));
01887   yyresult = 2;
01888   /* Fall through.  */
01889 #endif
01890 
01891 yyreturn:
01892   if (yychar != YYEMPTY)
01893      yydestruct ("Cleanup: discarding lookahead",
01894                  yytoken, &yylval);
01895   /* Do not reclaim the symbols of the rule which action triggered
01896      this YYABORT or YYACCEPT.  */
01897   YYPOPSTACK (yylen);
01898   YY_STACK_PRINT (yyss, yyssp);
01899   while (yyssp != yyss)
01900     {
01901       yydestruct ("Cleanup: popping",
01902                   yystos[*yyssp], yyvsp);
01903       YYPOPSTACK (1);
01904     }
01905 #ifndef yyoverflow
01906   if (yyss != yyssa)
01907     YYSTACK_FREE (yyss);
01908 #endif
01909 #if YYERROR_VERBOSE
01910   if (yymsg != yymsgbuf)
01911     YYSTACK_FREE (yymsg);
01912 #endif
01913   /* Make sure YYID is used.  */
01914   return YYID (yyresult);
01915 }
01916 
01917 
01918 
01919 /* Line 1675 of yacc.c  */
01920 #line 59 "UnitsApi.y"
01921 
01922 

Generated on Wed Nov 23 19:00:56 2011 for FreeCAD by  doxygen 1.6.1