• Main Page
  • Data Structures
  • Files

cql.c

Go to the documentation of this file.
00001 /* A Bison parser, made by GNU Bison 2.3.  */
00002 
00003 /* Skeleton implementation for Bison's Yacc-like parsers in C
00004 
00005    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
00006    Free Software Foundation, Inc.
00007 
00008    This program is free software; you can redistribute it and/or modify
00009    it under the terms of the GNU General Public License as published by
00010    the Free Software Foundation; either version 2, or (at your option)
00011    any later version.
00012 
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this program; if not, write to the Free Software
00020    Foundation, Inc., 51 Franklin Street, Fifth Floor,
00021    Boston, MA 02110-1301, USA.  */
00022 
00023 /* As a special exception, you may create a larger work that contains
00024    part or all of the Bison parser skeleton and distribute that work
00025    under terms of your choice, so long as that work isn't itself a
00026    parser generator using the skeleton or a modified version thereof
00027    as a parser skeleton.  Alternatively, if you modify or redistribute
00028    the parser skeleton itself, you may (at your option) remove this
00029    special exception, which will cause the skeleton and the resulting
00030    Bison output files to be licensed under the GNU General Public
00031    License without this special exception.
00032 
00033    This special exception was added by the Free Software Foundation in
00034    version 2.2 of Bison.  */
00035 
00036 /* C LALR(1) parser skeleton written by Richard Stallman, by
00037    simplifying the original so-called "semantic" parser.  */
00038 
00039 /* All symbols defined below should begin with yy or YY, to avoid
00040    infringing on user name space.  This should be done even for local
00041    variables, as they might otherwise be expanded by user macros.
00042    There are some unavoidable exceptions within include files to
00043    define necessary library symbols; they are noted "INFRINGES ON
00044    USER NAME SPACE" below.  */
00045 
00046 /* Identify Bison output.  */
00047 #define YYBISON 1
00048 
00049 /* Bison version.  */
00050 #define YYBISON_VERSION "2.3"
00051 
00052 /* Skeleton name.  */
00053 #define YYSKELETON_NAME "yacc.c"
00054 
00055 /* Pure parsers.  */
00056 #define YYPURE 1
00057 
00058 /* Using locations.  */
00059 #define YYLSP_NEEDED 0
00060 
00061 /* Substitute the variable and function names.  */
00062 #define yyparse cql_parse
00063 #define yylex   cql_lex
00064 #define yyerror cql_error
00065 #define yylval  cql_lval
00066 #define yychar  cql_char
00067 #define yydebug cql_debug
00068 #define yynerrs cql_nerrs
00069 
00070 
00071 /* Tokens.  */
00072 #ifndef YYTOKENTYPE
00073 # define YYTOKENTYPE
00074    /* Put the tokens into the symbol table, so that GDB and other debuggers
00075       know about them.  */
00076    enum yytokentype {
00077      DOTTERM = 258,
00078      TERM = 259,
00079      AND = 260,
00080      OR = 261,
00081      NOT = 262,
00082      PROX = 263,
00083      GE = 264,
00084      LE = 265,
00085      NE = 266,
00086      EXACT = 267
00087    };
00088 #endif
00089 /* Tokens.  */
00090 #define DOTTERM 258
00091 #define TERM 259
00092 #define AND 260
00093 #define OR 261
00094 #define NOT 262
00095 #define PROX 263
00096 #define GE 264
00097 #define LE 265
00098 #define NE 266
00099 #define EXACT 267
00100 
00101 
00102 
00103 
00104 /* Copy the first part of user declarations.  */
00105 #line 6 "cql.y"
00106 
00114 #include <stdio.h>
00115 #include <stdlib.h>
00116 #include <string.h>
00117 #include <ctype.h>
00118 #include <yaz/xmalloc.h>
00119 #include <yaz/nmem.h>
00120 #include <yaz/cql.h>
00121 
00123     typedef struct {
00125         struct cql_node *rel;
00127         struct cql_node *cql;
00129         char *buf;
00131         size_t len;
00133         size_t size;
00134     } token;        
00135 
00136     struct cql_parser {
00137         int (*getbyte)(void *client_data);
00138         void (*ungetbyte)(int b, void *client_data);
00139         void *client_data;
00140         int last_error;
00141         int last_pos;
00142         struct cql_node *top;
00143         NMEM nmem;
00144     };
00145 
00146 #define YYSTYPE token
00147     
00148 #define YYPARSE_PARAM parm
00149 #define YYLEX_PARAM parm
00150     
00151     int yylex(YYSTYPE *lval, void *vp);
00152     int yyerror(char *s);
00153 
00154 
00155 /* Enabling traces.  */
00156 #ifndef YYDEBUG
00157 # define YYDEBUG 0
00158 #endif
00159 
00160 /* Enabling verbose error messages.  */
00161 #ifdef YYERROR_VERBOSE
00162 # undef YYERROR_VERBOSE
00163 # define YYERROR_VERBOSE 1
00164 #else
00165 # define YYERROR_VERBOSE 0
00166 #endif
00167 
00168 /* Enabling the token table.  */
00169 #ifndef YYTOKEN_TABLE
00170 # define YYTOKEN_TABLE 0
00171 #endif
00172 
00173 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00174 typedef int YYSTYPE;
00175 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00176 # define YYSTYPE_IS_DECLARED 1
00177 # define YYSTYPE_IS_TRIVIAL 1
00178 #endif
00179 
00180 
00181 
00182 /* Copy the second part of user declarations.  */
00183 
00184 
00185 /* Line 216 of yacc.c.  */
00186 #line 187 "cql.c"
00187 
00188 #ifdef short
00189 # undef short
00190 #endif
00191 
00192 #ifdef YYTYPE_UINT8
00193 typedef YYTYPE_UINT8 yytype_uint8;
00194 #else
00195 typedef unsigned char yytype_uint8;
00196 #endif
00197 
00198 #ifdef YYTYPE_INT8
00199 typedef YYTYPE_INT8 yytype_int8;
00200 #elif (defined __STDC__ || defined __C99__FUNC__ \
00201      || defined __cplusplus || defined _MSC_VER)
00202 typedef signed char yytype_int8;
00203 #else
00204 typedef short int yytype_int8;
00205 #endif
00206 
00207 #ifdef YYTYPE_UINT16
00208 typedef YYTYPE_UINT16 yytype_uint16;
00209 #else
00210 typedef unsigned short int yytype_uint16;
00211 #endif
00212 
00213 #ifdef YYTYPE_INT16
00214 typedef YYTYPE_INT16 yytype_int16;
00215 #else
00216 typedef short int yytype_int16;
00217 #endif
00218 
00219 #ifndef YYSIZE_T
00220 # ifdef __SIZE_TYPE__
00221 #  define YYSIZE_T __SIZE_TYPE__
00222 # elif defined size_t
00223 #  define YYSIZE_T size_t
00224 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00225      || defined __cplusplus || defined _MSC_VER)
00226 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00227 #  define YYSIZE_T size_t
00228 # else
00229 #  define YYSIZE_T unsigned int
00230 # endif
00231 #endif
00232 
00233 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00234 
00235 #ifndef YY_
00236 # if YYENABLE_NLS
00237 #  if ENABLE_NLS
00238 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
00239 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
00240 #  endif
00241 # endif
00242 # ifndef YY_
00243 #  define YY_(msgid) msgid
00244 # endif
00245 #endif
00246 
00247 /* Suppress unused-variable warnings by "using" E.  */
00248 #if ! defined lint || defined __GNUC__
00249 # define YYUSE(e) ((void) (e))
00250 #else
00251 # define YYUSE(e) /* empty */
00252 #endif
00253 
00254 /* Identity function, used to suppress warnings about constant conditions.  */
00255 #ifndef lint
00256 # define YYID(n) (n)
00257 #else
00258 #if (defined __STDC__ || defined __C99__FUNC__ \
00259      || defined __cplusplus || defined _MSC_VER)
00260 static int
00261 YYID (int i)
00262 #else
00263 static int
00264 YYID (i)
00265     int i;
00266 #endif
00267 {
00268   return i;
00269 }
00270 #endif
00271 
00272 #if ! defined yyoverflow || YYERROR_VERBOSE
00273 
00274 /* The parser invokes alloca or malloc; define the necessary symbols.  */
00275 
00276 # ifdef YYSTACK_USE_ALLOCA
00277 #  if YYSTACK_USE_ALLOCA
00278 #   ifdef __GNUC__
00279 #    define YYSTACK_ALLOC __builtin_alloca
00280 #   elif defined __BUILTIN_VA_ARG_INCR
00281 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
00282 #   elif defined _AIX
00283 #    define YYSTACK_ALLOC __alloca
00284 #   elif defined _MSC_VER
00285 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
00286 #    define alloca _alloca
00287 #   else
00288 #    define YYSTACK_ALLOC alloca
00289 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00290      || defined __cplusplus || defined _MSC_VER)
00291 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00292 #     ifndef _STDLIB_H
00293 #      define _STDLIB_H 1
00294 #     endif
00295 #    endif
00296 #   endif
00297 #  endif
00298 # endif
00299 
00300 # ifdef YYSTACK_ALLOC
00301    /* Pacify GCC's `empty if-body' warning.  */
00302 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
00303 #  ifndef YYSTACK_ALLOC_MAXIMUM
00304     /* The OS might guarantee only one guard page at the bottom of the stack,
00305        and a page size can be as small as 4096 bytes.  So we cannot safely
00306        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
00307        to allow for a few compiler-allocated temporary stack slots.  */
00308 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
00309 #  endif
00310 # else
00311 #  define YYSTACK_ALLOC YYMALLOC
00312 #  define YYSTACK_FREE YYFREE
00313 #  ifndef YYSTACK_ALLOC_MAXIMUM
00314 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00315 #  endif
00316 #  if (defined __cplusplus && ! defined _STDLIB_H \
00317        && ! ((defined YYMALLOC || defined malloc) \
00318              && (defined YYFREE || defined free)))
00319 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00320 #   ifndef _STDLIB_H
00321 #    define _STDLIB_H 1
00322 #   endif
00323 #  endif
00324 #  ifndef YYMALLOC
00325 #   define YYMALLOC malloc
00326 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00327      || defined __cplusplus || defined _MSC_VER)
00328 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
00329 #   endif
00330 #  endif
00331 #  ifndef YYFREE
00332 #   define YYFREE free
00333 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00334      || defined __cplusplus || defined _MSC_VER)
00335 void free (void *); /* INFRINGES ON USER NAME SPACE */
00336 #   endif
00337 #  endif
00338 # endif
00339 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
00340 
00341 
00342 #if (! defined yyoverflow \
00343      && (! defined __cplusplus \
00344          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00345 
00346 /* A type that is properly aligned for any stack member.  */
00347 union yyalloc
00348 {
00349   yytype_int16 yyss;
00350   YYSTYPE yyvs;
00351   };
00352 
00353 /* The size of the maximum gap between one aligned stack and the next.  */
00354 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00355 
00356 /* The size of an array large to enough to hold all stacks, each with
00357    N elements.  */
00358 # define YYSTACK_BYTES(N) \
00359      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
00360       + YYSTACK_GAP_MAXIMUM)
00361 
00362 /* Copy COUNT objects from FROM to TO.  The source and destination do
00363    not overlap.  */
00364 # ifndef YYCOPY
00365 #  if defined __GNUC__ && 1 < __GNUC__
00366 #   define YYCOPY(To, From, Count) \
00367       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00368 #  else
00369 #   define YYCOPY(To, From, Count)              \
00370       do                                        \
00371         {                                       \
00372           YYSIZE_T yyi;                         \
00373           for (yyi = 0; yyi < (Count); yyi++)   \
00374             (To)[yyi] = (From)[yyi];            \
00375         }                                       \
00376       while (YYID (0))
00377 #  endif
00378 # endif
00379 
00380 /* Relocate STACK from its old location to the new one.  The
00381    local variables YYSIZE and YYSTACKSIZE give the old and new number of
00382    elements in the stack, and YYPTR gives the new location of the
00383    stack.  Advance YYPTR to a properly aligned location for the next
00384    stack.  */
00385 # define YYSTACK_RELOCATE(Stack)                                        \
00386     do                                                                  \
00387       {                                                                 \
00388         YYSIZE_T yynewbytes;                                            \
00389         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
00390         Stack = &yyptr->Stack;                                          \
00391         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00392         yyptr += yynewbytes / sizeof (*yyptr);                          \
00393       }                                                                 \
00394     while (YYID (0))
00395 
00396 #endif
00397 
00398 /* YYFINAL -- State number of the termination state.  */
00399 #define YYFINAL  3
00400 /* YYLAST -- Last index in YYTABLE.  */
00401 #define YYLAST   73
00402 
00403 /* YYNTOKENS -- Number of terminals.  */
00404 #define YYNTOKENS  19
00405 /* YYNNTS -- Number of nonterminals.  */
00406 #define YYNNTS  19
00407 /* YYNRULES -- Number of rules.  */
00408 #define YYNRULES  49
00409 /* YYNRULES -- Number of states.  */
00410 #define YYNSTATES  62
00411 
00412 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
00413 #define YYUNDEFTOK  2
00414 #define YYMAXUTOK   267
00415 
00416 #define YYTRANSLATE(YYX)                                                \
00417   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00418 
00419 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
00420 static const yytype_uint8 yytranslate[] =
00421 {
00422        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00423        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00424        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00425        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00426       15,    16,     2,     2,     2,     2,     2,    17,     2,     2,
00427        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00428       18,    14,    13,     2,     2,     2,     2,     2,     2,     2,
00429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00431        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00432        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00442        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00443        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00444        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00445        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00446        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00447        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
00448        5,     6,     7,     8,     9,    10,    11,    12
00449 };
00450 
00451 #if YYDEBUG
00452 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
00453    YYRHS.  */
00454 static const yytype_uint8 yyprhs[] =
00455 {
00456        0,     0,     3,     4,     7,     9,    12,    14,    15,    22,
00457       23,    28,    30,    31,    37,    38,    43,    46,    47,    53,
00458       56,    57,    59,    61,    63,    65,    69,    75,    76,    78,
00459       80,    82,    84,    86,    88,    90,    92,    94,    96,    98,
00460      100,   102,   104,   106,   108,   110,   112,   114,   116,   118
00461 };
00462 
00463 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
00464 static const yytype_int8 yyrhs[] =
00465 {
00466       20,     0,    -1,    -1,    21,    22,    -1,    23,    -1,    23,
00467        1,    -1,    26,    -1,    -1,    13,    37,    14,    37,    24,
00468       23,    -1,    -1,    13,    37,    25,    23,    -1,    28,    -1,
00469       -1,    26,    32,    33,    27,    28,    -1,    -1,    15,    29,
00470       23,    16,    -1,    37,    31,    -1,    -1,    36,    35,    33,
00471       30,    28,    -1,    31,     4,    -1,    -1,     5,    -1,     6,
00472       -1,     7,    -1,     8,    -1,    33,    17,    37,    -1,    33,
00473       17,    37,    34,    37,    -1,    -1,    14,    -1,    13,    -1,
00474       18,    -1,     9,    -1,    10,    -1,    11,    -1,    12,    -1,
00475       14,    -1,    13,    -1,    18,    -1,     9,    -1,    10,    -1,
00476       11,    -1,    12,    -1,     3,    -1,    37,    -1,     4,    -1,
00477        3,    -1,     5,    -1,     6,    -1,     7,    -1,     8,    -1
00478 };
00479 
00480 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
00481 static const yytype_uint8 yyrline[] =
00482 {
00483        0,    60,    60,    60,    70,    71,    78,    80,    80,    86,
00484       86,    95,    97,    97,   112,   112,   119,   126,   126,   136,
00485      143,   150,   150,   150,   150,   152,   161,   170,   176,   177,
00486      178,   179,   180,   181,   182,   186,   187,   188,   189,   190,
00487      191,   192,   193,   197,   200,   201,   202,   203,   204,   205
00488 };
00489 #endif
00490 
00491 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00492 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
00493    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
00494 static const char *const yytname[] =
00495 {
00496   "$end", "error", "$undefined", "DOTTERM", "TERM", "AND", "OR", "NOT",
00497   "PROX", "GE", "LE", "NE", "EXACT", "'>'", "'='", "'('", "')'", "'/'",
00498   "'<'", "$accept", "top", "@1", "cqlQuery1", "cqlQuery", "@2", "@3",
00499   "scopedClause", "@4", "searchClause", "@5", "@6", "extraTerms",
00500   "boolean", "modifiers", "mrelation", "relation", "index", "searchTerm", 0
00501 };
00502 #endif
00503 
00504 # ifdef YYPRINT
00505 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
00506    token YYLEX-NUM.  */
00507 static const yytype_uint16 yytoknum[] =
00508 {
00509        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
00510      265,   266,   267,    62,    61,    40,    41,    47,    60
00511 };
00512 # endif
00513 
00514 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
00515 static const yytype_uint8 yyr1[] =
00516 {
00517        0,    19,    21,    20,    22,    22,    23,    24,    23,    25,
00518       23,    26,    27,    26,    29,    28,    28,    30,    28,    31,
00519       31,    32,    32,    32,    32,    33,    33,    33,    34,    34,
00520       34,    34,    34,    34,    34,    35,    35,    35,    35,    35,
00521       35,    35,    35,    36,    37,    37,    37,    37,    37,    37
00522 };
00523 
00524 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
00525 static const yytype_uint8 yyr2[] =
00526 {
00527        0,     2,     0,     2,     1,     2,     1,     0,     6,     0,
00528        4,     1,     0,     5,     0,     4,     2,     0,     5,     2,
00529        0,     1,     1,     1,     1,     3,     5,     0,     1,     1,
00530        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00531        1,     1,     1,     1,     1,     1,     1,     1,     1,     1
00532 };
00533 
00534 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
00535    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
00536    means the default is an error.  */
00537 static const yytype_uint8 yydefact[] =
00538 {
00539        2,     0,     0,     1,    45,    44,    46,    47,    48,    49,
00540        0,    14,     3,     0,     6,    11,     0,    20,     9,     0,
00541        5,    21,    22,    23,    24,    27,    42,    38,    39,    40,
00542       41,    36,    35,    37,    27,    16,     0,     0,     0,    12,
00543       17,    19,     7,    10,    15,     0,     0,     0,     0,    25,
00544       13,    18,     8,    31,    32,    33,    34,    29,    28,    30,
00545        0,    26
00546 };
00547 
00548 /* YYDEFGOTO[NTERM-NUM].  */
00549 static const yytype_int8 yydefgoto[] =
00550 {
00551       -1,     1,     2,    12,    13,    48,    37,    14,    46,    15,
00552       19,    47,    35,    25,    39,    60,    34,    16,    17
00553 };
00554 
00555 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
00556    STATE-NUM.  */
00557 #define YYPACT_NINF -20
00558 static const yytype_int8 yypact[] =
00559 {
00560      -20,     7,    33,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
00561       54,   -20,   -20,    15,    -2,   -20,    -1,    11,     4,    33,
00562      -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
00563      -20,   -20,   -20,   -20,   -20,    27,    54,    33,    16,    17,
00564       17,   -20,   -20,   -20,   -20,    54,    48,    48,    33,    55,
00565      -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
00566       54,   -20
00567 };
00568 
00569 /* YYPGOTO[NTERM-NUM].  */
00570 static const yytype_int8 yypgoto[] =
00571 {
00572      -20,   -20,   -20,   -20,   -18,   -20,   -20,   -20,   -20,   -19,
00573      -20,   -20,   -20,   -20,     8,   -20,   -20,   -20,   -10
00574 };
00575 
00576 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
00577    positive, shift that token.  If negative, reduce the rule which
00578    number is the opposite.  If zero, do what YYDEFACT says.
00579    If YYTABLE_NINF, syntax error.  */
00580 #define YYTABLE_NINF -44
00581 static const yytype_int8 yytable[] =
00582 {
00583       18,    38,    26,    21,    22,    23,    24,     3,    27,    28,
00584       29,    30,    31,    32,   -43,    -4,    20,    33,    36,    43,
00585      -43,   -43,   -43,   -43,   -43,   -43,    42,    50,    51,   -43,
00586       52,    41,    44,     0,    45,    49,     4,     5,     6,     7,
00587        8,     9,    40,     0,     0,     0,    10,     0,    11,     0,
00588       61,     4,     5,     6,     7,     8,     9,     4,     5,     6,
00589        7,     8,     9,    11,    53,    54,    55,    56,    57,    58,
00590        0,     0,     0,    59
00591 };
00592 
00593 static const yytype_int8 yycheck[] =
00594 {
00595       10,    19,     3,     5,     6,     7,     8,     0,     9,    10,
00596       11,    12,    13,    14,     3,     0,     1,    18,    14,    37,
00597        9,    10,    11,    12,    13,    14,    36,    46,    47,    18,
00598       48,     4,    16,    -1,    17,    45,     3,     4,     5,     6,
00599        7,     8,    34,    -1,    -1,    -1,    13,    -1,    15,    -1,
00600       60,     3,     4,     5,     6,     7,     8,     3,     4,     5,
00601        6,     7,     8,    15,     9,    10,    11,    12,    13,    14,
00602       -1,    -1,    -1,    18
00603 };
00604 
00605 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
00606    symbol of state STATE-NUM.  */
00607 static const yytype_uint8 yystos[] =
00608 {
00609        0,    20,    21,     0,     3,     4,     5,     6,     7,     8,
00610       13,    15,    22,    23,    26,    28,    36,    37,    37,    29,
00611        1,     5,     6,     7,     8,    32,     3,     9,    10,    11,
00612       12,    13,    14,    18,    35,    31,    14,    25,    23,    33,
00613       33,     4,    37,    23,    16,    17,    27,    30,    24,    37,
00614       28,    28,    23,     9,    10,    11,    12,    13,    14,    18,
00615       34,    37
00616 };
00617 
00618 #define yyerrok         (yyerrstatus = 0)
00619 #define yyclearin       (yychar = YYEMPTY)
00620 #define YYEMPTY         (-2)
00621 #define YYEOF           0
00622 
00623 #define YYACCEPT        goto yyacceptlab
00624 #define YYABORT         goto yyabortlab
00625 #define YYERROR         goto yyerrorlab
00626 
00627 
00628 /* Like YYERROR except do call yyerror.  This remains here temporarily
00629    to ease the transition to the new meaning of YYERROR, for GCC.
00630    Once GCC version 2 has supplanted version 1, this can go.  */
00631 
00632 #define YYFAIL          goto yyerrlab
00633 
00634 #define YYRECOVERING()  (!!yyerrstatus)
00635 
00636 #define YYBACKUP(Token, Value)                                  \
00637 do                                                              \
00638   if (yychar == YYEMPTY && yylen == 1)                          \
00639     {                                                           \
00640       yychar = (Token);                                         \
00641       yylval = (Value);                                         \
00642       yytoken = YYTRANSLATE (yychar);                           \
00643       YYPOPSTACK (1);                                           \
00644       goto yybackup;                                            \
00645     }                                                           \
00646   else                                                          \
00647     {                                                           \
00648       yyerror (YY_("syntax error: cannot back up")); \
00649       YYERROR;                                                  \
00650     }                                                           \
00651 while (YYID (0))
00652 
00653 
00654 #define YYTERROR        1
00655 #define YYERRCODE       256
00656 
00657 
00658 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
00659    If N is 0, then set CURRENT to the empty location which ends
00660    the previous symbol: RHS[0] (always defined).  */
00661 
00662 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
00663 #ifndef YYLLOC_DEFAULT
00664 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
00665     do                                                                  \
00666       if (YYID (N))                                                    \
00667         {                                                               \
00668           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
00669           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
00670           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
00671           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
00672         }                                                               \
00673       else                                                              \
00674         {                                                               \
00675           (Current).first_line   = (Current).last_line   =              \
00676             YYRHSLOC (Rhs, 0).last_line;                                \
00677           (Current).first_column = (Current).last_column =              \
00678             YYRHSLOC (Rhs, 0).last_column;                              \
00679         }                                                               \
00680     while (YYID (0))
00681 #endif
00682 
00683 
00684 /* YY_LOCATION_PRINT -- Print the location on the stream.
00685    This macro was not mandated originally: define only if we know
00686    we won't break user code: when these are the locations we know.  */
00687 
00688 #ifndef YY_LOCATION_PRINT
00689 # if YYLTYPE_IS_TRIVIAL
00690 #  define YY_LOCATION_PRINT(File, Loc)                  \
00691      fprintf (File, "%d.%d-%d.%d",                      \
00692               (Loc).first_line, (Loc).first_column,     \
00693               (Loc).last_line,  (Loc).last_column)
00694 # else
00695 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
00696 # endif
00697 #endif
00698 
00699 
00700 /* YYLEX -- calling `yylex' with the right arguments.  */
00701 
00702 #ifdef YYLEX_PARAM
00703 # define YYLEX yylex (&yylval, YYLEX_PARAM)
00704 #else
00705 # define YYLEX yylex (&yylval)
00706 #endif
00707 
00708 /* Enable debugging if requested.  */
00709 #if YYDEBUG
00710 
00711 # ifndef YYFPRINTF
00712 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
00713 #  define YYFPRINTF fprintf
00714 # endif
00715 
00716 # define YYDPRINTF(Args)                        \
00717 do {                                            \
00718   if (yydebug)                                  \
00719     YYFPRINTF Args;                             \
00720 } while (YYID (0))
00721 
00722 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
00723 do {                                                                      \
00724   if (yydebug)                                                            \
00725     {                                                                     \
00726       YYFPRINTF (stderr, "%s ", Title);                                   \
00727       yy_symbol_print (stderr,                                            \
00728                   Type, Value); \
00729       YYFPRINTF (stderr, "\n");                                           \
00730     }                                                                     \
00731 } while (YYID (0))
00732 
00733 
00734 /*--------------------------------.
00735 | Print this symbol on YYOUTPUT.  |
00736 `--------------------------------*/
00737 
00738 /*ARGSUSED*/
00739 #if (defined __STDC__ || defined __C99__FUNC__ \
00740      || defined __cplusplus || defined _MSC_VER)
00741 static void
00742 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00743 #else
00744 static void
00745 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
00746     FILE *yyoutput;
00747     int yytype;
00748     YYSTYPE const * const yyvaluep;
00749 #endif
00750 {
00751   if (!yyvaluep)
00752     return;
00753 # ifdef YYPRINT
00754   if (yytype < YYNTOKENS)
00755     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
00756 # else
00757   YYUSE (yyoutput);
00758 # endif
00759   switch (yytype)
00760     {
00761       default:
00762         break;
00763     }
00764 }
00765 
00766 
00767 /*--------------------------------.
00768 | Print this symbol on YYOUTPUT.  |
00769 `--------------------------------*/
00770 
00771 #if (defined __STDC__ || defined __C99__FUNC__ \
00772      || defined __cplusplus || defined _MSC_VER)
00773 static void
00774 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00775 #else
00776 static void
00777 yy_symbol_print (yyoutput, yytype, yyvaluep)
00778     FILE *yyoutput;
00779     int yytype;
00780     YYSTYPE const * const yyvaluep;
00781 #endif
00782 {
00783   if (yytype < YYNTOKENS)
00784     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
00785   else
00786     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
00787 
00788   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
00789   YYFPRINTF (yyoutput, ")");
00790 }
00791 
00792 /*------------------------------------------------------------------.
00793 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
00794 | TOP (included).                                                   |
00795 `------------------------------------------------------------------*/
00796 
00797 #if (defined __STDC__ || defined __C99__FUNC__ \
00798      || defined __cplusplus || defined _MSC_VER)
00799 static void
00800 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
00801 #else
00802 static void
00803 yy_stack_print (bottom, top)
00804     yytype_int16 *bottom;
00805     yytype_int16 *top;
00806 #endif
00807 {
00808   YYFPRINTF (stderr, "Stack now");
00809   for (; bottom <= top; ++bottom)
00810     YYFPRINTF (stderr, " %d", *bottom);
00811   YYFPRINTF (stderr, "\n");
00812 }
00813 
00814 # define YY_STACK_PRINT(Bottom, Top)                            \
00815 do {                                                            \
00816   if (yydebug)                                                  \
00817     yy_stack_print ((Bottom), (Top));                           \
00818 } while (YYID (0))
00819 
00820 
00821 /*------------------------------------------------.
00822 | Report that the YYRULE is going to be reduced.  |
00823 `------------------------------------------------*/
00824 
00825 #if (defined __STDC__ || defined __C99__FUNC__ \
00826      || defined __cplusplus || defined _MSC_VER)
00827 static void
00828 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
00829 #else
00830 static void
00831 yy_reduce_print (yyvsp, yyrule)
00832     YYSTYPE *yyvsp;
00833     int yyrule;
00834 #endif
00835 {
00836   int yynrhs = yyr2[yyrule];
00837   int yyi;
00838   unsigned long int yylno = yyrline[yyrule];
00839   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
00840              yyrule - 1, yylno);
00841   /* The symbols being reduced.  */
00842   for (yyi = 0; yyi < yynrhs; yyi++)
00843     {
00844       fprintf (stderr, "   $%d = ", yyi + 1);
00845       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
00846                        &(yyvsp[(yyi + 1) - (yynrhs)])
00847                                        );
00848       fprintf (stderr, "\n");
00849     }
00850 }
00851 
00852 # define YY_REDUCE_PRINT(Rule)          \
00853 do {                                    \
00854   if (yydebug)                          \
00855     yy_reduce_print (yyvsp, Rule); \
00856 } while (YYID (0))
00857 
00858 /* Nonzero means print parse trace.  It is left uninitialized so that
00859    multiple parsers can coexist.  */
00860 int yydebug;
00861 #else /* !YYDEBUG */
00862 # define YYDPRINTF(Args)
00863 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
00864 # define YY_STACK_PRINT(Bottom, Top)
00865 # define YY_REDUCE_PRINT(Rule)
00866 #endif /* !YYDEBUG */
00867 
00868 
00869 /* YYINITDEPTH -- initial size of the parser's stacks.  */
00870 #ifndef YYINITDEPTH
00871 # define YYINITDEPTH 200
00872 #endif
00873 
00874 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
00875    if the built-in stack extension method is used).
00876 
00877    Do not make this value too large; the results are undefined if
00878    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
00879    evaluated with infinite-precision integer arithmetic.  */
00880 
00881 #ifndef YYMAXDEPTH
00882 # define YYMAXDEPTH 10000
00883 #endif
00884 
00885 
00886 
00887 #if YYERROR_VERBOSE
00888 
00889 # ifndef yystrlen
00890 #  if defined __GLIBC__ && defined _STRING_H
00891 #   define yystrlen strlen
00892 #  else
00893 /* Return the length of YYSTR.  */
00894 #if (defined __STDC__ || defined __C99__FUNC__ \
00895      || defined __cplusplus || defined _MSC_VER)
00896 static YYSIZE_T
00897 yystrlen (const char *yystr)
00898 #else
00899 static YYSIZE_T
00900 yystrlen (yystr)
00901     const char *yystr;
00902 #endif
00903 {
00904   YYSIZE_T yylen;
00905   for (yylen = 0; yystr[yylen]; yylen++)
00906     continue;
00907   return yylen;
00908 }
00909 #  endif
00910 # endif
00911 
00912 # ifndef yystpcpy
00913 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
00914 #   define yystpcpy stpcpy
00915 #  else
00916 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
00917    YYDEST.  */
00918 #if (defined __STDC__ || defined __C99__FUNC__ \
00919      || defined __cplusplus || defined _MSC_VER)
00920 static char *
00921 yystpcpy (char *yydest, const char *yysrc)
00922 #else
00923 static char *
00924 yystpcpy (yydest, yysrc)
00925     char *yydest;
00926     const char *yysrc;
00927 #endif
00928 {
00929   char *yyd = yydest;
00930   const char *yys = yysrc;
00931 
00932   while ((*yyd++ = *yys++) != '\0')
00933     continue;
00934 
00935   return yyd - 1;
00936 }
00937 #  endif
00938 # endif
00939 
00940 # ifndef yytnamerr
00941 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
00942    quotes and backslashes, so that it's suitable for yyerror.  The
00943    heuristic is that double-quoting is unnecessary unless the string
00944    contains an apostrophe, a comma, or backslash (other than
00945    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
00946    null, do not copy; instead, return the length of what the result
00947    would have been.  */
00948 static YYSIZE_T
00949 yytnamerr (char *yyres, const char *yystr)
00950 {
00951   if (*yystr == '"')
00952     {
00953       YYSIZE_T yyn = 0;
00954       char const *yyp = yystr;
00955 
00956       for (;;)
00957         switch (*++yyp)
00958           {
00959           case '\'':
00960           case ',':
00961             goto do_not_strip_quotes;
00962 
00963           case '\\':
00964             if (*++yyp != '\\')
00965               goto do_not_strip_quotes;
00966             /* Fall through.  */
00967           default:
00968             if (yyres)
00969               yyres[yyn] = *yyp;
00970             yyn++;
00971             break;
00972 
00973           case '"':
00974             if (yyres)
00975               yyres[yyn] = '\0';
00976             return yyn;
00977           }
00978     do_not_strip_quotes: ;
00979     }
00980 
00981   if (! yyres)
00982     return yystrlen (yystr);
00983 
00984   return yystpcpy (yyres, yystr) - yyres;
00985 }
00986 # endif
00987 
00988 /* Copy into YYRESULT an error message about the unexpected token
00989    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
00990    including the terminating null byte.  If YYRESULT is null, do not
00991    copy anything; just return the number of bytes that would be
00992    copied.  As a special case, return 0 if an ordinary "syntax error"
00993    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
00994    size calculation.  */
00995 static YYSIZE_T
00996 yysyntax_error (char *yyresult, int yystate, int yychar)
00997 {
00998   int yyn = yypact[yystate];
00999 
01000   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
01001     return 0;
01002   else
01003     {
01004       int yytype = YYTRANSLATE (yychar);
01005       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
01006       YYSIZE_T yysize = yysize0;
01007       YYSIZE_T yysize1;
01008       int yysize_overflow = 0;
01009       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01010       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01011       int yyx;
01012 
01013 # if 0
01014       /* This is so xgettext sees the translatable formats that are
01015          constructed on the fly.  */
01016       YY_("syntax error, unexpected %s");
01017       YY_("syntax error, unexpected %s, expecting %s");
01018       YY_("syntax error, unexpected %s, expecting %s or %s");
01019       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
01020       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
01021 # endif
01022       char *yyfmt;
01023       char const *yyf;
01024       static char const yyunexpected[] = "syntax error, unexpected %s";
01025       static char const yyexpecting[] = ", expecting %s";
01026       static char const yyor[] = " or %s";
01027       char yyformat[sizeof yyunexpected
01028                     + sizeof yyexpecting - 1
01029                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
01030                        * (sizeof yyor - 1))];
01031       char const *yyprefix = yyexpecting;
01032 
01033       /* Start YYX at -YYN if negative to avoid negative indexes in
01034          YYCHECK.  */
01035       int yyxbegin = yyn < 0 ? -yyn : 0;
01036 
01037       /* Stay within bounds of both yycheck and yytname.  */
01038       int yychecklim = YYLAST - yyn + 1;
01039       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01040       int yycount = 1;
01041 
01042       yyarg[0] = yytname[yytype];
01043       yyfmt = yystpcpy (yyformat, yyunexpected);
01044 
01045       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01046         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
01047           {
01048             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01049               {
01050                 yycount = 1;
01051                 yysize = yysize0;
01052                 yyformat[sizeof yyunexpected - 1] = '\0';
01053                 break;
01054               }
01055             yyarg[yycount++] = yytname[yyx];
01056             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01057             yysize_overflow |= (yysize1 < yysize);
01058             yysize = yysize1;
01059             yyfmt = yystpcpy (yyfmt, yyprefix);
01060             yyprefix = yyor;
01061           }
01062 
01063       yyf = YY_(yyformat);
01064       yysize1 = yysize + yystrlen (yyf);
01065       yysize_overflow |= (yysize1 < yysize);
01066       yysize = yysize1;
01067 
01068       if (yysize_overflow)
01069         return YYSIZE_MAXIMUM;
01070 
01071       if (yyresult)
01072         {
01073           /* Avoid sprintf, as that infringes on the user's name space.
01074              Don't have undefined behavior even if the translation
01075              produced a string with the wrong number of "%s"s.  */
01076           char *yyp = yyresult;
01077           int yyi = 0;
01078           while ((*yyp = *yyf) != '\0')
01079             {
01080               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01081                 {
01082                   yyp += yytnamerr (yyp, yyarg[yyi++]);
01083                   yyf += 2;
01084                 }
01085               else
01086                 {
01087                   yyp++;
01088                   yyf++;
01089                 }
01090             }
01091         }
01092       return yysize;
01093     }
01094 }
01095 #endif /* YYERROR_VERBOSE */
01096 
01097 
01098 /*-----------------------------------------------.
01099 | Release the memory associated to this symbol.  |
01100 `-----------------------------------------------*/
01101 
01102 /*ARGSUSED*/
01103 #if (defined __STDC__ || defined __C99__FUNC__ \
01104      || defined __cplusplus || defined _MSC_VER)
01105 static void
01106 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
01107 #else
01108 static void
01109 yydestruct (yymsg, yytype, yyvaluep)
01110     const char *yymsg;
01111     int yytype;
01112     YYSTYPE *yyvaluep;
01113 #endif
01114 {
01115   YYUSE (yyvaluep);
01116 
01117   if (!yymsg)
01118     yymsg = "Deleting";
01119   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01120 
01121   switch (yytype)
01122     {
01123 
01124       default:
01125         break;
01126     }
01127 }
01128 
01129 
01130 /* Prevent warnings from -Wmissing-prototypes.  */
01131 
01132 #ifdef YYPARSE_PARAM
01133 #if defined __STDC__ || defined __cplusplus
01134 int yyparse (void *YYPARSE_PARAM);
01135 #else
01136 int yyparse ();
01137 #endif
01138 #else /* ! YYPARSE_PARAM */
01139 #if defined __STDC__ || defined __cplusplus
01140 int yyparse (void);
01141 #else
01142 int yyparse ();
01143 #endif
01144 #endif /* ! YYPARSE_PARAM */
01145 
01146 
01147 
01148 
01149 
01150 
01151 /*----------.
01152 | yyparse.  |
01153 `----------*/
01154 
01155 #ifdef YYPARSE_PARAM
01156 #if (defined __STDC__ || defined __C99__FUNC__ \
01157      || defined __cplusplus || defined _MSC_VER)
01158 int
01159 yyparse (void *YYPARSE_PARAM)
01160 #else
01161 int
01162 yyparse (YYPARSE_PARAM)
01163     void *YYPARSE_PARAM;
01164 #endif
01165 #else /* ! YYPARSE_PARAM */
01166 #if (defined __STDC__ || defined __C99__FUNC__ \
01167      || defined __cplusplus || defined _MSC_VER)
01168 int
01169 yyparse (void)
01170 #else
01171 int
01172 yyparse ()
01173 
01174 #endif
01175 #endif
01176 {
01177   /* The look-ahead symbol.  */
01178 int yychar;
01179 
01180 /* The semantic value of the look-ahead symbol.  */
01181 YYSTYPE yylval;
01182 
01183 /* Number of syntax errors so far.  */
01184 int yynerrs;
01185 
01186   int yystate;
01187   int yyn;
01188   int yyresult;
01189   /* Number of tokens to shift before error messages enabled.  */
01190   int yyerrstatus;
01191   /* Look-ahead token as an internal (translated) token number.  */
01192   int yytoken = 0;
01193 #if YYERROR_VERBOSE
01194   /* Buffer for error messages, and its allocated size.  */
01195   char yymsgbuf[128];
01196   char *yymsg = yymsgbuf;
01197   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01198 #endif
01199 
01200   /* Three stacks and their tools:
01201      `yyss': related to states,
01202      `yyvs': related to semantic values,
01203      `yyls': related to locations.
01204 
01205      Refer to the stacks thru separate pointers, to allow yyoverflow
01206      to reallocate them elsewhere.  */
01207 
01208   /* The state stack.  */
01209   yytype_int16 yyssa[YYINITDEPTH];
01210   yytype_int16 *yyss = yyssa;
01211   yytype_int16 *yyssp;
01212 
01213   /* The semantic value stack.  */
01214   YYSTYPE yyvsa[YYINITDEPTH];
01215   YYSTYPE *yyvs = yyvsa;
01216   YYSTYPE *yyvsp;
01217 
01218 
01219 
01220 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
01221 
01222   YYSIZE_T yystacksize =