1c19800e8SDoug Rabson /* A Bison parser, made by GNU Bison 2.3. */ 2c19800e8SDoug Rabson 3c19800e8SDoug Rabson /* Skeleton implementation for Bison's Yacc-like parsers in C 4c19800e8SDoug Rabson 5c19800e8SDoug Rabson Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6c19800e8SDoug Rabson Free Software Foundation, Inc. 7c19800e8SDoug Rabson 8c19800e8SDoug Rabson This program is free software; you can redistribute it and/or modify 9c19800e8SDoug Rabson it under the terms of the GNU General Public License as published by 10c19800e8SDoug Rabson the Free Software Foundation; either version 2, or (at your option) 11c19800e8SDoug Rabson any later version. 12c19800e8SDoug Rabson 13c19800e8SDoug Rabson This program is distributed in the hope that it will be useful, 14c19800e8SDoug Rabson but WITHOUT ANY WARRANTY; without even the implied warranty of 15c19800e8SDoug Rabson MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16c19800e8SDoug Rabson GNU General Public License for more details. 17c19800e8SDoug Rabson 18c19800e8SDoug Rabson You should have received a copy of the GNU General Public License 19c19800e8SDoug Rabson along with this program; if not, write to the Free Software 20c19800e8SDoug Rabson Foundation, Inc., 51 Franklin Street, Fifth Floor, 21c19800e8SDoug Rabson Boston, MA 02110-1301, USA. */ 22c19800e8SDoug Rabson 23c19800e8SDoug Rabson /* As a special exception, you may create a larger work that contains 24c19800e8SDoug Rabson part or all of the Bison parser skeleton and distribute that work 25c19800e8SDoug Rabson under terms of your choice, so long as that work isn't itself a 26c19800e8SDoug Rabson parser generator using the skeleton or a modified version thereof 27c19800e8SDoug Rabson as a parser skeleton. Alternatively, if you modify or redistribute 28c19800e8SDoug Rabson the parser skeleton itself, you may (at your option) remove this 29c19800e8SDoug Rabson special exception, which will cause the skeleton and the resulting 30c19800e8SDoug Rabson Bison output files to be licensed under the GNU General Public 31c19800e8SDoug Rabson License without this special exception. 32c19800e8SDoug Rabson 33c19800e8SDoug Rabson This special exception was added by the Free Software Foundation in 34c19800e8SDoug Rabson version 2.2 of Bison. */ 35c19800e8SDoug Rabson 36c19800e8SDoug Rabson /* C LALR(1) parser skeleton written by Richard Stallman, by 37c19800e8SDoug Rabson simplifying the original so-called "semantic" parser. */ 38c19800e8SDoug Rabson 39c19800e8SDoug Rabson /* All symbols defined below should begin with yy or YY, to avoid 40c19800e8SDoug Rabson infringing on user name space. This should be done even for local 41c19800e8SDoug Rabson variables, as they might otherwise be expanded by user macros. 42c19800e8SDoug Rabson There are some unavoidable exceptions within include files to 43c19800e8SDoug Rabson define necessary library symbols; they are noted "INFRINGES ON 44c19800e8SDoug Rabson USER NAME SPACE" below. */ 45c19800e8SDoug Rabson 46c19800e8SDoug Rabson /* Identify Bison output. */ 47c19800e8SDoug Rabson #define YYBISON 1 48c19800e8SDoug Rabson 49c19800e8SDoug Rabson /* Bison version. */ 50c19800e8SDoug Rabson #define YYBISON_VERSION "2.3" 51c19800e8SDoug Rabson 52c19800e8SDoug Rabson /* Skeleton name. */ 53c19800e8SDoug Rabson #define YYSKELETON_NAME "yacc.c" 54c19800e8SDoug Rabson 55c19800e8SDoug Rabson /* Pure parsers. */ 56c19800e8SDoug Rabson #define YYPURE 0 57c19800e8SDoug Rabson 58c19800e8SDoug Rabson /* Using locations. */ 59c19800e8SDoug Rabson #define YYLSP_NEEDED 0 60c19800e8SDoug Rabson 61c19800e8SDoug Rabson 62c19800e8SDoug Rabson 63c19800e8SDoug Rabson /* Tokens. */ 64c19800e8SDoug Rabson #ifndef YYTOKENTYPE 65c19800e8SDoug Rabson # define YYTOKENTYPE 66c19800e8SDoug Rabson /* Put the tokens into the symbol table, so that GDB and other debuggers 67c19800e8SDoug Rabson know about them. */ 68c19800e8SDoug Rabson enum yytokentype { 69c19800e8SDoug Rabson ET = 258, 70c19800e8SDoug Rabson INDEX = 259, 71c19800e8SDoug Rabson PREFIX = 260, 72c19800e8SDoug Rabson EC = 261, 73c19800e8SDoug Rabson ID = 262, 74c19800e8SDoug Rabson END = 263, 75c19800e8SDoug Rabson STRING = 264, 76c19800e8SDoug Rabson NUMBER = 265 77c19800e8SDoug Rabson }; 78c19800e8SDoug Rabson #endif 79c19800e8SDoug Rabson /* Tokens. */ 80c19800e8SDoug Rabson #define ET 258 81c19800e8SDoug Rabson #define INDEX 259 82c19800e8SDoug Rabson #define PREFIX 260 83c19800e8SDoug Rabson #define EC 261 84c19800e8SDoug Rabson #define ID 262 85c19800e8SDoug Rabson #define END 263 86c19800e8SDoug Rabson #define STRING 264 87c19800e8SDoug Rabson #define NUMBER 265 88c19800e8SDoug Rabson 89c19800e8SDoug Rabson 90c19800e8SDoug Rabson 91c19800e8SDoug Rabson 92c19800e8SDoug Rabson /* Copy the first part of user declarations. */ 93c19800e8SDoug Rabson #line 1 "parse.y" 94c19800e8SDoug Rabson 95c19800e8SDoug Rabson /* 96c19800e8SDoug Rabson * Copyright (c) 1998 - 2000 Kungliga Tekniska H�gskolan 97c19800e8SDoug Rabson * (Royal Institute of Technology, Stockholm, Sweden). 98c19800e8SDoug Rabson * All rights reserved. 99c19800e8SDoug Rabson * 100c19800e8SDoug Rabson * Redistribution and use in source and binary forms, with or without 101c19800e8SDoug Rabson * modification, are permitted provided that the following conditions 102c19800e8SDoug Rabson * are met: 103c19800e8SDoug Rabson * 104c19800e8SDoug Rabson * 1. Redistributions of source code must retain the above copyright 105c19800e8SDoug Rabson * notice, this list of conditions and the following disclaimer. 106c19800e8SDoug Rabson * 107c19800e8SDoug Rabson * 2. Redistributions in binary form must reproduce the above copyright 108c19800e8SDoug Rabson * notice, this list of conditions and the following disclaimer in the 109c19800e8SDoug Rabson * documentation and/or other materials provided with the distribution. 110c19800e8SDoug Rabson * 111c19800e8SDoug Rabson * 3. Neither the name of the Institute nor the names of its contributors 112c19800e8SDoug Rabson * may be used to endorse or promote products derived from this software 113c19800e8SDoug Rabson * without specific prior written permission. 114c19800e8SDoug Rabson * 115c19800e8SDoug Rabson * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 116c19800e8SDoug Rabson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 117c19800e8SDoug Rabson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 118c19800e8SDoug Rabson * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 119c19800e8SDoug Rabson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 120c19800e8SDoug Rabson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 121c19800e8SDoug Rabson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 122c19800e8SDoug Rabson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 123c19800e8SDoug Rabson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 124c19800e8SDoug Rabson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 125c19800e8SDoug Rabson * SUCH DAMAGE. 126c19800e8SDoug Rabson */ 127c19800e8SDoug Rabson 128c19800e8SDoug Rabson #include "compile_et.h" 129c19800e8SDoug Rabson #include "lex.h" 130c19800e8SDoug Rabson 131c19800e8SDoug Rabson RCSID("$Id: parse.y 15426 2005-06-16 19:21:42Z lha $"); 132c19800e8SDoug Rabson 133c19800e8SDoug Rabson void yyerror (char *s); 134c19800e8SDoug Rabson static long name2number(const char *str); 135c19800e8SDoug Rabson 136c19800e8SDoug Rabson extern char *yytext; 137c19800e8SDoug Rabson 138c19800e8SDoug Rabson /* This is for bison */ 139c19800e8SDoug Rabson 140c19800e8SDoug Rabson #if !defined(alloca) && !defined(HAVE_ALLOCA) 141c19800e8SDoug Rabson #define alloca(x) malloc(x) 142c19800e8SDoug Rabson #endif 143c19800e8SDoug Rabson 144c19800e8SDoug Rabson 145c19800e8SDoug Rabson 146c19800e8SDoug Rabson /* Enabling traces. */ 147c19800e8SDoug Rabson #ifndef YYDEBUG 148c19800e8SDoug Rabson # define YYDEBUG 0 149c19800e8SDoug Rabson #endif 150c19800e8SDoug Rabson 151c19800e8SDoug Rabson /* Enabling verbose error messages. */ 152c19800e8SDoug Rabson #ifdef YYERROR_VERBOSE 153c19800e8SDoug Rabson # undef YYERROR_VERBOSE 154c19800e8SDoug Rabson # define YYERROR_VERBOSE 1 155c19800e8SDoug Rabson #else 156c19800e8SDoug Rabson # define YYERROR_VERBOSE 0 157c19800e8SDoug Rabson #endif 158c19800e8SDoug Rabson 159c19800e8SDoug Rabson /* Enabling the token table. */ 160c19800e8SDoug Rabson #ifndef YYTOKEN_TABLE 161c19800e8SDoug Rabson # define YYTOKEN_TABLE 0 162c19800e8SDoug Rabson #endif 163c19800e8SDoug Rabson 164c19800e8SDoug Rabson #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 165c19800e8SDoug Rabson typedef union YYSTYPE 166c19800e8SDoug Rabson #line 53 "parse.y" 167c19800e8SDoug Rabson { 168c19800e8SDoug Rabson char *string; 169c19800e8SDoug Rabson int number; 170c19800e8SDoug Rabson } 171c19800e8SDoug Rabson /* Line 193 of yacc.c. */ 172c19800e8SDoug Rabson #line 173 "parse.c" 173c19800e8SDoug Rabson YYSTYPE; 174c19800e8SDoug Rabson # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 175c19800e8SDoug Rabson # define YYSTYPE_IS_DECLARED 1 176c19800e8SDoug Rabson # define YYSTYPE_IS_TRIVIAL 1 177c19800e8SDoug Rabson #endif 178c19800e8SDoug Rabson 179c19800e8SDoug Rabson 180c19800e8SDoug Rabson 181c19800e8SDoug Rabson /* Copy the second part of user declarations. */ 182c19800e8SDoug Rabson 183c19800e8SDoug Rabson 184c19800e8SDoug Rabson /* Line 216 of yacc.c. */ 185c19800e8SDoug Rabson #line 186 "parse.c" 186c19800e8SDoug Rabson 187c19800e8SDoug Rabson #ifdef short 188c19800e8SDoug Rabson # undef short 189c19800e8SDoug Rabson #endif 190c19800e8SDoug Rabson 191c19800e8SDoug Rabson #ifdef YYTYPE_UINT8 192c19800e8SDoug Rabson typedef YYTYPE_UINT8 yytype_uint8; 193c19800e8SDoug Rabson #else 194c19800e8SDoug Rabson typedef unsigned char yytype_uint8; 195c19800e8SDoug Rabson #endif 196c19800e8SDoug Rabson 197c19800e8SDoug Rabson #ifdef YYTYPE_INT8 198c19800e8SDoug Rabson typedef YYTYPE_INT8 yytype_int8; 199c19800e8SDoug Rabson #elif (defined __STDC__ || defined __C99__FUNC__ \ 200c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 201c19800e8SDoug Rabson typedef signed char yytype_int8; 202c19800e8SDoug Rabson #else 203c19800e8SDoug Rabson typedef short int yytype_int8; 204c19800e8SDoug Rabson #endif 205c19800e8SDoug Rabson 206c19800e8SDoug Rabson #ifdef YYTYPE_UINT16 207c19800e8SDoug Rabson typedef YYTYPE_UINT16 yytype_uint16; 208c19800e8SDoug Rabson #else 209c19800e8SDoug Rabson typedef unsigned short int yytype_uint16; 210c19800e8SDoug Rabson #endif 211c19800e8SDoug Rabson 212c19800e8SDoug Rabson #ifdef YYTYPE_INT16 213c19800e8SDoug Rabson typedef YYTYPE_INT16 yytype_int16; 214c19800e8SDoug Rabson #else 215c19800e8SDoug Rabson typedef short int yytype_int16; 216c19800e8SDoug Rabson #endif 217c19800e8SDoug Rabson 218c19800e8SDoug Rabson #ifndef YYSIZE_T 219c19800e8SDoug Rabson # ifdef __SIZE_TYPE__ 220c19800e8SDoug Rabson # define YYSIZE_T __SIZE_TYPE__ 221c19800e8SDoug Rabson # elif defined size_t 222c19800e8SDoug Rabson # define YYSIZE_T size_t 223c19800e8SDoug Rabson # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 224c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 225c19800e8SDoug Rabson # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 226c19800e8SDoug Rabson # define YYSIZE_T size_t 227c19800e8SDoug Rabson # else 228c19800e8SDoug Rabson # define YYSIZE_T unsigned int 229c19800e8SDoug Rabson # endif 230c19800e8SDoug Rabson #endif 231c19800e8SDoug Rabson 232c19800e8SDoug Rabson #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 233c19800e8SDoug Rabson 234c19800e8SDoug Rabson #ifndef YY_ 235c19800e8SDoug Rabson # if defined YYENABLE_NLS && YYENABLE_NLS 236c19800e8SDoug Rabson # if ENABLE_NLS 237c19800e8SDoug Rabson # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 238c19800e8SDoug Rabson # define YY_(msgid) dgettext ("bison-runtime", msgid) 239c19800e8SDoug Rabson # endif 240c19800e8SDoug Rabson # endif 241c19800e8SDoug Rabson # ifndef YY_ 242c19800e8SDoug Rabson # define YY_(msgid) msgid 243c19800e8SDoug Rabson # endif 244c19800e8SDoug Rabson #endif 245c19800e8SDoug Rabson 246c19800e8SDoug Rabson /* Suppress unused-variable warnings by "using" E. */ 247c19800e8SDoug Rabson #if ! defined lint || defined __GNUC__ 248c19800e8SDoug Rabson # define YYUSE(e) ((void) (e)) 249c19800e8SDoug Rabson #else 250c19800e8SDoug Rabson # define YYUSE(e) /* empty */ 251c19800e8SDoug Rabson #endif 252c19800e8SDoug Rabson 253c19800e8SDoug Rabson /* Identity function, used to suppress warnings about constant conditions. */ 254c19800e8SDoug Rabson #ifndef lint 255c19800e8SDoug Rabson # define YYID(n) (n) 256c19800e8SDoug Rabson #else 257c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 258c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 259c19800e8SDoug Rabson static int 260c19800e8SDoug Rabson YYID (int i) 261c19800e8SDoug Rabson #else 262c19800e8SDoug Rabson static int 263c19800e8SDoug Rabson YYID (i) 264c19800e8SDoug Rabson int i; 265c19800e8SDoug Rabson #endif 266c19800e8SDoug Rabson { 267c19800e8SDoug Rabson return i; 268c19800e8SDoug Rabson } 269c19800e8SDoug Rabson #endif 270c19800e8SDoug Rabson 271c19800e8SDoug Rabson #if ! defined yyoverflow || YYERROR_VERBOSE 272c19800e8SDoug Rabson 273c19800e8SDoug Rabson /* The parser invokes alloca or malloc; define the necessary symbols. */ 274c19800e8SDoug Rabson 275c19800e8SDoug Rabson # ifdef YYSTACK_USE_ALLOCA 276c19800e8SDoug Rabson # if YYSTACK_USE_ALLOCA 277c19800e8SDoug Rabson # ifdef __GNUC__ 278c19800e8SDoug Rabson # define YYSTACK_ALLOC __builtin_alloca 279c19800e8SDoug Rabson # elif defined __BUILTIN_VA_ARG_INCR 280c19800e8SDoug Rabson # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 281c19800e8SDoug Rabson # elif defined _AIX 282c19800e8SDoug Rabson # define YYSTACK_ALLOC __alloca 283c19800e8SDoug Rabson # elif defined _MSC_VER 284c19800e8SDoug Rabson # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 285c19800e8SDoug Rabson # define alloca _alloca 286c19800e8SDoug Rabson # else 287c19800e8SDoug Rabson # define YYSTACK_ALLOC alloca 288c19800e8SDoug Rabson # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 289c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 290c19800e8SDoug Rabson # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 291c19800e8SDoug Rabson # ifndef _STDLIB_H 292c19800e8SDoug Rabson # define _STDLIB_H 1 293c19800e8SDoug Rabson # endif 294c19800e8SDoug Rabson # endif 295c19800e8SDoug Rabson # endif 296c19800e8SDoug Rabson # endif 297c19800e8SDoug Rabson # endif 298c19800e8SDoug Rabson 299c19800e8SDoug Rabson # ifdef YYSTACK_ALLOC 300c19800e8SDoug Rabson /* Pacify GCC's `empty if-body' warning. */ 301c19800e8SDoug Rabson # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 302c19800e8SDoug Rabson # ifndef YYSTACK_ALLOC_MAXIMUM 303c19800e8SDoug Rabson /* The OS might guarantee only one guard page at the bottom of the stack, 304c19800e8SDoug Rabson and a page size can be as small as 4096 bytes. So we cannot safely 305c19800e8SDoug Rabson invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 306c19800e8SDoug Rabson to allow for a few compiler-allocated temporary stack slots. */ 307c19800e8SDoug Rabson # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 308c19800e8SDoug Rabson # endif 309c19800e8SDoug Rabson # else 310c19800e8SDoug Rabson # define YYSTACK_ALLOC YYMALLOC 311c19800e8SDoug Rabson # define YYSTACK_FREE YYFREE 312c19800e8SDoug Rabson # ifndef YYSTACK_ALLOC_MAXIMUM 313c19800e8SDoug Rabson # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 314c19800e8SDoug Rabson # endif 315c19800e8SDoug Rabson # if (defined __cplusplus && ! defined _STDLIB_H \ 316c19800e8SDoug Rabson && ! ((defined YYMALLOC || defined malloc) \ 317c19800e8SDoug Rabson && (defined YYFREE || defined free))) 318c19800e8SDoug Rabson # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 319c19800e8SDoug Rabson # ifndef _STDLIB_H 320c19800e8SDoug Rabson # define _STDLIB_H 1 321c19800e8SDoug Rabson # endif 322c19800e8SDoug Rabson # endif 323c19800e8SDoug Rabson # ifndef YYMALLOC 324c19800e8SDoug Rabson # define YYMALLOC malloc 325c19800e8SDoug Rabson # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 326c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 327c19800e8SDoug Rabson void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 328c19800e8SDoug Rabson # endif 329c19800e8SDoug Rabson # endif 330c19800e8SDoug Rabson # ifndef YYFREE 331c19800e8SDoug Rabson # define YYFREE free 332c19800e8SDoug Rabson # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 333c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 334c19800e8SDoug Rabson void free (void *); /* INFRINGES ON USER NAME SPACE */ 335c19800e8SDoug Rabson # endif 336c19800e8SDoug Rabson # endif 337c19800e8SDoug Rabson # endif 338c19800e8SDoug Rabson #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 339c19800e8SDoug Rabson 340c19800e8SDoug Rabson 341c19800e8SDoug Rabson #if (! defined yyoverflow \ 342c19800e8SDoug Rabson && (! defined __cplusplus \ 343c19800e8SDoug Rabson || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 344c19800e8SDoug Rabson 345c19800e8SDoug Rabson /* A type that is properly aligned for any stack member. */ 346c19800e8SDoug Rabson union yyalloc 347c19800e8SDoug Rabson { 348c19800e8SDoug Rabson yytype_int16 yyss; 349c19800e8SDoug Rabson YYSTYPE yyvs; 350c19800e8SDoug Rabson }; 351c19800e8SDoug Rabson 352c19800e8SDoug Rabson /* The size of the maximum gap between one aligned stack and the next. */ 353c19800e8SDoug Rabson # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 354c19800e8SDoug Rabson 355c19800e8SDoug Rabson /* The size of an array large to enough to hold all stacks, each with 356c19800e8SDoug Rabson N elements. */ 357c19800e8SDoug Rabson # define YYSTACK_BYTES(N) \ 358c19800e8SDoug Rabson ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 359c19800e8SDoug Rabson + YYSTACK_GAP_MAXIMUM) 360c19800e8SDoug Rabson 361c19800e8SDoug Rabson /* Copy COUNT objects from FROM to TO. The source and destination do 362c19800e8SDoug Rabson not overlap. */ 363c19800e8SDoug Rabson # ifndef YYCOPY 364c19800e8SDoug Rabson # if defined __GNUC__ && 1 < __GNUC__ 365c19800e8SDoug Rabson # define YYCOPY(To, From, Count) \ 366c19800e8SDoug Rabson __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 367c19800e8SDoug Rabson # else 368c19800e8SDoug Rabson # define YYCOPY(To, From, Count) \ 369c19800e8SDoug Rabson do \ 370c19800e8SDoug Rabson { \ 371c19800e8SDoug Rabson YYSIZE_T yyi; \ 372c19800e8SDoug Rabson for (yyi = 0; yyi < (Count); yyi++) \ 373c19800e8SDoug Rabson (To)[yyi] = (From)[yyi]; \ 374c19800e8SDoug Rabson } \ 375c19800e8SDoug Rabson while (YYID (0)) 376c19800e8SDoug Rabson # endif 377c19800e8SDoug Rabson # endif 378c19800e8SDoug Rabson 379c19800e8SDoug Rabson /* Relocate STACK from its old location to the new one. The 380c19800e8SDoug Rabson local variables YYSIZE and YYSTACKSIZE give the old and new number of 381c19800e8SDoug Rabson elements in the stack, and YYPTR gives the new location of the 382c19800e8SDoug Rabson stack. Advance YYPTR to a properly aligned location for the next 383c19800e8SDoug Rabson stack. */ 384c19800e8SDoug Rabson # define YYSTACK_RELOCATE(Stack) \ 385c19800e8SDoug Rabson do \ 386c19800e8SDoug Rabson { \ 387c19800e8SDoug Rabson YYSIZE_T yynewbytes; \ 388c19800e8SDoug Rabson YYCOPY (&yyptr->Stack, Stack, yysize); \ 389c19800e8SDoug Rabson Stack = &yyptr->Stack; \ 390c19800e8SDoug Rabson yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 391c19800e8SDoug Rabson yyptr += yynewbytes / sizeof (*yyptr); \ 392c19800e8SDoug Rabson } \ 393c19800e8SDoug Rabson while (YYID (0)) 394c19800e8SDoug Rabson 395c19800e8SDoug Rabson #endif 396c19800e8SDoug Rabson 397c19800e8SDoug Rabson /* YYFINAL -- State number of the termination state. */ 398c19800e8SDoug Rabson #define YYFINAL 9 399c19800e8SDoug Rabson /* YYLAST -- Last index in YYTABLE. */ 400c19800e8SDoug Rabson #define YYLAST 23 401c19800e8SDoug Rabson 402c19800e8SDoug Rabson /* YYNTOKENS -- Number of terminals. */ 403c19800e8SDoug Rabson #define YYNTOKENS 12 404c19800e8SDoug Rabson /* YYNNTS -- Number of nonterminals. */ 405c19800e8SDoug Rabson #define YYNNTS 7 406c19800e8SDoug Rabson /* YYNRULES -- Number of rules. */ 407c19800e8SDoug Rabson #define YYNRULES 15 408c19800e8SDoug Rabson /* YYNRULES -- Number of states. */ 409c19800e8SDoug Rabson #define YYNSTATES 24 410c19800e8SDoug Rabson 411c19800e8SDoug Rabson /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 412c19800e8SDoug Rabson #define YYUNDEFTOK 2 413c19800e8SDoug Rabson #define YYMAXUTOK 265 414c19800e8SDoug Rabson 415c19800e8SDoug Rabson #define YYTRANSLATE(YYX) \ 416c19800e8SDoug Rabson ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 417c19800e8SDoug Rabson 418c19800e8SDoug Rabson /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 419c19800e8SDoug Rabson static const yytype_uint8 yytranslate[] = 420c19800e8SDoug Rabson { 421c19800e8SDoug Rabson 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 422c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 423c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 424c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 425c19800e8SDoug Rabson 2, 2, 2, 2, 11, 2, 2, 2, 2, 2, 426c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 427c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 428c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 429c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 430c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 431c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 432c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 433c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 434c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 435c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 436c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 437c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 438c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 439c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 440c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 441c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 442c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 443c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 444c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 445c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 446c19800e8SDoug Rabson 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 447c19800e8SDoug Rabson 5, 6, 7, 8, 9, 10 448c19800e8SDoug Rabson }; 449c19800e8SDoug Rabson 450c19800e8SDoug Rabson #if YYDEBUG 451c19800e8SDoug Rabson /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 452c19800e8SDoug Rabson YYRHS. */ 453c19800e8SDoug Rabson static const yytype_uint8 yyprhs[] = 454c19800e8SDoug Rabson { 455c19800e8SDoug Rabson 0, 0, 3, 4, 7, 10, 12, 15, 18, 22, 456c19800e8SDoug Rabson 24, 27, 30, 33, 35, 40 457c19800e8SDoug Rabson }; 458c19800e8SDoug Rabson 459c19800e8SDoug Rabson /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 460c19800e8SDoug Rabson static const yytype_int8 yyrhs[] = 461c19800e8SDoug Rabson { 462c19800e8SDoug Rabson 13, 0, -1, -1, 14, 17, -1, 15, 16, -1, 463c19800e8SDoug Rabson 16, -1, 7, 9, -1, 3, 9, -1, 3, 9, 464c19800e8SDoug Rabson 9, -1, 18, -1, 17, 18, -1, 4, 10, -1, 465c19800e8SDoug Rabson 5, 9, -1, 5, -1, 6, 9, 11, 9, -1, 466c19800e8SDoug Rabson 8, -1 467c19800e8SDoug Rabson }; 468c19800e8SDoug Rabson 469c19800e8SDoug Rabson /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 470c19800e8SDoug Rabson static const yytype_uint8 yyrline[] = 471c19800e8SDoug Rabson { 472c19800e8SDoug Rabson 0, 64, 64, 65, 68, 69, 72, 78, 84, 93, 473c19800e8SDoug Rabson 94, 97, 101, 109, 116, 136 474c19800e8SDoug Rabson }; 475c19800e8SDoug Rabson #endif 476c19800e8SDoug Rabson 477c19800e8SDoug Rabson #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 478c19800e8SDoug Rabson /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 479c19800e8SDoug Rabson First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 480c19800e8SDoug Rabson static const char *const yytname[] = 481c19800e8SDoug Rabson { 482c19800e8SDoug Rabson "$end", "error", "$undefined", "ET", "INDEX", "PREFIX", "EC", "ID", 483c19800e8SDoug Rabson "END", "STRING", "NUMBER", "','", "$accept", "file", "header", "id", 484c19800e8SDoug Rabson "et", "statements", "statement", 0 485c19800e8SDoug Rabson }; 486c19800e8SDoug Rabson #endif 487c19800e8SDoug Rabson 488c19800e8SDoug Rabson # ifdef YYPRINT 489c19800e8SDoug Rabson /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 490c19800e8SDoug Rabson token YYLEX-NUM. */ 491c19800e8SDoug Rabson static const yytype_uint16 yytoknum[] = 492c19800e8SDoug Rabson { 493c19800e8SDoug Rabson 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 494c19800e8SDoug Rabson 265, 44 495c19800e8SDoug Rabson }; 496c19800e8SDoug Rabson # endif 497c19800e8SDoug Rabson 498c19800e8SDoug Rabson /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 499c19800e8SDoug Rabson static const yytype_uint8 yyr1[] = 500c19800e8SDoug Rabson { 501c19800e8SDoug Rabson 0, 12, 13, 13, 14, 14, 15, 16, 16, 17, 502c19800e8SDoug Rabson 17, 18, 18, 18, 18, 18 503c19800e8SDoug Rabson }; 504c19800e8SDoug Rabson 505c19800e8SDoug Rabson /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 506c19800e8SDoug Rabson static const yytype_uint8 yyr2[] = 507c19800e8SDoug Rabson { 508c19800e8SDoug Rabson 0, 2, 0, 2, 2, 1, 2, 2, 3, 1, 509c19800e8SDoug Rabson 2, 2, 2, 1, 4, 1 510c19800e8SDoug Rabson }; 511c19800e8SDoug Rabson 512c19800e8SDoug Rabson /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 513c19800e8SDoug Rabson STATE-NUM when YYTABLE doesn't specify something else to do. Zero 514c19800e8SDoug Rabson means the default is an error. */ 515c19800e8SDoug Rabson static const yytype_uint8 yydefact[] = 516c19800e8SDoug Rabson { 517c19800e8SDoug Rabson 2, 0, 0, 0, 0, 0, 5, 7, 6, 1, 518c19800e8SDoug Rabson 0, 13, 0, 15, 3, 9, 4, 8, 11, 12, 519c19800e8SDoug Rabson 0, 10, 0, 14 520c19800e8SDoug Rabson }; 521c19800e8SDoug Rabson 522c19800e8SDoug Rabson /* YYDEFGOTO[NTERM-NUM]. */ 523c19800e8SDoug Rabson static const yytype_int8 yydefgoto[] = 524c19800e8SDoug Rabson { 525c19800e8SDoug Rabson -1, 3, 4, 5, 6, 14, 15 526c19800e8SDoug Rabson }; 527c19800e8SDoug Rabson 528c19800e8SDoug Rabson /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 529c19800e8SDoug Rabson STATE-NUM. */ 530c19800e8SDoug Rabson #define YYPACT_NINF -5 531c19800e8SDoug Rabson static const yytype_int8 yypact[] = 532c19800e8SDoug Rabson { 533c19800e8SDoug Rabson 0, -3, -1, 5, -4, 6, -5, 1, -5, -5, 534c19800e8SDoug Rabson 2, 4, 7, -5, -4, -5, -5, -5, -5, -5, 535c19800e8SDoug Rabson 3, -5, 8, -5 536c19800e8SDoug Rabson }; 537c19800e8SDoug Rabson 538c19800e8SDoug Rabson /* YYPGOTO[NTERM-NUM]. */ 539c19800e8SDoug Rabson static const yytype_int8 yypgoto[] = 540c19800e8SDoug Rabson { 541c19800e8SDoug Rabson -5, -5, -5, -5, 10, -5, 9 542c19800e8SDoug Rabson }; 543c19800e8SDoug Rabson 544c19800e8SDoug Rabson /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 545c19800e8SDoug Rabson positive, shift that token. If negative, reduce the rule which 546c19800e8SDoug Rabson number is the opposite. If zero, do what YYDEFACT says. 547c19800e8SDoug Rabson If YYTABLE_NINF, syntax error. */ 548c19800e8SDoug Rabson #define YYTABLE_NINF -1 549c19800e8SDoug Rabson static const yytype_uint8 yytable[] = 550c19800e8SDoug Rabson { 551c19800e8SDoug Rabson 10, 11, 12, 1, 13, 9, 7, 2, 8, 1, 552c19800e8SDoug Rabson 17, 0, 18, 19, 22, 16, 20, 23, 0, 0, 553c19800e8SDoug Rabson 0, 0, 0, 21 554c19800e8SDoug Rabson }; 555c19800e8SDoug Rabson 556c19800e8SDoug Rabson static const yytype_int8 yycheck[] = 557c19800e8SDoug Rabson { 558c19800e8SDoug Rabson 4, 5, 6, 3, 8, 0, 9, 7, 9, 3, 559c19800e8SDoug Rabson 9, -1, 10, 9, 11, 5, 9, 9, -1, -1, 560c19800e8SDoug Rabson -1, -1, -1, 14 561c19800e8SDoug Rabson }; 562c19800e8SDoug Rabson 563c19800e8SDoug Rabson /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 564c19800e8SDoug Rabson symbol of state STATE-NUM. */ 565c19800e8SDoug Rabson static const yytype_uint8 yystos[] = 566c19800e8SDoug Rabson { 567c19800e8SDoug Rabson 0, 3, 7, 13, 14, 15, 16, 9, 9, 0, 568c19800e8SDoug Rabson 4, 5, 6, 8, 17, 18, 16, 9, 10, 9, 569c19800e8SDoug Rabson 9, 18, 11, 9 570c19800e8SDoug Rabson }; 571c19800e8SDoug Rabson 572c19800e8SDoug Rabson #define yyerrok (yyerrstatus = 0) 573c19800e8SDoug Rabson #define yyclearin (yychar = YYEMPTY) 574c19800e8SDoug Rabson #define YYEMPTY (-2) 575c19800e8SDoug Rabson #define YYEOF 0 576c19800e8SDoug Rabson 577c19800e8SDoug Rabson #define YYACCEPT goto yyacceptlab 578c19800e8SDoug Rabson #define YYABORT goto yyabortlab 579c19800e8SDoug Rabson #define YYERROR goto yyerrorlab 580c19800e8SDoug Rabson 581c19800e8SDoug Rabson 582c19800e8SDoug Rabson /* Like YYERROR except do call yyerror. This remains here temporarily 583c19800e8SDoug Rabson to ease the transition to the new meaning of YYERROR, for GCC. 584c19800e8SDoug Rabson Once GCC version 2 has supplanted version 1, this can go. */ 585c19800e8SDoug Rabson 586c19800e8SDoug Rabson #define YYFAIL goto yyerrlab 587c19800e8SDoug Rabson 588c19800e8SDoug Rabson #define YYRECOVERING() (!!yyerrstatus) 589c19800e8SDoug Rabson 590c19800e8SDoug Rabson #define YYBACKUP(Token, Value) \ 591c19800e8SDoug Rabson do \ 592c19800e8SDoug Rabson if (yychar == YYEMPTY && yylen == 1) \ 593c19800e8SDoug Rabson { \ 594c19800e8SDoug Rabson yychar = (Token); \ 595c19800e8SDoug Rabson yylval = (Value); \ 596c19800e8SDoug Rabson yytoken = YYTRANSLATE (yychar); \ 597c19800e8SDoug Rabson YYPOPSTACK (1); \ 598c19800e8SDoug Rabson goto yybackup; \ 599c19800e8SDoug Rabson } \ 600c19800e8SDoug Rabson else \ 601c19800e8SDoug Rabson { \ 602c19800e8SDoug Rabson yyerror (YY_("syntax error: cannot back up")); \ 603c19800e8SDoug Rabson YYERROR; \ 604c19800e8SDoug Rabson } \ 605c19800e8SDoug Rabson while (YYID (0)) 606c19800e8SDoug Rabson 607c19800e8SDoug Rabson 608c19800e8SDoug Rabson #define YYTERROR 1 609c19800e8SDoug Rabson #define YYERRCODE 256 610c19800e8SDoug Rabson 611c19800e8SDoug Rabson 612c19800e8SDoug Rabson /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 613c19800e8SDoug Rabson If N is 0, then set CURRENT to the empty location which ends 614c19800e8SDoug Rabson the previous symbol: RHS[0] (always defined). */ 615c19800e8SDoug Rabson 616c19800e8SDoug Rabson #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 617c19800e8SDoug Rabson #ifndef YYLLOC_DEFAULT 618c19800e8SDoug Rabson # define YYLLOC_DEFAULT(Current, Rhs, N) \ 619c19800e8SDoug Rabson do \ 620c19800e8SDoug Rabson if (YYID (N)) \ 621c19800e8SDoug Rabson { \ 622c19800e8SDoug Rabson (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 623c19800e8SDoug Rabson (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 624c19800e8SDoug Rabson (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 625c19800e8SDoug Rabson (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 626c19800e8SDoug Rabson } \ 627c19800e8SDoug Rabson else \ 628c19800e8SDoug Rabson { \ 629c19800e8SDoug Rabson (Current).first_line = (Current).last_line = \ 630c19800e8SDoug Rabson YYRHSLOC (Rhs, 0).last_line; \ 631c19800e8SDoug Rabson (Current).first_column = (Current).last_column = \ 632c19800e8SDoug Rabson YYRHSLOC (Rhs, 0).last_column; \ 633c19800e8SDoug Rabson } \ 634c19800e8SDoug Rabson while (YYID (0)) 635c19800e8SDoug Rabson #endif 636c19800e8SDoug Rabson 637c19800e8SDoug Rabson 638c19800e8SDoug Rabson /* YY_LOCATION_PRINT -- Print the location on the stream. 639c19800e8SDoug Rabson This macro was not mandated originally: define only if we know 640c19800e8SDoug Rabson we won't break user code: when these are the locations we know. */ 641c19800e8SDoug Rabson 642c19800e8SDoug Rabson #ifndef YY_LOCATION_PRINT 643c19800e8SDoug Rabson # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 644c19800e8SDoug Rabson # define YY_LOCATION_PRINT(File, Loc) \ 645c19800e8SDoug Rabson fprintf (File, "%d.%d-%d.%d", \ 646c19800e8SDoug Rabson (Loc).first_line, (Loc).first_column, \ 647c19800e8SDoug Rabson (Loc).last_line, (Loc).last_column) 648c19800e8SDoug Rabson # else 649c19800e8SDoug Rabson # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 650c19800e8SDoug Rabson # endif 651c19800e8SDoug Rabson #endif 652c19800e8SDoug Rabson 653c19800e8SDoug Rabson 654c19800e8SDoug Rabson /* YYLEX -- calling `yylex' with the right arguments. */ 655c19800e8SDoug Rabson 656c19800e8SDoug Rabson #ifdef YYLEX_PARAM 657c19800e8SDoug Rabson # define YYLEX yylex (YYLEX_PARAM) 658c19800e8SDoug Rabson #else 659c19800e8SDoug Rabson # define YYLEX yylex () 660c19800e8SDoug Rabson #endif 661c19800e8SDoug Rabson 662c19800e8SDoug Rabson /* Enable debugging if requested. */ 663c19800e8SDoug Rabson #if YYDEBUG 664c19800e8SDoug Rabson 665c19800e8SDoug Rabson # ifndef YYFPRINTF 666c19800e8SDoug Rabson # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 667c19800e8SDoug Rabson # define YYFPRINTF fprintf 668c19800e8SDoug Rabson # endif 669c19800e8SDoug Rabson 670c19800e8SDoug Rabson # define YYDPRINTF(Args) \ 671c19800e8SDoug Rabson do { \ 672c19800e8SDoug Rabson if (yydebug) \ 673c19800e8SDoug Rabson YYFPRINTF Args; \ 674c19800e8SDoug Rabson } while (YYID (0)) 675c19800e8SDoug Rabson 676c19800e8SDoug Rabson # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 677c19800e8SDoug Rabson do { \ 678c19800e8SDoug Rabson if (yydebug) \ 679c19800e8SDoug Rabson { \ 680c19800e8SDoug Rabson YYFPRINTF (stderr, "%s ", Title); \ 681c19800e8SDoug Rabson yy_symbol_print (stderr, \ 682c19800e8SDoug Rabson Type, Value); \ 683c19800e8SDoug Rabson YYFPRINTF (stderr, "\n"); \ 684c19800e8SDoug Rabson } \ 685c19800e8SDoug Rabson } while (YYID (0)) 686c19800e8SDoug Rabson 687c19800e8SDoug Rabson 688c19800e8SDoug Rabson /*--------------------------------. 689c19800e8SDoug Rabson | Print this symbol on YYOUTPUT. | 690c19800e8SDoug Rabson `--------------------------------*/ 691c19800e8SDoug Rabson 692c19800e8SDoug Rabson /*ARGSUSED*/ 693c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 694c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 695c19800e8SDoug Rabson static void 696c19800e8SDoug Rabson yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 697c19800e8SDoug Rabson #else 698c19800e8SDoug Rabson static void 699c19800e8SDoug Rabson yy_symbol_value_print (yyoutput, yytype, yyvaluep) 700c19800e8SDoug Rabson FILE *yyoutput; 701c19800e8SDoug Rabson int yytype; 702c19800e8SDoug Rabson YYSTYPE const * const yyvaluep; 703c19800e8SDoug Rabson #endif 704c19800e8SDoug Rabson { 705c19800e8SDoug Rabson if (!yyvaluep) 706c19800e8SDoug Rabson return; 707c19800e8SDoug Rabson # ifdef YYPRINT 708c19800e8SDoug Rabson if (yytype < YYNTOKENS) 709c19800e8SDoug Rabson YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 710c19800e8SDoug Rabson # else 711c19800e8SDoug Rabson YYUSE (yyoutput); 712c19800e8SDoug Rabson # endif 713c19800e8SDoug Rabson switch (yytype) 714c19800e8SDoug Rabson { 715c19800e8SDoug Rabson default: 716c19800e8SDoug Rabson break; 717c19800e8SDoug Rabson } 718c19800e8SDoug Rabson } 719c19800e8SDoug Rabson 720c19800e8SDoug Rabson 721c19800e8SDoug Rabson /*--------------------------------. 722c19800e8SDoug Rabson | Print this symbol on YYOUTPUT. | 723c19800e8SDoug Rabson `--------------------------------*/ 724c19800e8SDoug Rabson 725c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 726c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 727c19800e8SDoug Rabson static void 728c19800e8SDoug Rabson yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 729c19800e8SDoug Rabson #else 730c19800e8SDoug Rabson static void 731c19800e8SDoug Rabson yy_symbol_print (yyoutput, yytype, yyvaluep) 732c19800e8SDoug Rabson FILE *yyoutput; 733c19800e8SDoug Rabson int yytype; 734c19800e8SDoug Rabson YYSTYPE const * const yyvaluep; 735c19800e8SDoug Rabson #endif 736c19800e8SDoug Rabson { 737c19800e8SDoug Rabson if (yytype < YYNTOKENS) 738c19800e8SDoug Rabson YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 739c19800e8SDoug Rabson else 740c19800e8SDoug Rabson YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 741c19800e8SDoug Rabson 742c19800e8SDoug Rabson yy_symbol_value_print (yyoutput, yytype, yyvaluep); 743c19800e8SDoug Rabson YYFPRINTF (yyoutput, ")"); 744c19800e8SDoug Rabson } 745c19800e8SDoug Rabson 746c19800e8SDoug Rabson /*------------------------------------------------------------------. 747c19800e8SDoug Rabson | yy_stack_print -- Print the state stack from its BOTTOM up to its | 748c19800e8SDoug Rabson | TOP (included). | 749c19800e8SDoug Rabson `------------------------------------------------------------------*/ 750c19800e8SDoug Rabson 751c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 752c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 753c19800e8SDoug Rabson static void 754c19800e8SDoug Rabson yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 755c19800e8SDoug Rabson #else 756c19800e8SDoug Rabson static void 757c19800e8SDoug Rabson yy_stack_print (bottom, top) 758c19800e8SDoug Rabson yytype_int16 *bottom; 759c19800e8SDoug Rabson yytype_int16 *top; 760c19800e8SDoug Rabson #endif 761c19800e8SDoug Rabson { 762c19800e8SDoug Rabson YYFPRINTF (stderr, "Stack now"); 763c19800e8SDoug Rabson for (; bottom <= top; ++bottom) 764c19800e8SDoug Rabson YYFPRINTF (stderr, " %d", *bottom); 765c19800e8SDoug Rabson YYFPRINTF (stderr, "\n"); 766c19800e8SDoug Rabson } 767c19800e8SDoug Rabson 768c19800e8SDoug Rabson # define YY_STACK_PRINT(Bottom, Top) \ 769c19800e8SDoug Rabson do { \ 770c19800e8SDoug Rabson if (yydebug) \ 771c19800e8SDoug Rabson yy_stack_print ((Bottom), (Top)); \ 772c19800e8SDoug Rabson } while (YYID (0)) 773c19800e8SDoug Rabson 774c19800e8SDoug Rabson 775c19800e8SDoug Rabson /*------------------------------------------------. 776c19800e8SDoug Rabson | Report that the YYRULE is going to be reduced. | 777c19800e8SDoug Rabson `------------------------------------------------*/ 778c19800e8SDoug Rabson 779c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 780c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 781c19800e8SDoug Rabson static void 782c19800e8SDoug Rabson yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 783c19800e8SDoug Rabson #else 784c19800e8SDoug Rabson static void 785c19800e8SDoug Rabson yy_reduce_print (yyvsp, yyrule) 786c19800e8SDoug Rabson YYSTYPE *yyvsp; 787c19800e8SDoug Rabson int yyrule; 788c19800e8SDoug Rabson #endif 789c19800e8SDoug Rabson { 790c19800e8SDoug Rabson int yynrhs = yyr2[yyrule]; 791c19800e8SDoug Rabson int yyi; 792c19800e8SDoug Rabson unsigned long int yylno = yyrline[yyrule]; 793c19800e8SDoug Rabson YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 794c19800e8SDoug Rabson yyrule - 1, yylno); 795c19800e8SDoug Rabson /* The symbols being reduced. */ 796c19800e8SDoug Rabson for (yyi = 0; yyi < yynrhs; yyi++) 797c19800e8SDoug Rabson { 798c19800e8SDoug Rabson fprintf (stderr, " $%d = ", yyi + 1); 799c19800e8SDoug Rabson yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 800c19800e8SDoug Rabson &(yyvsp[(yyi + 1) - (yynrhs)]) 801c19800e8SDoug Rabson ); 802c19800e8SDoug Rabson fprintf (stderr, "\n"); 803c19800e8SDoug Rabson } 804c19800e8SDoug Rabson } 805c19800e8SDoug Rabson 806c19800e8SDoug Rabson # define YY_REDUCE_PRINT(Rule) \ 807c19800e8SDoug Rabson do { \ 808c19800e8SDoug Rabson if (yydebug) \ 809c19800e8SDoug Rabson yy_reduce_print (yyvsp, Rule); \ 810c19800e8SDoug Rabson } while (YYID (0)) 811c19800e8SDoug Rabson 812c19800e8SDoug Rabson /* Nonzero means print parse trace. It is left uninitialized so that 813c19800e8SDoug Rabson multiple parsers can coexist. */ 814c19800e8SDoug Rabson int yydebug; 815c19800e8SDoug Rabson #else /* !YYDEBUG */ 816c19800e8SDoug Rabson # define YYDPRINTF(Args) 817c19800e8SDoug Rabson # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 818c19800e8SDoug Rabson # define YY_STACK_PRINT(Bottom, Top) 819c19800e8SDoug Rabson # define YY_REDUCE_PRINT(Rule) 820c19800e8SDoug Rabson #endif /* !YYDEBUG */ 821c19800e8SDoug Rabson 822c19800e8SDoug Rabson 823c19800e8SDoug Rabson /* YYINITDEPTH -- initial size of the parser's stacks. */ 824c19800e8SDoug Rabson #ifndef YYINITDEPTH 825c19800e8SDoug Rabson # define YYINITDEPTH 200 826c19800e8SDoug Rabson #endif 827c19800e8SDoug Rabson 828c19800e8SDoug Rabson /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 829c19800e8SDoug Rabson if the built-in stack extension method is used). 830c19800e8SDoug Rabson 831c19800e8SDoug Rabson Do not make this value too large; the results are undefined if 832c19800e8SDoug Rabson YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 833c19800e8SDoug Rabson evaluated with infinite-precision integer arithmetic. */ 834c19800e8SDoug Rabson 835c19800e8SDoug Rabson #ifndef YYMAXDEPTH 836c19800e8SDoug Rabson # define YYMAXDEPTH 10000 837c19800e8SDoug Rabson #endif 838c19800e8SDoug Rabson 839c19800e8SDoug Rabson 840c19800e8SDoug Rabson 841c19800e8SDoug Rabson #if YYERROR_VERBOSE 842c19800e8SDoug Rabson 843c19800e8SDoug Rabson # ifndef yystrlen 844c19800e8SDoug Rabson # if defined __GLIBC__ && defined _STRING_H 845c19800e8SDoug Rabson # define yystrlen strlen 846c19800e8SDoug Rabson # else 847c19800e8SDoug Rabson /* Return the length of YYSTR. */ 848c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 849c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 850c19800e8SDoug Rabson static YYSIZE_T 851c19800e8SDoug Rabson yystrlen (const char *yystr) 852c19800e8SDoug Rabson #else 853c19800e8SDoug Rabson static YYSIZE_T 854c19800e8SDoug Rabson yystrlen (yystr) 855c19800e8SDoug Rabson const char *yystr; 856c19800e8SDoug Rabson #endif 857c19800e8SDoug Rabson { 858c19800e8SDoug Rabson YYSIZE_T yylen; 859c19800e8SDoug Rabson for (yylen = 0; yystr[yylen]; yylen++) 860c19800e8SDoug Rabson continue; 861c19800e8SDoug Rabson return yylen; 862c19800e8SDoug Rabson } 863c19800e8SDoug Rabson # endif 864c19800e8SDoug Rabson # endif 865c19800e8SDoug Rabson 866c19800e8SDoug Rabson # ifndef yystpcpy 867c19800e8SDoug Rabson # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 868c19800e8SDoug Rabson # define yystpcpy stpcpy 869c19800e8SDoug Rabson # else 870c19800e8SDoug Rabson /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 871c19800e8SDoug Rabson YYDEST. */ 872c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 873c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 874c19800e8SDoug Rabson static char * 875c19800e8SDoug Rabson yystpcpy (char *yydest, const char *yysrc) 876c19800e8SDoug Rabson #else 877c19800e8SDoug Rabson static char * 878c19800e8SDoug Rabson yystpcpy (yydest, yysrc) 879c19800e8SDoug Rabson char *yydest; 880c19800e8SDoug Rabson const char *yysrc; 881c19800e8SDoug Rabson #endif 882c19800e8SDoug Rabson { 883c19800e8SDoug Rabson char *yyd = yydest; 884c19800e8SDoug Rabson const char *yys = yysrc; 885c19800e8SDoug Rabson 886c19800e8SDoug Rabson while ((*yyd++ = *yys++) != '\0') 887c19800e8SDoug Rabson continue; 888c19800e8SDoug Rabson 889c19800e8SDoug Rabson return yyd - 1; 890c19800e8SDoug Rabson } 891c19800e8SDoug Rabson # endif 892c19800e8SDoug Rabson # endif 893c19800e8SDoug Rabson 894c19800e8SDoug Rabson # ifndef yytnamerr 895c19800e8SDoug Rabson /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 896c19800e8SDoug Rabson quotes and backslashes, so that it's suitable for yyerror. The 897c19800e8SDoug Rabson heuristic is that double-quoting is unnecessary unless the string 898c19800e8SDoug Rabson contains an apostrophe, a comma, or backslash (other than 899c19800e8SDoug Rabson backslash-backslash). YYSTR is taken from yytname. If YYRES is 900c19800e8SDoug Rabson null, do not copy; instead, return the length of what the result 901c19800e8SDoug Rabson would have been. */ 902c19800e8SDoug Rabson static YYSIZE_T 903c19800e8SDoug Rabson yytnamerr (char *yyres, const char *yystr) 904c19800e8SDoug Rabson { 905c19800e8SDoug Rabson if (*yystr == '"') 906c19800e8SDoug Rabson { 907c19800e8SDoug Rabson YYSIZE_T yyn = 0; 908c19800e8SDoug Rabson char const *yyp = yystr; 909c19800e8SDoug Rabson 910c19800e8SDoug Rabson for (;;) 911c19800e8SDoug Rabson switch (*++yyp) 912c19800e8SDoug Rabson { 913c19800e8SDoug Rabson case '\'': 914c19800e8SDoug Rabson case ',': 915c19800e8SDoug Rabson goto do_not_strip_quotes; 916c19800e8SDoug Rabson 917c19800e8SDoug Rabson case '\\': 918c19800e8SDoug Rabson if (*++yyp != '\\') 919c19800e8SDoug Rabson goto do_not_strip_quotes; 920c19800e8SDoug Rabson /* Fall through. */ 921c19800e8SDoug Rabson default: 922c19800e8SDoug Rabson if (yyres) 923c19800e8SDoug Rabson yyres[yyn] = *yyp; 924c19800e8SDoug Rabson yyn++; 925c19800e8SDoug Rabson break; 926c19800e8SDoug Rabson 927c19800e8SDoug Rabson case '"': 928c19800e8SDoug Rabson if (yyres) 929c19800e8SDoug Rabson yyres[yyn] = '\0'; 930c19800e8SDoug Rabson return yyn; 931c19800e8SDoug Rabson } 932c19800e8SDoug Rabson do_not_strip_quotes: ; 933c19800e8SDoug Rabson } 934c19800e8SDoug Rabson 935c19800e8SDoug Rabson if (! yyres) 936c19800e8SDoug Rabson return yystrlen (yystr); 937c19800e8SDoug Rabson 938c19800e8SDoug Rabson return yystpcpy (yyres, yystr) - yyres; 939c19800e8SDoug Rabson } 940c19800e8SDoug Rabson # endif 941c19800e8SDoug Rabson 942c19800e8SDoug Rabson /* Copy into YYRESULT an error message about the unexpected token 943c19800e8SDoug Rabson YYCHAR while in state YYSTATE. Return the number of bytes copied, 944c19800e8SDoug Rabson including the terminating null byte. If YYRESULT is null, do not 945c19800e8SDoug Rabson copy anything; just return the number of bytes that would be 946c19800e8SDoug Rabson copied. As a special case, return 0 if an ordinary "syntax error" 947c19800e8SDoug Rabson message will do. Return YYSIZE_MAXIMUM if overflow occurs during 948c19800e8SDoug Rabson size calculation. */ 949c19800e8SDoug Rabson static YYSIZE_T 950c19800e8SDoug Rabson yysyntax_error (char *yyresult, int yystate, int yychar) 951c19800e8SDoug Rabson { 952c19800e8SDoug Rabson int yyn = yypact[yystate]; 953c19800e8SDoug Rabson 954c19800e8SDoug Rabson if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 955c19800e8SDoug Rabson return 0; 956c19800e8SDoug Rabson else 957c19800e8SDoug Rabson { 958c19800e8SDoug Rabson int yytype = YYTRANSLATE (yychar); 959c19800e8SDoug Rabson YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 960c19800e8SDoug Rabson YYSIZE_T yysize = yysize0; 961c19800e8SDoug Rabson YYSIZE_T yysize1; 962c19800e8SDoug Rabson int yysize_overflow = 0; 963c19800e8SDoug Rabson enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 964c19800e8SDoug Rabson char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 965c19800e8SDoug Rabson int yyx; 966c19800e8SDoug Rabson 967c19800e8SDoug Rabson # if 0 968c19800e8SDoug Rabson /* This is so xgettext sees the translatable formats that are 969c19800e8SDoug Rabson constructed on the fly. */ 970c19800e8SDoug Rabson YY_("syntax error, unexpected %s"); 971c19800e8SDoug Rabson YY_("syntax error, unexpected %s, expecting %s"); 972c19800e8SDoug Rabson YY_("syntax error, unexpected %s, expecting %s or %s"); 973c19800e8SDoug Rabson YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 974c19800e8SDoug Rabson YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 975c19800e8SDoug Rabson # endif 976c19800e8SDoug Rabson char *yyfmt; 977c19800e8SDoug Rabson char const *yyf; 978c19800e8SDoug Rabson static char const yyunexpected[] = "syntax error, unexpected %s"; 979c19800e8SDoug Rabson static char const yyexpecting[] = ", expecting %s"; 980c19800e8SDoug Rabson static char const yyor[] = " or %s"; 981c19800e8SDoug Rabson char yyformat[sizeof yyunexpected 982c19800e8SDoug Rabson + sizeof yyexpecting - 1 983c19800e8SDoug Rabson + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 984c19800e8SDoug Rabson * (sizeof yyor - 1))]; 985c19800e8SDoug Rabson char const *yyprefix = yyexpecting; 986c19800e8SDoug Rabson 987c19800e8SDoug Rabson /* Start YYX at -YYN if negative to avoid negative indexes in 988c19800e8SDoug Rabson YYCHECK. */ 989c19800e8SDoug Rabson int yyxbegin = yyn < 0 ? -yyn : 0; 990c19800e8SDoug Rabson 991c19800e8SDoug Rabson /* Stay within bounds of both yycheck and yytname. */ 992c19800e8SDoug Rabson int yychecklim = YYLAST - yyn + 1; 993c19800e8SDoug Rabson int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 994c19800e8SDoug Rabson int yycount = 1; 995c19800e8SDoug Rabson 996c19800e8SDoug Rabson yyarg[0] = yytname[yytype]; 997c19800e8SDoug Rabson yyfmt = yystpcpy (yyformat, yyunexpected); 998c19800e8SDoug Rabson 999c19800e8SDoug Rabson for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1000c19800e8SDoug Rabson if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1001c19800e8SDoug Rabson { 1002c19800e8SDoug Rabson if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1003c19800e8SDoug Rabson { 1004c19800e8SDoug Rabson yycount = 1; 1005c19800e8SDoug Rabson yysize = yysize0; 1006c19800e8SDoug Rabson yyformat[sizeof yyunexpected - 1] = '\0'; 1007c19800e8SDoug Rabson break; 1008c19800e8SDoug Rabson } 1009c19800e8SDoug Rabson yyarg[yycount++] = yytname[yyx]; 1010c19800e8SDoug Rabson yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1011c19800e8SDoug Rabson yysize_overflow |= (yysize1 < yysize); 1012c19800e8SDoug Rabson yysize = yysize1; 1013c19800e8SDoug Rabson yyfmt = yystpcpy (yyfmt, yyprefix); 1014c19800e8SDoug Rabson yyprefix = yyor; 1015c19800e8SDoug Rabson } 1016c19800e8SDoug Rabson 1017c19800e8SDoug Rabson yyf = YY_(yyformat); 1018c19800e8SDoug Rabson yysize1 = yysize + yystrlen (yyf); 1019c19800e8SDoug Rabson yysize_overflow |= (yysize1 < yysize); 1020c19800e8SDoug Rabson yysize = yysize1; 1021c19800e8SDoug Rabson 1022c19800e8SDoug Rabson if (yysize_overflow) 1023c19800e8SDoug Rabson return YYSIZE_MAXIMUM; 1024c19800e8SDoug Rabson 1025c19800e8SDoug Rabson if (yyresult) 1026c19800e8SDoug Rabson { 1027c19800e8SDoug Rabson /* Avoid sprintf, as that infringes on the user's name space. 1028c19800e8SDoug Rabson Don't have undefined behavior even if the translation 1029c19800e8SDoug Rabson produced a string with the wrong number of "%s"s. */ 1030c19800e8SDoug Rabson char *yyp = yyresult; 1031c19800e8SDoug Rabson int yyi = 0; 1032c19800e8SDoug Rabson while ((*yyp = *yyf) != '\0') 1033c19800e8SDoug Rabson { 1034c19800e8SDoug Rabson if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1035c19800e8SDoug Rabson { 1036c19800e8SDoug Rabson yyp += yytnamerr (yyp, yyarg[yyi++]); 1037c19800e8SDoug Rabson yyf += 2; 1038c19800e8SDoug Rabson } 1039c19800e8SDoug Rabson else 1040c19800e8SDoug Rabson { 1041c19800e8SDoug Rabson yyp++; 1042c19800e8SDoug Rabson yyf++; 1043c19800e8SDoug Rabson } 1044c19800e8SDoug Rabson } 1045c19800e8SDoug Rabson } 1046c19800e8SDoug Rabson return yysize; 1047c19800e8SDoug Rabson } 1048c19800e8SDoug Rabson } 1049c19800e8SDoug Rabson #endif /* YYERROR_VERBOSE */ 1050c19800e8SDoug Rabson 1051c19800e8SDoug Rabson 1052c19800e8SDoug Rabson /*-----------------------------------------------. 1053c19800e8SDoug Rabson | Release the memory associated to this symbol. | 1054c19800e8SDoug Rabson `-----------------------------------------------*/ 1055c19800e8SDoug Rabson 1056c19800e8SDoug Rabson /*ARGSUSED*/ 1057c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 1058c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 1059c19800e8SDoug Rabson static void 1060c19800e8SDoug Rabson yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 1061c19800e8SDoug Rabson #else 1062c19800e8SDoug Rabson static void 1063c19800e8SDoug Rabson yydestruct (yymsg, yytype, yyvaluep) 1064c19800e8SDoug Rabson const char *yymsg; 1065c19800e8SDoug Rabson int yytype; 1066c19800e8SDoug Rabson YYSTYPE *yyvaluep; 1067c19800e8SDoug Rabson #endif 1068c19800e8SDoug Rabson { 1069c19800e8SDoug Rabson YYUSE (yyvaluep); 1070c19800e8SDoug Rabson 1071c19800e8SDoug Rabson if (!yymsg) 1072c19800e8SDoug Rabson yymsg = "Deleting"; 1073c19800e8SDoug Rabson YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1074c19800e8SDoug Rabson 1075c19800e8SDoug Rabson switch (yytype) 1076c19800e8SDoug Rabson { 1077c19800e8SDoug Rabson 1078c19800e8SDoug Rabson default: 1079c19800e8SDoug Rabson break; 1080c19800e8SDoug Rabson } 1081c19800e8SDoug Rabson } 1082c19800e8SDoug Rabson 1083c19800e8SDoug Rabson 1084c19800e8SDoug Rabson /* Prevent warnings from -Wmissing-prototypes. */ 1085c19800e8SDoug Rabson 1086c19800e8SDoug Rabson #ifdef YYPARSE_PARAM 1087c19800e8SDoug Rabson #if defined __STDC__ || defined __cplusplus 1088c19800e8SDoug Rabson int yyparse (void *YYPARSE_PARAM); 1089c19800e8SDoug Rabson #else 1090c19800e8SDoug Rabson int yyparse (); 1091c19800e8SDoug Rabson #endif 1092c19800e8SDoug Rabson #else /* ! YYPARSE_PARAM */ 1093c19800e8SDoug Rabson #if defined __STDC__ || defined __cplusplus 1094c19800e8SDoug Rabson int yyparse (void); 1095c19800e8SDoug Rabson #else 1096c19800e8SDoug Rabson int yyparse (); 1097c19800e8SDoug Rabson #endif 1098c19800e8SDoug Rabson #endif /* ! YYPARSE_PARAM */ 1099c19800e8SDoug Rabson 1100c19800e8SDoug Rabson 1101c19800e8SDoug Rabson 1102c19800e8SDoug Rabson /* The look-ahead symbol. */ 1103c19800e8SDoug Rabson int yychar; 1104c19800e8SDoug Rabson 1105c19800e8SDoug Rabson /* The semantic value of the look-ahead symbol. */ 1106c19800e8SDoug Rabson YYSTYPE yylval; 1107c19800e8SDoug Rabson 1108c19800e8SDoug Rabson /* Number of syntax errors so far. */ 1109c19800e8SDoug Rabson int yynerrs; 1110c19800e8SDoug Rabson 1111c19800e8SDoug Rabson 1112c19800e8SDoug Rabson 1113c19800e8SDoug Rabson /*----------. 1114c19800e8SDoug Rabson | yyparse. | 1115c19800e8SDoug Rabson `----------*/ 1116c19800e8SDoug Rabson 1117c19800e8SDoug Rabson #ifdef YYPARSE_PARAM 1118c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 1119c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 1120c19800e8SDoug Rabson int 1121c19800e8SDoug Rabson yyparse (void *YYPARSE_PARAM) 1122c19800e8SDoug Rabson #else 1123c19800e8SDoug Rabson int 1124c19800e8SDoug Rabson yyparse (YYPARSE_PARAM) 1125c19800e8SDoug Rabson void *YYPARSE_PARAM; 1126c19800e8SDoug Rabson #endif 1127c19800e8SDoug Rabson #else /* ! YYPARSE_PARAM */ 1128c19800e8SDoug Rabson #if (defined __STDC__ || defined __C99__FUNC__ \ 1129c19800e8SDoug Rabson || defined __cplusplus || defined _MSC_VER) 1130c19800e8SDoug Rabson int 1131c19800e8SDoug Rabson yyparse (void) 1132c19800e8SDoug Rabson #else 1133c19800e8SDoug Rabson int 1134c19800e8SDoug Rabson yyparse () 1135c19800e8SDoug Rabson 1136c19800e8SDoug Rabson #endif 1137c19800e8SDoug Rabson #endif 1138c19800e8SDoug Rabson { 1139c19800e8SDoug Rabson 1140c19800e8SDoug Rabson int yystate; 1141c19800e8SDoug Rabson int yyn; 1142c19800e8SDoug Rabson int yyresult; 1143c19800e8SDoug Rabson /* Number of tokens to shift before error messages enabled. */ 1144c19800e8SDoug Rabson int yyerrstatus; 1145c19800e8SDoug Rabson /* Look-ahead token as an internal (translated) token number. */ 1146c19800e8SDoug Rabson int yytoken = 0; 1147c19800e8SDoug Rabson #if YYERROR_VERBOSE 1148c19800e8SDoug Rabson /* Buffer for error messages, and its allocated size. */ 1149c19800e8SDoug Rabson char yymsgbuf[128]; 1150c19800e8SDoug Rabson char *yymsg = yymsgbuf; 1151c19800e8SDoug Rabson YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1152c19800e8SDoug Rabson #endif 1153c19800e8SDoug Rabson 1154c19800e8SDoug Rabson /* Three stacks and their tools: 1155c19800e8SDoug Rabson `yyss': related to states, 1156c19800e8SDoug Rabson `yyvs': related to semantic values, 1157c19800e8SDoug Rabson `yyls': related to locations. 1158c19800e8SDoug Rabson 1159c19800e8SDoug Rabson Refer to the stacks thru separate pointers, to allow yyoverflow 1160c19800e8SDoug Rabson to reallocate them elsewhere. */ 1161c19800e8SDoug Rabson 1162c19800e8SDoug Rabson /* The state stack. */ 1163c19800e8SDoug Rabson yytype_int16 yyssa[YYINITDEPTH]; 1164c19800e8SDoug Rabson yytype_int16 *yyss = yyssa; 1165c19800e8SDoug Rabson yytype_int16 *yyssp; 1166c19800e8SDoug Rabson 1167c19800e8SDoug Rabson /* The semantic value stack. */ 1168c19800e8SDoug Rabson YYSTYPE yyvsa[YYINITDEPTH]; 1169c19800e8SDoug Rabson YYSTYPE *yyvs = yyvsa; 1170c19800e8SDoug Rabson YYSTYPE *yyvsp; 1171c19800e8SDoug Rabson 1172c19800e8SDoug Rabson 1173c19800e8SDoug Rabson 1174c19800e8SDoug Rabson #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 1175c19800e8SDoug Rabson 1176c19800e8SDoug Rabson YYSIZE_T yystacksize = YYINITDEPTH; 1177c19800e8SDoug Rabson 1178c19800e8SDoug Rabson /* The variables used to return semantic value and location from the 1179c19800e8SDoug Rabson action routines. */ 1180c19800e8SDoug Rabson YYSTYPE yyval; 1181c19800e8SDoug Rabson 1182c19800e8SDoug Rabson 1183c19800e8SDoug Rabson /* The number of symbols on the RHS of the reduced rule. 1184c19800e8SDoug Rabson Keep to zero when no symbol should be popped. */ 1185c19800e8SDoug Rabson int yylen = 0; 1186c19800e8SDoug Rabson 1187c19800e8SDoug Rabson YYDPRINTF ((stderr, "Starting parse\n")); 1188c19800e8SDoug Rabson 1189c19800e8SDoug Rabson yystate = 0; 1190c19800e8SDoug Rabson yyerrstatus = 0; 1191c19800e8SDoug Rabson yynerrs = 0; 1192c19800e8SDoug Rabson yychar = YYEMPTY; /* Cause a token to be read. */ 1193c19800e8SDoug Rabson 1194c19800e8SDoug Rabson /* Initialize stack pointers. 1195c19800e8SDoug Rabson Waste one element of value and location stack 1196c19800e8SDoug Rabson so that they stay on the same level as the state stack. 1197c19800e8SDoug Rabson The wasted elements are never initialized. */ 1198c19800e8SDoug Rabson 1199c19800e8SDoug Rabson yyssp = yyss; 1200c19800e8SDoug Rabson yyvsp = yyvs; 1201c19800e8SDoug Rabson 1202c19800e8SDoug Rabson goto yysetstate; 1203c19800e8SDoug Rabson 1204c19800e8SDoug Rabson /*------------------------------------------------------------. 1205c19800e8SDoug Rabson | yynewstate -- Push a new state, which is found in yystate. | 1206c19800e8SDoug Rabson `------------------------------------------------------------*/ 1207c19800e8SDoug Rabson yynewstate: 1208c19800e8SDoug Rabson /* In all cases, when you get here, the value and location stacks 1209c19800e8SDoug Rabson have just been pushed. So pushing a state here evens the stacks. */ 1210c19800e8SDoug Rabson yyssp++; 1211c19800e8SDoug Rabson 1212c19800e8SDoug Rabson yysetstate: 1213c19800e8SDoug Rabson *yyssp = yystate; 1214c19800e8SDoug Rabson 1215c19800e8SDoug Rabson if (yyss + yystacksize - 1 <= yyssp) 1216c19800e8SDoug Rabson { 1217c19800e8SDoug Rabson /* Get the current used size of the three stacks, in elements. */ 1218c19800e8SDoug Rabson YYSIZE_T yysize = yyssp - yyss + 1; 1219c19800e8SDoug Rabson 1220c19800e8SDoug Rabson #ifdef yyoverflow 1221c19800e8SDoug Rabson { 1222c19800e8SDoug Rabson /* Give user a chance to reallocate the stack. Use copies of 1223c19800e8SDoug Rabson these so that the &'s don't force the real ones into 1224c19800e8SDoug Rabson memory. */ 1225c19800e8SDoug Rabson YYSTYPE *yyvs1 = yyvs; 1226c19800e8SDoug Rabson yytype_int16 *yyss1 = yyss; 1227c19800e8SDoug Rabson 1228c19800e8SDoug Rabson 1229c19800e8SDoug Rabson /* Each stack pointer address is followed by the size of the 1230c19800e8SDoug Rabson data in use in that stack, in bytes. This used to be a 1231c19800e8SDoug Rabson conditional around just the two extra args, but that might 1232c19800e8SDoug Rabson be undefined if yyoverflow is a macro. */ 1233c19800e8SDoug Rabson yyoverflow (YY_("memory exhausted"), 1234c19800e8SDoug Rabson &yyss1, yysize * sizeof (*yyssp), 1235c19800e8SDoug Rabson &yyvs1, yysize * sizeof (*yyvsp), 1236c19800e8SDoug Rabson 1237c19800e8SDoug Rabson &yystacksize); 1238c19800e8SDoug Rabson 1239c19800e8SDoug Rabson yyss = yyss1; 1240c19800e8SDoug Rabson yyvs = yyvs1; 1241c19800e8SDoug Rabson } 1242c19800e8SDoug Rabson #else /* no yyoverflow */ 1243c19800e8SDoug Rabson # ifndef YYSTACK_RELOCATE 1244c19800e8SDoug Rabson goto yyexhaustedlab; 1245c19800e8SDoug Rabson # else 1246c19800e8SDoug Rabson /* Extend the stack our own way. */ 1247c19800e8SDoug Rabson if (YYMAXDEPTH <= yystacksize) 1248c19800e8SDoug Rabson goto yyexhaustedlab; 1249c19800e8SDoug Rabson yystacksize *= 2; 1250c19800e8SDoug Rabson if (YYMAXDEPTH < yystacksize) 1251c19800e8SDoug Rabson yystacksize = YYMAXDEPTH; 1252c19800e8SDoug Rabson 1253c19800e8SDoug Rabson { 1254c19800e8SDoug Rabson yytype_int16 *yyss1 = yyss; 1255c19800e8SDoug Rabson union yyalloc *yyptr = 1256c19800e8SDoug Rabson (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1257c19800e8SDoug Rabson if (! yyptr) 1258c19800e8SDoug Rabson goto yyexhaustedlab; 1259c19800e8SDoug Rabson YYSTACK_RELOCATE (yyss); 1260c19800e8SDoug Rabson YYSTACK_RELOCATE (yyvs); 1261c19800e8SDoug Rabson 1262c19800e8SDoug Rabson # undef YYSTACK_RELOCATE 1263c19800e8SDoug Rabson if (yyss1 != yyssa) 1264c19800e8SDoug Rabson YYSTACK_FREE (yyss1); 1265c19800e8SDoug Rabson } 1266c19800e8SDoug Rabson # endif 1267c19800e8SDoug Rabson #endif /* no yyoverflow */ 1268c19800e8SDoug Rabson 1269c19800e8SDoug Rabson yyssp = yyss + yysize - 1; 1270c19800e8SDoug Rabson yyvsp = yyvs + yysize - 1; 1271c19800e8SDoug Rabson 1272c19800e8SDoug Rabson 1273c19800e8SDoug Rabson YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1274c19800e8SDoug Rabson (unsigned long int) yystacksize)); 1275c19800e8SDoug Rabson 1276c19800e8SDoug Rabson if (yyss + yystacksize - 1 <= yyssp) 1277c19800e8SDoug Rabson YYABORT; 1278c19800e8SDoug Rabson } 1279c19800e8SDoug Rabson 1280c19800e8SDoug Rabson YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1281c19800e8SDoug Rabson 1282c19800e8SDoug Rabson goto yybackup; 1283c19800e8SDoug Rabson 1284c19800e8SDoug Rabson /*-----------. 1285c19800e8SDoug Rabson | yybackup. | 1286c19800e8SDoug Rabson `-----------*/ 1287c19800e8SDoug Rabson yybackup: 1288c19800e8SDoug Rabson 1289c19800e8SDoug Rabson /* Do appropriate processing given the current state. Read a 1290c19800e8SDoug Rabson look-ahead token if we need one and don't already have one. */ 1291c19800e8SDoug Rabson 1292c19800e8SDoug Rabson /* First try to decide what to do without reference to look-ahead token. */ 1293c19800e8SDoug Rabson yyn = yypact[yystate]; 1294c19800e8SDoug Rabson if (yyn == YYPACT_NINF) 1295c19800e8SDoug Rabson goto yydefault; 1296c19800e8SDoug Rabson 1297c19800e8SDoug Rabson /* Not known => get a look-ahead token if don't already have one. */ 1298c19800e8SDoug Rabson 1299c19800e8SDoug Rabson /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 1300c19800e8SDoug Rabson if (yychar == YYEMPTY) 1301c19800e8SDoug Rabson { 1302c19800e8SDoug Rabson YYDPRINTF ((stderr, "Reading a token: ")); 1303c19800e8SDoug Rabson yychar = YYLEX; 1304c19800e8SDoug Rabson } 1305c19800e8SDoug Rabson 1306c19800e8SDoug Rabson if (yychar <= YYEOF) 1307c19800e8SDoug Rabson { 1308c19800e8SDoug Rabson yychar = yytoken = YYEOF; 1309c19800e8SDoug Rabson YYDPRINTF ((stderr, "Now at end of input.\n")); 1310c19800e8SDoug Rabson } 1311c19800e8SDoug Rabson else 1312c19800e8SDoug Rabson { 1313c19800e8SDoug Rabson yytoken = YYTRANSLATE (yychar); 1314c19800e8SDoug Rabson YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1315c19800e8SDoug Rabson } 1316c19800e8SDoug Rabson 1317c19800e8SDoug Rabson /* If the proper action on seeing token YYTOKEN is to reduce or to 1318c19800e8SDoug Rabson detect an error, take that action. */ 1319c19800e8SDoug Rabson yyn += yytoken; 1320c19800e8SDoug Rabson if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1321c19800e8SDoug Rabson goto yydefault; 1322c19800e8SDoug Rabson yyn = yytable[yyn]; 1323c19800e8SDoug Rabson if (yyn <= 0) 1324c19800e8SDoug Rabson { 1325c19800e8SDoug Rabson if (yyn == 0 || yyn == YYTABLE_NINF) 1326c19800e8SDoug Rabson goto yyerrlab; 1327c19800e8SDoug Rabson yyn = -yyn; 1328c19800e8SDoug Rabson goto yyreduce; 1329c19800e8SDoug Rabson } 1330c19800e8SDoug Rabson 1331c19800e8SDoug Rabson if (yyn == YYFINAL) 1332c19800e8SDoug Rabson YYACCEPT; 1333c19800e8SDoug Rabson 1334c19800e8SDoug Rabson /* Count tokens shifted since error; after three, turn off error 1335c19800e8SDoug Rabson status. */ 1336c19800e8SDoug Rabson if (yyerrstatus) 1337c19800e8SDoug Rabson yyerrstatus--; 1338c19800e8SDoug Rabson 1339c19800e8SDoug Rabson /* Shift the look-ahead token. */ 1340c19800e8SDoug Rabson YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1341c19800e8SDoug Rabson 1342c19800e8SDoug Rabson /* Discard the shifted token unless it is eof. */ 1343c19800e8SDoug Rabson if (yychar != YYEOF) 1344c19800e8SDoug Rabson yychar = YYEMPTY; 1345c19800e8SDoug Rabson 1346c19800e8SDoug Rabson yystate = yyn; 1347c19800e8SDoug Rabson *++yyvsp = yylval; 1348c19800e8SDoug Rabson 1349c19800e8SDoug Rabson goto yynewstate; 1350c19800e8SDoug Rabson 1351c19800e8SDoug Rabson 1352c19800e8SDoug Rabson /*-----------------------------------------------------------. 1353c19800e8SDoug Rabson | yydefault -- do the default action for the current state. | 1354c19800e8SDoug Rabson `-----------------------------------------------------------*/ 1355c19800e8SDoug Rabson yydefault: 1356c19800e8SDoug Rabson yyn = yydefact[yystate]; 1357c19800e8SDoug Rabson if (yyn == 0) 1358c19800e8SDoug Rabson goto yyerrlab; 1359c19800e8SDoug Rabson goto yyreduce; 1360c19800e8SDoug Rabson 1361c19800e8SDoug Rabson 1362c19800e8SDoug Rabson /*-----------------------------. 1363c19800e8SDoug Rabson | yyreduce -- Do a reduction. | 1364c19800e8SDoug Rabson `-----------------------------*/ 1365c19800e8SDoug Rabson yyreduce: 1366c19800e8SDoug Rabson /* yyn is the number of a rule to reduce with. */ 1367c19800e8SDoug Rabson yylen = yyr2[yyn]; 1368c19800e8SDoug Rabson 1369c19800e8SDoug Rabson /* If YYLEN is nonzero, implement the default value of the action: 1370c19800e8SDoug Rabson `$$ = $1'. 1371c19800e8SDoug Rabson 1372c19800e8SDoug Rabson Otherwise, the following line sets YYVAL to garbage. 1373c19800e8SDoug Rabson This behavior is undocumented and Bison 1374c19800e8SDoug Rabson users should not rely upon it. Assigning to YYVAL 1375c19800e8SDoug Rabson unconditionally makes the parser a bit smaller, and it avoids a 1376c19800e8SDoug Rabson GCC warning that YYVAL may be used uninitialized. */ 1377c19800e8SDoug Rabson yyval = yyvsp[1-yylen]; 1378c19800e8SDoug Rabson 1379c19800e8SDoug Rabson 1380c19800e8SDoug Rabson YY_REDUCE_PRINT (yyn); 1381c19800e8SDoug Rabson switch (yyn) 1382c19800e8SDoug Rabson { 1383c19800e8SDoug Rabson case 6: 1384c19800e8SDoug Rabson #line 73 "parse.y" 1385c19800e8SDoug Rabson { 1386c19800e8SDoug Rabson id_str = (yyvsp[(2) - (2)].string); 1387c19800e8SDoug Rabson } 1388c19800e8SDoug Rabson break; 1389c19800e8SDoug Rabson 1390c19800e8SDoug Rabson case 7: 1391c19800e8SDoug Rabson #line 79 "parse.y" 1392c19800e8SDoug Rabson { 1393c19800e8SDoug Rabson base_id = name2number((yyvsp[(2) - (2)].string)); 1394c19800e8SDoug Rabson strlcpy(name, (yyvsp[(2) - (2)].string), sizeof(name)); 1395c19800e8SDoug Rabson free((yyvsp[(2) - (2)].string)); 1396c19800e8SDoug Rabson } 1397c19800e8SDoug Rabson break; 1398c19800e8SDoug Rabson 1399c19800e8SDoug Rabson case 8: 1400c19800e8SDoug Rabson #line 85 "parse.y" 1401c19800e8SDoug Rabson { 1402c19800e8SDoug Rabson base_id = name2number((yyvsp[(2) - (3)].string)); 1403c19800e8SDoug Rabson strlcpy(name, (yyvsp[(3) - (3)].string), sizeof(name)); 1404c19800e8SDoug Rabson free((yyvsp[(2) - (3)].string)); 1405c19800e8SDoug Rabson free((yyvsp[(3) - (3)].string)); 1406c19800e8SDoug Rabson } 1407c19800e8SDoug Rabson break; 1408c19800e8SDoug Rabson 1409c19800e8SDoug Rabson case 11: 1410c19800e8SDoug Rabson #line 98 "parse.y" 1411c19800e8SDoug Rabson { 1412c19800e8SDoug Rabson number = (yyvsp[(2) - (2)].number); 1413c19800e8SDoug Rabson } 1414c19800e8SDoug Rabson break; 1415c19800e8SDoug Rabson 1416c19800e8SDoug Rabson case 12: 1417c19800e8SDoug Rabson #line 102 "parse.y" 1418c19800e8SDoug Rabson { 1419c19800e8SDoug Rabson free(prefix); 1420c19800e8SDoug Rabson asprintf (&prefix, "%s_", (yyvsp[(2) - (2)].string)); 1421c19800e8SDoug Rabson if (prefix == NULL) 1422c19800e8SDoug Rabson errx(1, "malloc"); 1423c19800e8SDoug Rabson free((yyvsp[(2) - (2)].string)); 1424c19800e8SDoug Rabson } 1425c19800e8SDoug Rabson break; 1426c19800e8SDoug Rabson 1427c19800e8SDoug Rabson case 13: 1428c19800e8SDoug Rabson #line 110 "parse.y" 1429c19800e8SDoug Rabson { 1430c19800e8SDoug Rabson prefix = realloc(prefix, 1); 1431c19800e8SDoug Rabson if (prefix == NULL) 1432c19800e8SDoug Rabson errx(1, "malloc"); 1433c19800e8SDoug Rabson *prefix = '\0'; 1434c19800e8SDoug Rabson } 1435c19800e8SDoug Rabson break; 1436c19800e8SDoug Rabson 1437c19800e8SDoug Rabson case 14: 1438c19800e8SDoug Rabson #line 117 "parse.y" 1439c19800e8SDoug Rabson { 1440c19800e8SDoug Rabson struct error_code *ec = malloc(sizeof(*ec)); 1441c19800e8SDoug Rabson 1442c19800e8SDoug Rabson if (ec == NULL) 1443c19800e8SDoug Rabson errx(1, "malloc"); 1444c19800e8SDoug Rabson 1445c19800e8SDoug Rabson ec->next = NULL; 1446c19800e8SDoug Rabson ec->number = number; 1447c19800e8SDoug Rabson if(prefix && *prefix != '\0') { 1448c19800e8SDoug Rabson asprintf (&ec->name, "%s%s", prefix, (yyvsp[(2) - (4)].string)); 1449c19800e8SDoug Rabson if (ec->name == NULL) 1450c19800e8SDoug Rabson errx(1, "malloc"); 1451c19800e8SDoug Rabson free((yyvsp[(2) - (4)].string)); 1452c19800e8SDoug Rabson } else 1453c19800e8SDoug Rabson ec->name = (yyvsp[(2) - (4)].string); 1454c19800e8SDoug Rabson ec->string = (yyvsp[(4) - (4)].string); 1455c19800e8SDoug Rabson APPEND(codes, ec); 1456c19800e8SDoug Rabson number++; 1457c19800e8SDoug Rabson } 1458c19800e8SDoug Rabson break; 1459c19800e8SDoug Rabson 1460c19800e8SDoug Rabson case 15: 1461c19800e8SDoug Rabson #line 137 "parse.y" 1462c19800e8SDoug Rabson { 1463c19800e8SDoug Rabson YYACCEPT; 1464c19800e8SDoug Rabson } 1465c19800e8SDoug Rabson break; 1466c19800e8SDoug Rabson 1467c19800e8SDoug Rabson 1468c19800e8SDoug Rabson /* Line 1267 of yacc.c. */ 1469c19800e8SDoug Rabson #line 1470 "parse.c" 1470c19800e8SDoug Rabson default: break; 1471c19800e8SDoug Rabson } 1472c19800e8SDoug Rabson YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 1473c19800e8SDoug Rabson 1474c19800e8SDoug Rabson YYPOPSTACK (yylen); 1475c19800e8SDoug Rabson yylen = 0; 1476c19800e8SDoug Rabson YY_STACK_PRINT (yyss, yyssp); 1477c19800e8SDoug Rabson 1478c19800e8SDoug Rabson *++yyvsp = yyval; 1479c19800e8SDoug Rabson 1480c19800e8SDoug Rabson 1481c19800e8SDoug Rabson /* Now `shift' the result of the reduction. Determine what state 1482c19800e8SDoug Rabson that goes to, based on the state we popped back to and the rule 1483c19800e8SDoug Rabson number reduced by. */ 1484c19800e8SDoug Rabson 1485c19800e8SDoug Rabson yyn = yyr1[yyn]; 1486c19800e8SDoug Rabson 1487c19800e8SDoug Rabson yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 1488c19800e8SDoug Rabson if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 1489c19800e8SDoug Rabson yystate = yytable[yystate]; 1490c19800e8SDoug Rabson else 1491c19800e8SDoug Rabson yystate = yydefgoto[yyn - YYNTOKENS]; 1492c19800e8SDoug Rabson 1493c19800e8SDoug Rabson goto yynewstate; 1494c19800e8SDoug Rabson 1495c19800e8SDoug Rabson 1496c19800e8SDoug Rabson /*------------------------------------. 1497c19800e8SDoug Rabson | yyerrlab -- here on detecting error | 1498c19800e8SDoug Rabson `------------------------------------*/ 1499c19800e8SDoug Rabson yyerrlab: 1500c19800e8SDoug Rabson /* If not already recovering from an error, report this error. */ 1501c19800e8SDoug Rabson if (!yyerrstatus) 1502c19800e8SDoug Rabson { 1503c19800e8SDoug Rabson ++yynerrs; 1504c19800e8SDoug Rabson #if ! YYERROR_VERBOSE 1505c19800e8SDoug Rabson yyerror (YY_("syntax error")); 1506c19800e8SDoug Rabson #else 1507c19800e8SDoug Rabson { 1508c19800e8SDoug Rabson YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 1509c19800e8SDoug Rabson if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 1510c19800e8SDoug Rabson { 1511c19800e8SDoug Rabson YYSIZE_T yyalloc = 2 * yysize; 1512c19800e8SDoug Rabson if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 1513c19800e8SDoug Rabson yyalloc = YYSTACK_ALLOC_MAXIMUM; 1514c19800e8SDoug Rabson if (yymsg != yymsgbuf) 1515c19800e8SDoug Rabson YYSTACK_FREE (yymsg); 1516c19800e8SDoug Rabson yymsg = (char *) YYSTACK_ALLOC (yyalloc); 1517c19800e8SDoug Rabson if (yymsg) 1518c19800e8SDoug Rabson yymsg_alloc = yyalloc; 1519c19800e8SDoug Rabson else 1520c19800e8SDoug Rabson { 1521c19800e8SDoug Rabson yymsg = yymsgbuf; 1522c19800e8SDoug Rabson yymsg_alloc = sizeof yymsgbuf; 1523c19800e8SDoug Rabson } 1524c19800e8SDoug Rabson } 1525c19800e8SDoug Rabson 1526c19800e8SDoug Rabson if (0 < yysize && yysize <= yymsg_alloc) 1527c19800e8SDoug Rabson { 1528c19800e8SDoug Rabson (void) yysyntax_error (yymsg, yystate, yychar); 1529c19800e8SDoug Rabson yyerror (yymsg); 1530c19800e8SDoug Rabson } 1531c19800e8SDoug Rabson else 1532c19800e8SDoug Rabson { 1533c19800e8SDoug Rabson yyerror (YY_("syntax error")); 1534c19800e8SDoug Rabson if (yysize != 0) 1535c19800e8SDoug Rabson goto yyexhaustedlab; 1536c19800e8SDoug Rabson } 1537c19800e8SDoug Rabson } 1538c19800e8SDoug Rabson #endif 1539c19800e8SDoug Rabson } 1540c19800e8SDoug Rabson 1541c19800e8SDoug Rabson 1542c19800e8SDoug Rabson 1543c19800e8SDoug Rabson if (yyerrstatus == 3) 1544c19800e8SDoug Rabson { 1545c19800e8SDoug Rabson /* If just tried and failed to reuse look-ahead token after an 1546c19800e8SDoug Rabson error, discard it. */ 1547c19800e8SDoug Rabson 1548c19800e8SDoug Rabson if (yychar <= YYEOF) 1549c19800e8SDoug Rabson { 1550c19800e8SDoug Rabson /* Return failure if at end of input. */ 1551c19800e8SDoug Rabson if (yychar == YYEOF) 1552c19800e8SDoug Rabson YYABORT; 1553c19800e8SDoug Rabson } 1554c19800e8SDoug Rabson else 1555c19800e8SDoug Rabson { 1556c19800e8SDoug Rabson yydestruct ("Error: discarding", 1557c19800e8SDoug Rabson yytoken, &yylval); 1558c19800e8SDoug Rabson yychar = YYEMPTY; 1559c19800e8SDoug Rabson } 1560c19800e8SDoug Rabson } 1561c19800e8SDoug Rabson 1562c19800e8SDoug Rabson /* Else will try to reuse look-ahead token after shifting the error 1563c19800e8SDoug Rabson token. */ 1564c19800e8SDoug Rabson goto yyerrlab1; 1565c19800e8SDoug Rabson 1566c19800e8SDoug Rabson 1567c19800e8SDoug Rabson /*---------------------------------------------------. 1568c19800e8SDoug Rabson | yyerrorlab -- error raised explicitly by YYERROR. | 1569c19800e8SDoug Rabson `---------------------------------------------------*/ 1570c19800e8SDoug Rabson yyerrorlab: 1571c19800e8SDoug Rabson 1572c19800e8SDoug Rabson /* Pacify compilers like GCC when the user code never invokes 1573c19800e8SDoug Rabson YYERROR and the label yyerrorlab therefore never appears in user 1574c19800e8SDoug Rabson code. */ 1575c19800e8SDoug Rabson if (/*CONSTCOND*/ 0) 1576c19800e8SDoug Rabson goto yyerrorlab; 1577c19800e8SDoug Rabson 1578c19800e8SDoug Rabson /* Do not reclaim the symbols of the rule which action triggered 1579c19800e8SDoug Rabson this YYERROR. */ 1580c19800e8SDoug Rabson YYPOPSTACK (yylen); 1581c19800e8SDoug Rabson yylen = 0; 1582c19800e8SDoug Rabson YY_STACK_PRINT (yyss, yyssp); 1583c19800e8SDoug Rabson yystate = *yyssp; 1584c19800e8SDoug Rabson goto yyerrlab1; 1585c19800e8SDoug Rabson 1586c19800e8SDoug Rabson 1587c19800e8SDoug Rabson /*-------------------------------------------------------------. 1588c19800e8SDoug Rabson | yyerrlab1 -- common code for both syntax error and YYERROR. | 1589c19800e8SDoug Rabson `-------------------------------------------------------------*/ 1590c19800e8SDoug Rabson yyerrlab1: 1591c19800e8SDoug Rabson yyerrstatus = 3; /* Each real token shifted decrements this. */ 1592c19800e8SDoug Rabson 1593c19800e8SDoug Rabson for (;;) 1594c19800e8SDoug Rabson { 1595c19800e8SDoug Rabson yyn = yypact[yystate]; 1596c19800e8SDoug Rabson if (yyn != YYPACT_NINF) 1597c19800e8SDoug Rabson { 1598c19800e8SDoug Rabson yyn += YYTERROR; 1599c19800e8SDoug Rabson if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 1600c19800e8SDoug Rabson { 1601c19800e8SDoug Rabson yyn = yytable[yyn]; 1602c19800e8SDoug Rabson if (0 < yyn) 1603c19800e8SDoug Rabson break; 1604c19800e8SDoug Rabson } 1605c19800e8SDoug Rabson } 1606c19800e8SDoug Rabson 1607c19800e8SDoug Rabson /* Pop the current state because it cannot handle the error token. */ 1608c19800e8SDoug Rabson if (yyssp == yyss) 1609c19800e8SDoug Rabson YYABORT; 1610c19800e8SDoug Rabson 1611c19800e8SDoug Rabson 1612c19800e8SDoug Rabson yydestruct ("Error: popping", 1613c19800e8SDoug Rabson yystos[yystate], yyvsp); 1614c19800e8SDoug Rabson YYPOPSTACK (1); 1615c19800e8SDoug Rabson yystate = *yyssp; 1616c19800e8SDoug Rabson YY_STACK_PRINT (yyss, yyssp); 1617c19800e8SDoug Rabson } 1618c19800e8SDoug Rabson 1619c19800e8SDoug Rabson if (yyn == YYFINAL) 1620c19800e8SDoug Rabson YYACCEPT; 1621c19800e8SDoug Rabson 1622c19800e8SDoug Rabson *++yyvsp = yylval; 1623c19800e8SDoug Rabson 1624c19800e8SDoug Rabson 1625c19800e8SDoug Rabson /* Shift the error token. */ 1626c19800e8SDoug Rabson YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 1627c19800e8SDoug Rabson 1628c19800e8SDoug Rabson yystate = yyn; 1629c19800e8SDoug Rabson goto yynewstate; 1630c19800e8SDoug Rabson 1631c19800e8SDoug Rabson 1632c19800e8SDoug Rabson /*-------------------------------------. 1633c19800e8SDoug Rabson | yyacceptlab -- YYACCEPT comes here. | 1634c19800e8SDoug Rabson `-------------------------------------*/ 1635c19800e8SDoug Rabson yyacceptlab: 1636c19800e8SDoug Rabson yyresult = 0; 1637c19800e8SDoug Rabson goto yyreturn; 1638c19800e8SDoug Rabson 1639c19800e8SDoug Rabson /*-----------------------------------. 1640c19800e8SDoug Rabson | yyabortlab -- YYABORT comes here. | 1641c19800e8SDoug Rabson `-----------------------------------*/ 1642c19800e8SDoug Rabson yyabortlab: 1643c19800e8SDoug Rabson yyresult = 1; 1644c19800e8SDoug Rabson goto yyreturn; 1645c19800e8SDoug Rabson 1646c19800e8SDoug Rabson #ifndef yyoverflow 1647c19800e8SDoug Rabson /*-------------------------------------------------. 1648c19800e8SDoug Rabson | yyexhaustedlab -- memory exhaustion comes here. | 1649c19800e8SDoug Rabson `-------------------------------------------------*/ 1650c19800e8SDoug Rabson yyexhaustedlab: 1651c19800e8SDoug Rabson yyerror (YY_("memory exhausted")); 1652c19800e8SDoug Rabson yyresult = 2; 1653c19800e8SDoug Rabson /* Fall through. */ 1654c19800e8SDoug Rabson #endif 1655c19800e8SDoug Rabson 1656c19800e8SDoug Rabson yyreturn: 1657c19800e8SDoug Rabson if (yychar != YYEOF && yychar != YYEMPTY) 1658c19800e8SDoug Rabson yydestruct ("Cleanup: discarding lookahead", 1659c19800e8SDoug Rabson yytoken, &yylval); 1660c19800e8SDoug Rabson /* Do not reclaim the symbols of the rule which action triggered 1661c19800e8SDoug Rabson this YYABORT or YYACCEPT. */ 1662c19800e8SDoug Rabson YYPOPSTACK (yylen); 1663c19800e8SDoug Rabson YY_STACK_PRINT (yyss, yyssp); 1664c19800e8SDoug Rabson while (yyssp != yyss) 1665c19800e8SDoug Rabson { 1666c19800e8SDoug Rabson yydestruct ("Cleanup: popping", 1667c19800e8SDoug Rabson yystos[*yyssp], yyvsp); 1668c19800e8SDoug Rabson YYPOPSTACK (1); 1669c19800e8SDoug Rabson } 1670c19800e8SDoug Rabson #ifndef yyoverflow 1671c19800e8SDoug Rabson if (yyss != yyssa) 1672c19800e8SDoug Rabson YYSTACK_FREE (yyss); 1673c19800e8SDoug Rabson #endif 1674c19800e8SDoug Rabson #if YYERROR_VERBOSE 1675c19800e8SDoug Rabson if (yymsg != yymsgbuf) 1676c19800e8SDoug Rabson YYSTACK_FREE (yymsg); 1677c19800e8SDoug Rabson #endif 1678c19800e8SDoug Rabson /* Make sure YYID is used. */ 1679c19800e8SDoug Rabson return YYID (yyresult); 1680c19800e8SDoug Rabson } 1681c19800e8SDoug Rabson 1682c19800e8SDoug Rabson 1683c19800e8SDoug Rabson #line 142 "parse.y" 1684c19800e8SDoug Rabson 1685c19800e8SDoug Rabson 1686c19800e8SDoug Rabson static long 1687c19800e8SDoug Rabson name2number(const char *str) 1688c19800e8SDoug Rabson { 1689c19800e8SDoug Rabson const char *p; 1690c19800e8SDoug Rabson long num = 0; 1691c19800e8SDoug Rabson const char *x = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 1692c19800e8SDoug Rabson "abcdefghijklmnopqrstuvwxyz0123456789_"; 1693c19800e8SDoug Rabson if(strlen(str) > 4) { 1694c19800e8SDoug Rabson yyerror("table name too long"); 1695c19800e8SDoug Rabson return 0; 1696c19800e8SDoug Rabson } 1697c19800e8SDoug Rabson for(p = str; *p; p++){ 1698c19800e8SDoug Rabson char *q = strchr(x, *p); 1699c19800e8SDoug Rabson if(q == NULL) { 1700c19800e8SDoug Rabson yyerror("invalid character in table name"); 1701c19800e8SDoug Rabson return 0; 1702c19800e8SDoug Rabson } 1703c19800e8SDoug Rabson num = (num << 6) + (q - x) + 1; 1704c19800e8SDoug Rabson } 1705c19800e8SDoug Rabson num <<= 8; 1706c19800e8SDoug Rabson if(num > 0x7fffffff) 1707c19800e8SDoug Rabson num = -(0xffffffff - num + 1); 1708c19800e8SDoug Rabson return num; 1709c19800e8SDoug Rabson } 1710c19800e8SDoug Rabson 1711c19800e8SDoug Rabson void 1712c19800e8SDoug Rabson yyerror (char *s) 1713c19800e8SDoug Rabson { 1714c19800e8SDoug Rabson error_message ("%s\n", s); 1715c19800e8SDoug Rabson } 1716c19800e8SDoug Rabson 1717