LTP GCOV extension - code coverage report
Current view: directory - csrc/cl - y.tab.c
Test: app.info
Date: 2007-12-10 Instrumented lines: 221
Code covered: 71.5 % Executed lines: 158

       1                 : /* A Bison parser, made by GNU Bison 2.3.  */
       2                 : 
       3                 : /* Skeleton implementation for Bison's Yacc-like parsers in C
       4                 : 
       5                 :    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
       6                 :    Free Software Foundation, Inc.
       7                 : 
       8                 :    This program is free software; you can redistribute it and/or modify
       9                 :    it under the terms of the GNU General Public License as published by
      10                 :    the Free Software Foundation; either version 2, or (at your option)
      11                 :    any later version.
      12                 : 
      13                 :    This program is distributed in the hope that it will be useful,
      14                 :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      15                 :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16                 :    GNU General Public License for more details.
      17                 : 
      18                 :    You should have received a copy of the GNU General Public License
      19                 :    along with this program; if not, write to the Free Software
      20                 :    Foundation, Inc., 51 Franklin Street, Fifth Floor,
      21                 :    Boston, MA 02110-1301, USA.  */
      22                 : 
      23                 : /* As a special exception, you may create a larger work that contains
      24                 :    part or all of the Bison parser skeleton and distribute that work
      25                 :    under terms of your choice, so long as that work isn't itself a
      26                 :    parser generator using the skeleton or a modified version thereof
      27                 :    as a parser skeleton.  Alternatively, if you modify or redistribute
      28                 :    the parser skeleton itself, you may (at your option) remove this
      29                 :    special exception, which will cause the skeleton and the resulting
      30                 :    Bison output files to be licensed under the GNU General Public
      31                 :    License without this special exception.
      32                 : 
      33                 :    This special exception was added by the Free Software Foundation in
      34                 :    version 2.2 of Bison.  */
      35                 : 
      36                 : /* C LALR(1) parser skeleton written by Richard Stallman, by
      37                 :    simplifying the original so-called "semantic" parser.  */
      38                 : 
      39                 : /* All symbols defined below should begin with yy or YY, to avoid
      40                 :    infringing on user name space.  This should be done even for local
      41                 :    variables, as they might otherwise be expanded by user macros.
      42                 :    There are some unavoidable exceptions within include files to
      43                 :    define necessary library symbols; they are noted "INFRINGES ON
      44                 :    USER NAME SPACE" below.  */
      45                 : 
      46                 : /* Identify Bison output.  */
      47                 : #define YYBISON 1
      48                 : 
      49                 : /* Bison version.  */
      50                 : #define YYBISON_VERSION "2.3"
      51                 : 
      52                 : /* Skeleton name.  */
      53                 : #define YYSKELETON_NAME "yacc.c"
      54                 : 
      55                 : /* Pure parsers.  */
      56                 : #define YYPURE 0
      57                 : 
      58                 : /* Using locations.  */
      59                 : #define YYLSP_NEEDED 0
      60                 : 
      61                 : 
      62                 : 
      63                 : /* Tokens.  */
      64                 : #ifndef YYTOKENTYPE
      65                 : # define YYTOKENTYPE
      66                 :    /* Put the tokens into the symbol table, so that GDB and other debuggers
      67                 :       know about them.  */
      68                 :    enum yytokentype {
      69                 :      TK_EOL = 258,
      70                 :      TK_LPAREN = 259,
      71                 :      TK_RPAREN = 260,
      72                 :      TK_LBRACK = 261,
      73                 :      TK_RBRACK = 262,
      74                 :      TK_IDENTIFIER = 263,
      75                 :      TK_PRIMITIVE = 264,
      76                 :      STRING_LITERAL = 265,
      77                 :      TK_REDUCE = 266,
      78                 :      TK_TIMEOUT = 267,
      79                 :      NUMERICAL_CONSTANT = 268,
      80                 :      TK_ALGORITHM_NAME = 269,
      81                 :      TK_DEF = 270,
      82                 :      TK_TIME = 271,
      83                 :      TK_LOAD = 272,
      84                 :      TK_ELABORATE = 273,
      85                 :      TK_TRACE = 274,
      86                 :      TK_SINGLE_STEP = 275,
      87                 :      TK_DEBUG = 276,
      88                 :      TK_MAX_COUNT = 277,
      89                 :      TK_SET_BRACKET_ABSTRACTION = 278
      90                 :    };
      91                 : #endif
      92                 : /* Tokens.  */
      93                 : #define TK_EOL 258
      94                 : #define TK_LPAREN 259
      95                 : #define TK_RPAREN 260
      96                 : #define TK_LBRACK 261
      97                 : #define TK_RBRACK 262
      98                 : #define TK_IDENTIFIER 263
      99                 : #define TK_PRIMITIVE 264
     100                 : #define STRING_LITERAL 265
     101                 : #define TK_REDUCE 266
     102                 : #define TK_TIMEOUT 267
     103                 : #define NUMERICAL_CONSTANT 268
     104                 : #define TK_ALGORITHM_NAME 269
     105                 : #define TK_DEF 270
     106                 : #define TK_TIME 271
     107                 : #define TK_LOAD 272
     108                 : #define TK_ELABORATE 273
     109                 : #define TK_TRACE 274
     110                 : #define TK_SINGLE_STEP 275
     111                 : #define TK_DEBUG 276
     112                 : #define TK_MAX_COUNT 277
     113                 : #define TK_SET_BRACKET_ABSTRACTION 278
     114                 : 
     115                 : 
     116                 : 
     117                 : 
     118                 : /* Copy the first part of user declarations.  */
     119                 : #line 1 "grammar.y"
     120                 : 
     121                 : /*
     122                 :         Copyright (C) 2007, Bruce Ediger
     123                 : 
     124                 :     This file is part of cl.
     125                 : 
     126                 :     cl is free software; you can redistribute it and/or modify
     127                 :     it under the terms of the GNU General Public License as published by
     128                 :     the Free Software Foundation; either version 2 of the License, or
     129                 :     (at your option) any later version.
     130                 : 
     131                 :     cl is distributed in the hope that it will be useful,
     132                 :     but WITHOUT ANY WARRANTY; without even the implied warranty of
     133                 :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     134                 :     GNU General Public License for more details.
     135                 : 
     136                 :     You should have received a copy of the GNU General Public License
     137                 :     along with cl; if not, write to the Free Software
     138                 :     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     139                 : 
     140                 : */
     141                 : #include <stdio.h>
     142                 : #include <errno.h>    /* errno */
     143                 : #include <string.h>   /* strerror() */
     144                 : #include <stdlib.h>   /* malloc(), free(), strtoul() */
     145                 : #include <unistd.h>   /* getopt() */
     146                 : #include <signal.h>   /* signal(), etc */
     147                 : #include <setjmp.h>   /* setjmp(), longjmp(), jmp_buf */
     148                 : #include <sys/time.h> /* gettimeofday(), struct timeval */
     149                 : 
     150                 : extern char *optarg;
     151                 : 
     152                 : #include <node.h>
     153                 : #include <hashtable.h>
     154                 : #include <atom.h>
     155                 : #include <graph.h>
     156                 : #include <abbreviations.h>
     157                 : #include <spine_stack.h>
     158                 : #include <bracket_abstraction.h>
     159                 : 
     160                 : #ifdef YYBISON
     161                 : #define YYERROR_VERBOSE
     162                 : #endif
     163                 : 
     164                 : /* flags, binary on/off for various outputs */
     165                 : int debug_reduction  = 0;
     166                 : int elaborate_output = 0;
     167                 : int trace_reduction  = 0;
     168                 : int reduction_timer  = 0;
     169                 : int single_step      = 0;
     170                 : int memory_info      = 0;
     171                 : int count_reductions = 0;    /* produce a count of reductions */
     172                 : 
     173                 : int reduction_timeout = 0;   /* how long to let a graph reduction run, seconds */
     174                 : int max_reduction_count = 0; /* when non-zero, how many reductions to perform */
     175                 : 
     176                 : int prompting = 1;
     177                 : 
     178                 : /* Signal handling.  in_reduce_graph used to (a) handle
     179                 :  * contrl-C interruptions (b) reduction-run-time timeouts,
     180                 :  * (c) getting out of single-stepped graph reduction in reduce_graph()
     181                 :  */
     182                 : void sigint_handler(int signo);
     183                 : sigjmp_buf in_reduce_graph;
     184                 : int interpreter_interrupted = 0;
     185                 : int reduction_interrupted = 0;
     186                 : 
     187                 : void top_level_cleanup(int syntax_error_processing);
     188                 : 
     189                 : struct node *reduce_tree(struct node *root);
     190                 : struct node *execute_bracket_abstraction(
     191                 :         struct node *(*bafunc)(struct node *, struct node *),
     192                 :         struct node *abstracted_var,
     193                 :         struct node *root
     194                 : );
     195                 : float elapsed_time(struct timeval before, struct timeval after);
     196                 : void usage(char *progname);
     197                 : 
     198                 : struct filename_node {
     199                 :         const char *filename;
     200                 :         struct filename_node *next;
     201                 : };
     202                 : 
     203                 : /* from lex.l */
     204                 : extern void set_yyin_stdin(void); 
     205                 : extern void set_yyin(const char *filename); 
     206                 : extern void reset_yyin(void);
     207                 : extern void  push_and_open(const char *filename);
     208                 : 
     209                 : extern int yylex(void);
     210                 : int yyerror(char *s1);
     211                 : 
     212                 : /* Various "treat as combinator" flags.
     213                 :  * For example: S_as_combinator, when set (default) causes
     214                 :  * the lexer to treat "S" as an S-combinator.  When unset,
     215                 :  * the lexer treats "S" as any other variable. This can interact
     216                 :  * strangely with bracket abstraction, which assumes that its
     217                 :  * own use of "S" (again, as example) always constitutes a combinator.
     218                 :  */
     219                 : int S_as_combinator = 1;
     220                 : int K_as_combinator = 1;
     221                 : int I_as_combinator = 1;
     222                 : int B_as_combinator = 1;
     223                 : int C_as_combinator = 1;
     224                 : int W_as_combinator = 1;
     225                 : int T_as_combinator = 1;
     226                 : int M_as_combinator = 1;
     227                 : 
     228                 : 
     229                 : 
     230                 : /* Enabling traces.  */
     231                 : #ifndef YYDEBUG
     232                 : # define YYDEBUG 0
     233                 : #endif
     234                 : 
     235                 : /* Enabling verbose error messages.  */
     236                 : #ifdef YYERROR_VERBOSE
     237                 : # undef YYERROR_VERBOSE
     238                 : # define YYERROR_VERBOSE 1
     239                 : #else
     240                 : # define YYERROR_VERBOSE 0
     241                 : #endif
     242                 : 
     243                 : /* Enabling the token table.  */
     244                 : #ifndef YYTOKEN_TABLE
     245                 : # define YYTOKEN_TABLE 0
     246                 : #endif
     247                 : 
     248                 : #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
     249                 : typedef union YYSTYPE
     250                 : #line 111 "grammar.y"
     251                 : {
     252                 :         const char *identifier;
     253                 :         const char *string_constant;
     254                 :         int   numerical_constant;
     255                 :         struct node *node;
     256                 :         enum combinatorName cn;
     257                 :         struct node *(*bafunc)(struct node *, struct node *);
     258                 : }
     259                 : /* Line 187 of yacc.c.  */
     260                 : #line 261 "y.tab.c"
     261                 :         YYSTYPE;
     262                 : # define yystype YYSTYPE /* obsolescent; will be withdrawn */
     263                 : # define YYSTYPE_IS_DECLARED 1
     264                 : # define YYSTYPE_IS_TRIVIAL 1
     265                 : #endif
     266                 : 
     267                 : 
     268                 : 
     269                 : /* Copy the second part of user declarations.  */
     270                 : 
     271                 : 
     272                 : /* Line 216 of yacc.c.  */
     273                 : #line 274 "y.tab.c"
     274                 : 
     275                 : #ifdef short
     276                 : # undef short
     277                 : #endif
     278                 : 
     279                 : #ifdef YYTYPE_UINT8
     280                 : typedef YYTYPE_UINT8 yytype_uint8;
     281                 : #else
     282                 : typedef unsigned char yytype_uint8;
     283                 : #endif
     284                 : 
     285                 : #ifdef YYTYPE_INT8
     286                 : typedef YYTYPE_INT8 yytype_int8;
     287                 : #elif (defined __STDC__ || defined __C99__FUNC__ \
     288                 :      || defined __cplusplus || defined _MSC_VER)
     289                 : typedef signed char yytype_int8;
     290                 : #else
     291                 : typedef short int yytype_int8;
     292                 : #endif
     293                 : 
     294                 : #ifdef YYTYPE_UINT16
     295                 : typedef YYTYPE_UINT16 yytype_uint16;
     296                 : #else
     297                 : typedef unsigned short int yytype_uint16;
     298                 : #endif
     299                 : 
     300                 : #ifdef YYTYPE_INT16
     301                 : typedef YYTYPE_INT16 yytype_int16;
     302                 : #else
     303                 : typedef short int yytype_int16;
     304                 : #endif
     305                 : 
     306                 : #ifndef YYSIZE_T
     307                 : # ifdef __SIZE_TYPE__
     308                 : #  define YYSIZE_T __SIZE_TYPE__
     309                 : # elif defined size_t
     310                 : #  define YYSIZE_T size_t
     311                 : # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
     312                 :      || defined __cplusplus || defined _MSC_VER)
     313                 : #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
     314                 : #  define YYSIZE_T size_t
     315                 : # else
     316                 : #  define YYSIZE_T unsigned int
     317                 : # endif
     318                 : #endif
     319                 : 
     320                 : #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
     321                 : 
     322                 : #ifndef YY_
     323                 : # if YYENABLE_NLS
     324                 : #  if ENABLE_NLS
     325                 : #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
     326                 : #   define YY_(msgid) dgettext ("bison-runtime", msgid)
     327                 : #  endif
     328                 : # endif
     329                 : # ifndef YY_
     330                 : #  define YY_(msgid) msgid
     331                 : # endif
     332                 : #endif
     333                 : 
     334                 : /* Suppress unused-variable warnings by "using" E.  */
     335                 : #if ! defined lint || defined __GNUC__
     336                 : # define YYUSE(e) ((void) (e))
     337                 : #else
     338                 : # define YYUSE(e) /* empty */
     339                 : #endif
     340                 : 
     341                 : /* Identity function, used to suppress warnings about constant conditions.  */
     342                 : #ifndef lint
     343                 : # define YYID(n) (n)
     344                 : #else
     345                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     346                 :      || defined __cplusplus || defined _MSC_VER)
     347                 : static int
     348                 : YYID (int i)
     349                 : #else
     350                 : static int
     351                 : YYID (i)
     352                 :     int i;
     353                 : #endif
     354                 : {
     355                 :   return i;
     356                 : }
     357                 : #endif
     358                 : 
     359                 : #if ! defined yyoverflow || YYERROR_VERBOSE
     360                 : 
     361                 : /* The parser invokes alloca or malloc; define the necessary symbols.  */
     362                 : 
     363                 : # ifdef YYSTACK_USE_ALLOCA
     364                 : #  if YYSTACK_USE_ALLOCA
     365                 : #   ifdef __GNUC__
     366                 : #    define YYSTACK_ALLOC __builtin_alloca
     367                 : #   elif defined __BUILTIN_VA_ARG_INCR
     368                 : #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
     369                 : #   elif defined _AIX
     370                 : #    define YYSTACK_ALLOC __alloca
     371                 : #   elif defined _MSC_VER
     372                 : #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
     373                 : #    define alloca _alloca
     374                 : #   else
     375                 : #    define YYSTACK_ALLOC alloca
     376                 : #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
     377                 :      || defined __cplusplus || defined _MSC_VER)
     378                 : #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     379                 : #     ifndef _STDLIB_H
     380                 : #      define _STDLIB_H 1
     381                 : #     endif
     382                 : #    endif
     383                 : #   endif
     384                 : #  endif
     385                 : # endif
     386                 : 
     387                 : # ifdef YYSTACK_ALLOC
     388                 :    /* Pacify GCC's `empty if-body' warning.  */
     389                 : #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
     390                 : #  ifndef YYSTACK_ALLOC_MAXIMUM
     391                 :     /* The OS might guarantee only one guard page at the bottom of the stack,
     392                 :        and a page size can be as small as 4096 bytes.  So we cannot safely
     393                 :        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
     394                 :        to allow for a few compiler-allocated temporary stack slots.  */
     395                 : #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
     396                 : #  endif
     397                 : # else
     398                 : #  define YYSTACK_ALLOC YYMALLOC
     399                 : #  define YYSTACK_FREE YYFREE
     400                 : #  ifndef YYSTACK_ALLOC_MAXIMUM
     401                 : #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
     402                 : #  endif
     403                 : #  if (defined __cplusplus && ! defined _STDLIB_H \
     404                 :        && ! ((defined YYMALLOC || defined malloc) \
     405                 :              && (defined YYFREE || defined free)))
     406                 : #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     407                 : #   ifndef _STDLIB_H
     408                 : #    define _STDLIB_H 1
     409                 : #   endif
     410                 : #  endif
     411                 : #  ifndef YYMALLOC
     412                 : #   define YYMALLOC malloc
     413                 : #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
     414                 :      || defined __cplusplus || defined _MSC_VER)
     415                 : void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
     416                 : #   endif
     417                 : #  endif
     418                 : #  ifndef YYFREE
     419                 : #   define YYFREE free
     420                 : #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
     421                 :      || defined __cplusplus || defined _MSC_VER)
     422                 : void free (void *); /* INFRINGES ON USER NAME SPACE */
     423                 : #   endif
     424                 : #  endif
     425                 : # endif
     426                 : #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
     427                 : 
     428                 : 
     429                 : #if (! defined yyoverflow \
     430                 :      && (! defined __cplusplus \
     431                 :          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     432                 : 
     433                 : /* A type that is properly aligned for any stack member.  */
     434                 : union yyalloc
     435                 : {
     436                 :   yytype_int16 yyss;
     437                 :   YYSTYPE yyvs;
     438                 :   };
     439                 : 
     440                 : /* The size of the maximum gap between one aligned stack and the next.  */
     441                 : # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
     442                 : 
     443                 : /* The size of an array large to enough to hold all stacks, each with
     444                 :    N elements.  */
     445                 : # define YYSTACK_BYTES(N) \
     446                 :      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
     447                 :       + YYSTACK_GAP_MAXIMUM)
     448                 : 
     449                 : /* Copy COUNT objects from FROM to TO.  The source and destination do
     450                 :    not overlap.  */
     451                 : # ifndef YYCOPY
     452                 : #  if defined __GNUC__ && 1 < __GNUC__
     453                 : #   define YYCOPY(To, From, Count) \
     454                 :       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
     455                 : #  else
     456                 : #   define YYCOPY(To, From, Count)              \
     457                 :       do                                        \
     458                 :         {                                       \
     459                 :           YYSIZE_T yyi;                         \
     460                 :           for (yyi = 0; yyi < (Count); yyi++)        \
     461                 :             (To)[yyi] = (From)[yyi];            \
     462                 :         }                                       \
     463                 :       while (YYID (0))
     464                 : #  endif
     465                 : # endif
     466                 : 
     467                 : /* Relocate STACK from its old location to the new one.  The
     468                 :    local variables YYSIZE and YYSTACKSIZE give the old and new number of
     469                 :    elements in the stack, and YYPTR gives the new location of the
     470                 :    stack.  Advance YYPTR to a properly aligned location for the next
     471                 :    stack.  */
     472                 : # define YYSTACK_RELOCATE(Stack)                                        \
     473                 :     do                                                                  \
     474                 :       {                                                                 \
     475                 :         YYSIZE_T yynewbytes;                                            \
     476                 :         YYCOPY (&yyptr->Stack, Stack, yysize);                           \
     477                 :         Stack = &yyptr->Stack;                                           \
     478                 :         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
     479                 :         yyptr += yynewbytes / sizeof (*yyptr);                          \
     480                 :       }                                                                 \
     481                 :     while (YYID (0))
     482                 : 
     483                 : #endif
     484                 : 
     485                 : /* YYFINAL -- State number of the termination state.  */
     486                 : #define YYFINAL  39
     487                 : /* YYLAST -- Last index in YYTABLE.  */
     488                 : #define YYLAST   68
     489                 : 
     490                 : /* YYNTOKENS -- Number of terminals.  */
     491                 : #define YYNTOKENS  24
     492                 : /* YYNNTS -- Number of nonterminals.  */
     493                 : #define YYNNTS  10
     494                 : /* YYNRULES -- Number of rules.  */
     495                 : #define YYNRULES  30
     496                 : /* YYNRULES -- Number of states.  */
     497                 : #define YYNSTATES  55
     498                 : 
     499                 : /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     500                 : #define YYUNDEFTOK  2
     501                 : #define YYMAXUTOK   278
     502                 : 
     503                 : #define YYTRANSLATE(YYX)                                                \
     504                 :   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
     505                 : 
     506                 : /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
     507                 : static const yytype_uint8 yytranslate[] =
     508                 : {
     509                 :        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     510                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     511                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     512                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     513                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     514                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     515                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     516                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     517                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     518                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     519                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     520                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     521                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     522                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     523                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     524                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     525                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     526                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     527                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     528                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     529                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     530                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     531                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     532                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     533                 :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     534                 :        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
     535                 :        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     536                 :       15,    16,    17,    18,    19,    20,    21,    22,    23
     537                 : };
     538                 : 
     539                 : #if YYDEBUG
     540                 : /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
     541                 :    YYRHS.  */
     542                 : static const yytype_uint8 yyprhs[] =
     543                 : {
     544                 :        0,     0,     3,     5,     8,    10,    13,    18,    20,    22,
     545                 :       25,    28,    31,    34,    37,    41,    45,    49,    53,    55,
     546                 :       57,    60,    64,    66,    67,    70,    73,    77,    79,    81,
     547                 :       85
     548                 : };
     549                 : 
     550                 : /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
     551                 : static const yytype_int8 yyrhs[] =
     552                 : {
     553                 :       25,     0,    -1,    26,    -1,    25,    26,    -1,     1,    -1,
     554                 :       28,     3,    -1,    15,     8,    28,     3,    -1,    27,    -1,
     555                 :        3,    -1,    16,     3,    -1,    18,     3,    -1,    21,     3,
     556                 :       -1,    19,     3,    -1,    20,     3,    -1,    17,    10,     3,
     557                 :       -1,    12,    13,     3,    -1,    22,    13,     3,    -1,    23,
     558                 :       14,     3,    -1,    30,    -1,    32,    -1,    11,    28,    -1,
     559                 :       31,    29,    28,    -1,    14,    -1,    -1,    32,    32,    -1,
     560                 :       30,    32,    -1,     6,     8,     7,    -1,    33,    -1,     8,
     561                 :       -1,     4,    28,     5,    -1,     9,    -1
     562                 : };
     563                 : 
     564                 : /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
     565                 : static const yytype_uint8 yyrline[] =
     566                 : {
     567                 :        0,   139,   139,   140,   141,   146,   154,   160,   161,   165,
     568                 :      166,   167,   168,   169,   170,   171,   172,   173,   177,   178,
     569                 :      179,   188,   199,   200,   204,   205,   209,   214,   215,   221,
     570                 :      225
     571                 : };
     572                 : #endif
     573                 : 
     574                 : #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     575                 : /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
     576                 :    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     577                 : static const char *const yytname[] =
     578                 : {
     579                 :   "$end", "error", "$undefined", "TK_EOL", "TK_LPAREN", "TK_RPAREN",
     580                 :   "TK_LBRACK", "TK_RBRACK", "TK_IDENTIFIER", "TK_PRIMITIVE",
     581                 :   "STRING_LITERAL", "TK_REDUCE", "TK_TIMEOUT", "NUMERICAL_CONSTANT",
     582                 :   "TK_ALGORITHM_NAME", "TK_DEF", "TK_TIME", "TK_LOAD", "TK_ELABORATE",
     583                 :   "TK_TRACE", "TK_SINGLE_STEP", "TK_DEBUG", "TK_MAX_COUNT",
     584                 :   "TK_SET_BRACKET_ABSTRACTION", "$accept", "program", "stmnt",
     585                 :   "interpreter_command", "expression", "abstraction_algorithm",
     586                 :   "application", "bracket_abstraction", "term", "constant", 0
     587                 : };
     588                 : #endif
     589                 : 
     590                 : # ifdef YYPRINT
     591                 : /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
     592                 :    token YYLEX-NUM.  */
     593                 : static const yytype_uint16 yytoknum[] =
     594                 : {
     595                 :        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     596                 :      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     597                 :      275,   276,   277,   278
     598                 : };
     599                 : # endif
     600                 : 
     601                 : /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     602                 : static const yytype_uint8 yyr1[] =
     603                 : {
     604                 :        0,    24,    25,    25,    25,    26,    26,    26,    26,    27,
     605                 :       27,    27,    27,    27,    27,    27,    27,    27,    28,    28,
     606                 :       28,    28,    29,    29,    30,    30,    31,    32,    32,    32,
     607                 :       33
     608                 : };
     609                 : 
     610                 : /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
     611                 : static const yytype_uint8 yyr2[] =
     612                 : {
     613                 :        0,     2,     1,     2,     1,     2,     4,     1,     1,     2,
     614                 :        2,     2,     2,     2,     3,     3,     3,     3,     1,     1,
     615                 :        2,     3,     1,     0,     2,     2,     3,     1,     1,     3,
     616                 :        1
     617                 : };
     618                 : 
     619                 : /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
     620                 :    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
     621                 :    means the default is an error.  */
     622                 : static const yytype_uint8 yydefact[] =
     623                 : {
     624                 :        0,     4,     8,     0,     0,    28,    30,     0,     0,     0,
     625                 :        0,     0,     0,     0,     0,     0,     0,     0,     0,     2,
     626                 :        7,     0,    18,    23,    19,    27,     0,     0,    20,     0,
     627                 :        0,     9,     0,    10,    12,    13,    11,     0,     0,     1,
     628                 :        3,     5,    25,    22,     0,    24,    29,    26,    15,     0,
     629                 :       14,    16,    17,    21,     6
     630                 : };
     631                 : 
     632                 : /* YYDEFGOTO[NTERM-NUM].  */
     633                 : static const yytype_int8 yydefgoto[] =
     634                 : {
     635                 :       -1,    18,    19,    20,    21,    44,    22,    23,    24,    25
     636                 : };
     637                 : 
     638                 : /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     639                 :    STATE-NUM.  */
     640                 : #define YYPACT_NINF -22
     641                 : static const yytype_int8 yypact[] =
     642                 : {
     643                 :       27,   -22,   -22,    47,    -1,   -22,   -22,    47,    -4,     4,
     644                 :       12,     6,    23,    26,    29,    31,    24,    38,     2,   -22,
     645                 :      -22,    37,    53,    40,    53,   -22,    54,    56,   -22,    57,
     646                 :       47,   -22,    61,   -22,   -22,   -22,   -22,    62,    63,   -22,
     647                 :      -22,   -22,   -22,   -22,    47,   -22,   -22,   -22,   -22,    64,
     648                 :      -22,   -22,   -22,   -22,   -22
     649                 : };
     650                 : 
     651                 : /* YYPGOTO[NTERM-NUM].  */
     652                 : static const yytype_int8 yypgoto[] =
     653                 : {
     654                 :      -22,   -22,    50,   -22,    -3,   -22,   -22,   -22,   -21,   -22
     655                 : };
     656                 : 
     657                 : /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
     658                 :    positive, shift that token.  If negative, reduce the rule which
     659                 :    number is the opposite.  If zero, do what YYDEFACT says.
     660                 :    If YYTABLE_NINF, syntax error.  */
     661                 : #define YYTABLE_NINF -1
     662                 : static const yytype_uint8 yytable[] =
     663                 : {
     664                 :       26,    42,    39,    45,    28,     2,     3,    27,     4,    29,
     665                 :        5,     6,    30,     7,     8,    31,    32,     9,    10,    11,
     666                 :       12,    13,    14,    15,    16,    17,    33,    49,     1,    34,
     667                 :        2,     3,    35,     4,    36,     5,     6,    37,     7,     8,
     668                 :       41,    53,     9,    10,    11,    12,    13,    14,    15,    16,
     669                 :       17,     3,    38,     4,    43,     5,     6,     3,     7,    46,
     670                 :       48,     5,     6,    47,    50,    51,    52,    54,    40
     671                 : };
     672                 : 
     673                 : static const yytype_uint8 yycheck[] =
     674                 : {
     675                 :        3,    22,     0,    24,     7,     3,     4,     8,     6,    13,
     676                 :        8,     9,     8,    11,    12,     3,    10,    15,    16,    17,
     677                 :       18,    19,    20,    21,    22,    23,     3,    30,     1,     3,
     678                 :        3,     4,     3,     6,     3,     8,     9,    13,    11,    12,
     679                 :        3,    44,    15,    16,    17,    18,    19,    20,    21,    22,
     680                 :       23,     4,    14,     6,    14,     8,     9,     4,    11,     5,
     681                 :        3,     8,     9,     7,     3,     3,     3,     3,    18
     682                 : };
     683                 : 
     684                 : /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     685                 :    symbol of state STATE-NUM.  */
     686                 : static const yytype_uint8 yystos[] =
     687                 : {
     688                 :        0,     1,     3,     4,     6,     8,     9,    11,    12,    15,
     689                 :       16,    17,    18,    19,    20,    21,    22,    23,    25,    26,
     690                 :       27,    28,    30,    31,    32,    33,    28,     8,    28,    13,
     691                 :        8,     3,    10,     3,     3,     3,     3,    13,    14,     0,
     692                 :       26,     3,    32,    14,    29,    32,     5,     7,     3,    28,
     693                 :        3,     3,     3,    28,     3
     694                 : };
     695                 : 
     696                 : #define yyerrok         (yyerrstatus = 0)
     697                 : #define yyclearin       (yychar = YYEMPTY)
     698                 : #define YYEMPTY         (-2)
     699                 : #define YYEOF           0
     700                 : 
     701                 : #define YYACCEPT        goto yyacceptlab
     702                 : #define YYABORT         goto yyabortlab
     703                 : #define YYERROR         goto yyerrorlab
     704                 : 
     705                 : 
     706                 : /* Like YYERROR except do call yyerror.  This remains here temporarily
     707                 :    to ease the transition to the new meaning of YYERROR, for GCC.
     708                 :    Once GCC version 2 has supplanted version 1, this can go.  */
     709                 : 
     710                 : #define YYFAIL          goto yyerrlab
     711                 : 
     712                 : #define YYRECOVERING()  (!!yyerrstatus)
     713                 : 
     714                 : #define YYBACKUP(Token, Value)                                  \
     715                 : do                                                              \
     716                 :   if (yychar == YYEMPTY && yylen == 1)                          \
     717                 :     {                                                           \
     718                 :       yychar = (Token);                                         \
     719                 :       yylval = (Value);                                         \
     720                 :       yytoken = YYTRANSLATE (yychar);                           \
     721                 :       YYPOPSTACK (1);                                           \
     722                 :       goto yybackup;                                            \
     723                 :     }                                                           \
     724                 :   else                                                          \
     725                 :     {                                                           \
     726                 :       yyerror (YY_("syntax error: cannot back up")); \
     727                 :       YYERROR;                                                  \
     728                 :     }                                                           \
     729                 : while (YYID (0))
     730                 : 
     731                 : 
     732                 : #define YYTERROR        1
     733                 : #define YYERRCODE       256
     734                 : 
     735                 : 
     736                 : /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
     737                 :    If N is 0, then set CURRENT to the empty location which ends
     738                 :    the previous symbol: RHS[0] (always defined).  */
     739                 : 
     740                 : #define YYRHSLOC(Rhs, K) ((Rhs)[K])
     741                 : #ifndef YYLLOC_DEFAULT
     742                 : # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
     743                 :     do                                                                  \
     744                 :       if (YYID (N))                                                    \
     745                 :         {                                                               \
     746                 :           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
     747                 :           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
     748                 :           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
     749                 :           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
     750                 :         }                                                               \
     751                 :       else                                                              \
     752                 :         {                                                               \
     753                 :           (Current).first_line   = (Current).last_line   =              \
     754                 :             YYRHSLOC (Rhs, 0).last_line;                                \
     755                 :           (Current).first_column = (Current).last_column =              \
     756                 :             YYRHSLOC (Rhs, 0).last_column;                              \
     757                 :         }                                                               \
     758                 :     while (YYID (0))
     759                 : #endif
     760                 : 
     761                 : 
     762                 : /* YY_LOCATION_PRINT -- Print the location on the stream.
     763                 :    This macro was not mandated originally: define only if we know
     764                 :    we won't break user code: when these are the locations we know.  */
     765                 : 
     766                 : #ifndef YY_LOCATION_PRINT
     767                 : # if YYLTYPE_IS_TRIVIAL
     768                 : #  define YY_LOCATION_PRINT(File, Loc)                  \
     769                 :      fprintf (File, "%d.%d-%d.%d",                    \
     770                 :               (Loc).first_line, (Loc).first_column,     \
     771                 :               (Loc).last_line,  (Loc).last_column)
     772                 : # else
     773                 : #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
     774                 : # endif
     775                 : #endif
     776                 : 
     777                 : 
     778                 : /* YYLEX -- calling `yylex' with the right arguments.  */
     779                 : 
     780                 : #ifdef YYLEX_PARAM
     781                 : # define YYLEX yylex (YYLEX_PARAM)
     782                 : #else
     783                 : # define YYLEX yylex ()
     784                 : #endif
     785                 : 
     786                 : /* Enable debugging if requested.  */
     787                 : #if YYDEBUG
     788                 : 
     789                 : # ifndef YYFPRINTF
     790                 : #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
     791                 : #  define YYFPRINTF fprintf
     792                 : # endif
     793                 : 
     794                 : # define YYDPRINTF(Args)                        \
     795                 : do {                                            \
     796                 :   if (yydebug)                                  \
     797                 :     YYFPRINTF Args;                             \
     798                 : } while (YYID (0))
     799                 : 
     800                 : # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
     801                 : do {                                                                      \
     802                 :   if (yydebug)                                                            \
     803                 :     {                                                                     \
     804                 :       YYFPRINTF (stderr, "%s ", Title);                                         \
     805                 :       yy_symbol_print (stderr,                                            \
     806                 :                   Type, Value); \
     807                 :       YYFPRINTF (stderr, "\n");                                                 \
     808                 :     }                                                                     \
     809                 : } while (YYID (0))
     810                 : 
     811                 : 
     812                 : /*--------------------------------.
     813                 : | Print this symbol on YYOUTPUT.  |
     814                 : `--------------------------------*/
     815                 : 
     816                 : /*ARGSUSED*/
     817                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     818                 :      || defined __cplusplus || defined _MSC_VER)
     819                 : static void
     820                 : yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
     821                 : #else
     822                 : static void
     823                 : yy_symbol_value_print (yyoutput, yytype, yyvaluep)
     824                 :     FILE *yyoutput;
     825                 :     int yytype;
     826                 :     YYSTYPE const * const yyvaluep;
     827                 : #endif
     828                 : {
     829                 :   if (!yyvaluep)
     830                 :     return;
     831                 : # ifdef YYPRINT
     832                 :   if (yytype < YYNTOKENS)
     833                 :     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
     834                 : # else
     835                 :   YYUSE (yyoutput);
     836                 : # endif
     837                 :   switch (yytype)
     838                 :     {
     839                 :       default:
     840                 :         break;
     841                 :     }
     842                 : }
     843                 : 
     844                 : 
     845                 : /*--------------------------------.
     846                 : | Print this symbol on YYOUTPUT.  |
     847                 : `--------------------------------*/
     848                 : 
     849                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     850                 :      || defined __cplusplus || defined _MSC_VER)
     851                 : static void
     852                 : yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
     853                 : #else
     854                 : static void
     855                 : yy_symbol_print (yyoutput, yytype, yyvaluep)
     856                 :     FILE *yyoutput;
     857                 :     int yytype;
     858                 :     YYSTYPE const * const yyvaluep;
     859                 : #endif
     860                 : {
     861                 :   if (yytype < YYNTOKENS)
     862                 :     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
     863                 :   else
     864                 :     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
     865                 : 
     866                 :   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
     867                 :   YYFPRINTF (yyoutput, ")");
     868                 : }
     869                 : 
     870                 : /*------------------------------------------------------------------.
     871                 : | yy_stack_print -- Print the state stack from its BOTTOM up to its |
     872                 : | TOP (included).                                                   |
     873                 : `------------------------------------------------------------------*/
     874                 : 
     875                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     876                 :      || defined __cplusplus || defined _MSC_VER)
     877                 : static void
     878                 : yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
     879                 : #else
     880                 : static void
     881                 : yy_stack_print (bottom, top)
     882                 :     yytype_int16 *bottom;
     883                 :     yytype_int16 *top;
     884                 : #endif
     885                 : {
     886                 :   YYFPRINTF (stderr, "Stack now");
     887                 :   for (; bottom <= top; ++bottom)
     888                 :     YYFPRINTF (stderr, " %d", *bottom);
     889                 :   YYFPRINTF (stderr, "\n");
     890                 : }
     891                 : 
     892                 : # define YY_STACK_PRINT(Bottom, Top)                            \
     893                 : do {                                                            \
     894                 :   if (yydebug)                                                  \
     895                 :     yy_stack_print ((Bottom), (Top));                           \
     896                 : } while (YYID (0))
     897                 : 
     898                 : 
     899                 : /*------------------------------------------------.
     900                 : | Report that the YYRULE is going to be reduced.  |
     901                 : `------------------------------------------------*/
     902                 : 
     903                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     904                 :      || defined __cplusplus || defined _MSC_VER)
     905                 : static void
     906                 : yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
     907                 : #else
     908                 : static void
     909                 : yy_reduce_print (yyvsp, yyrule)
     910                 :     YYSTYPE *yyvsp;
     911                 :     int yyrule;
     912                 : #endif
     913                 : {
     914                 :   int yynrhs = yyr2[yyrule];
     915                 :   int yyi;
     916                 :   unsigned long int yylno = yyrline[yyrule];
     917                 :   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
     918                 :              yyrule - 1, yylno);
     919                 :   /* The symbols being reduced.  */
     920                 :   for (yyi = 0; yyi < yynrhs; yyi++)
     921                 :     {
     922                 :       fprintf (stderr, "   $%d = ", yyi + 1);
     923                 :       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
     924                 :                        &(yyvsp[(yyi + 1) - (yynrhs)])
     925                 :                                        );
     926                 :       fprintf (stderr, "\n");
     927                 :     }
     928                 : }
     929                 : 
     930                 : # define YY_REDUCE_PRINT(Rule)          \
     931                 : do {                                    \
     932                 :   if (yydebug)                          \
     933                 :     yy_reduce_print (yyvsp, Rule); \
     934                 : } while (YYID (0))
     935                 : 
     936                 : /* Nonzero means print parse trace.  It is left uninitialized so that
     937                 :    multiple parsers can coexist.  */
     938                 : int yydebug;
     939                 : #else /* !YYDEBUG */
     940                 : # define YYDPRINTF(Args)
     941                 : # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
     942                 : # define YY_STACK_PRINT(Bottom, Top)
     943                 : # define YY_REDUCE_PRINT(Rule)
     944                 : #endif /* !YYDEBUG */
     945                 : 
     946                 : 
     947                 : /* YYINITDEPTH -- initial size of the parser's stacks.  */
     948                 : #ifndef YYINITDEPTH
     949                 : # define YYINITDEPTH 200
     950                 : #endif
     951                 : 
     952                 : /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
     953                 :    if the built-in stack extension method is used).
     954                 : 
     955                 :    Do not make this value too large; the results are undefined if
     956                 :    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
     957                 :    evaluated with infinite-precision integer arithmetic.  */
     958                 : 
     959                 : #ifndef YYMAXDEPTH
     960                 : # define YYMAXDEPTH 10000
     961                 : #endif
     962                 : 
     963                 : 
     964                 : 
     965                 : #if YYERROR_VERBOSE
     966                 : 
     967                 : # ifndef yystrlen
     968                 : #  if defined __GLIBC__ && defined _STRING_H
     969                 : #   define yystrlen strlen
     970                 : #  else
     971                 : /* Return the length of YYSTR.  */
     972                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     973                 :      || defined __cplusplus || defined _MSC_VER)
     974                 : static YYSIZE_T
     975                 : yystrlen (const char *yystr)
     976                 : #else
     977                 : static YYSIZE_T
     978                 : yystrlen (yystr)
     979                 :     const char *yystr;
     980                 : #endif
     981                 : {
     982                 :   YYSIZE_T yylen;
     983                 :   for (yylen = 0; yystr[yylen]; yylen++)
     984                 :     continue;
     985                 :   return yylen;
     986                 : }
     987                 : #  endif
     988                 : # endif
     989                 : 
     990                 : # ifndef yystpcpy
     991                 : #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
     992                 : #   define yystpcpy stpcpy
     993                 : #  else
     994                 : /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
     995                 :    YYDEST.  */
     996                 : #if (defined __STDC__ || defined __C99__FUNC__ \
     997                 :      || defined __cplusplus || defined _MSC_VER)
     998                 : static char *
     999                 : yystpcpy (char *yydest, const char *yysrc)
    1000                 : #else
    1001                 : static char *
    1002                 : yystpcpy (yydest, yysrc)
    1003                 :     char *yydest;
    1004                 :     const char *yysrc;
    1005                 : #endif
    1006              11 : {
    1007              11 :   char *yyd = yydest;
    1008              11 :   const char *yys = yysrc;
    1009                 : 
    1010             138 :   while ((*yyd++ = *yys++) != '\0')
    1011                 :     continue;
    1012                 : 
    1013              11 :   return yyd - 1;
    1014                 : }
    1015                 : #  endif
    1016                 : # endif
    1017                 : 
    1018                 : # ifndef yytnamerr
    1019                 : /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
    1020                 :    quotes and backslashes, so that it's suitable for yyerror.  The
    1021                 :    heuristic is that double-quoting is unnecessary unless the string
    1022                 :    contains an apostrophe, a comma, or backslash (other than
    1023                 :    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    1024                 :    null, do not copy; instead, return the length of what the result
    1025                 :    would have been.  */
    1026                 : static YYSIZE_T
    1027                 : yytnamerr (char *yyres, const char *yystr)
    1028              11 : {
    1029              11 :   if (*yystr == '"')
    1030                 :     {
    1031               0 :       YYSIZE_T yyn = 0;
    1032               0 :       char const *yyp = yystr;
    1033                 : 
    1034                 :       for (;;)
    1035               0 :         switch (*++yyp)
    1036                 :           {
    1037                 :           case '\'':
    1038                 :           case ',':
    1039               0 :             goto do_not_strip_quotes;
    1040                 : 
    1041                 :           case '\\':
    1042               0 :             if (*++yyp != '\\')
    1043               0 :               goto do_not_strip_quotes;
    1044                 :             /* Fall through.  */
    1045                 :           default:
    1046               0 :             if (yyres)
    1047               0 :               yyres[yyn] = *yyp;
    1048               0 :             yyn++;
    1049                 :             break;
    1050                 : 
    1051                 :           case '"':
    1052               0 :             if (yyres)
    1053               0 :               yyres[yyn] = '\0';
    1054               0 :             return yyn;
    1055               0 :           }
    1056              11 :     do_not_strip_quotes: ;
    1057                 :     }
    1058                 : 
    1059              11 :   if (! yyres)
    1060              10 :     return yystrlen (yystr);
    1061                 : 
    1062               1 :   return yystpcpy (yyres, yystr) - yyres;
    1063                 : }
    1064                 : # endif
    1065                 : 
    1066                 : /* Copy into YYRESULT an error message about the unexpected token
    1067                 :    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
    1068                 :    including the terminating null byte.  If YYRESULT is null, do not
    1069                 :    copy anything; just return the number of bytes that would be
    1070                 :    copied.  As a special case, return 0 if an ordinary "syntax error"
    1071                 :    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
    1072                 :    size calculation.  */
    1073                 : static YYSIZE_T
    1074                 : yysyntax_error (char *yyresult, int yystate, int yychar)
    1075               2 : {
    1076               2 :   int yyn = yypact[yystate];
    1077                 : 
    1078               2 :   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
    1079               0 :     return 0;
    1080                 :   else
    1081                 :     {
    1082               2 :       int yytype = YYTRANSLATE (yychar);
    1083               2 :       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
    1084               2 :       YYSIZE_T yysize = yysize0;
    1085                 :       YYSIZE_T yysize1;
    1086               2 :       int yysize_overflow = 0;
    1087                 :       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    1088                 :       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
    1089                 :       int yyx;
    1090                 : 
    1091                 : # if 0
    1092                 :       /* This is so xgettext sees the translatable formats that are
    1093                 :          constructed on the fly.  */
    1094                 :       YY_("syntax error, unexpected %s");
    1095                 :       YY_("syntax error, unexpected %s, expecting %s");
    1096                 :       YY_("syntax error, unexpected %s, expecting %s or %s");
    1097                 :       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
    1098                 :       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
    1099                 : # endif
    1100                 :       char *yyfmt;
    1101                 :       char const *yyf;
    1102                 :       static char const yyunexpected[] = "syntax error, unexpected %s";
    1103                 :       static char const yyexpecting[] = ", expecting %s";
    1104                 :       static char const yyor[] = " or %s";
    1105                 :       char yyformat[sizeof yyunexpected
    1106                 :                     + sizeof yyexpecting - 1
    1107                 :                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
    1108                 :                        * (sizeof yyor - 1))];
    1109               2 :       char const *yyprefix = yyexpecting;
    1110                 : 
    1111                 :       /* Start YYX at -YYN if negative to avoid negative indexes in
    1112                 :          YYCHECK.  */
    1113               2 :       int yyxbegin = yyn < 0 ? -yyn : 0;
    1114                 : 
    1115                 :       /* Stay within bounds of both yycheck and yytname.  */
    1116               2 :       int yychecklim = YYLAST - yyn + 1;
    1117               2 :       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
    1118               2 :       int yycount = 1;
    1119                 : 
    1120               2 :       yyarg[0] = yytname[yytype];
    1121               2 :       yyfmt = yystpcpy (yyformat, yyunexpected);
    1122                 : 
    1123              24 :       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
    1124              24 :         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
    1125                 :           {
    1126              10 :             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
    1127                 :               {
    1128               2 :                 yycount = 1;
    1129               2 :                 yysize = yysize0;
    1130               2 :                 yyformat[sizeof yyunexpected - 1] = '\0';
    1131               2 :                 break;
    1132                 :               }
    1133               8 :             yyarg[yycount++] = yytname[yyx];
    1134               8 :             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
    1135               8 :             yysize_overflow |= (yysize1 < yysize);
    1136               8 :             yysize = yysize1;
    1137               8 :             yyfmt = yystpcpy (yyfmt, yyprefix);
    1138               8 :             yyprefix = yyor;
    1139                 :           }
    1140                 : 
    1141               2 :       yyf = YY_(yyformat);
    1142               2 :       yysize1 = yysize + yystrlen (yyf);
    1143               2 :       yysize_overflow |= (yysize1 < yysize);
    1144               2 :       yysize = yysize1;
    1145                 : 
    1146               2 :       if (yysize_overflow)
    1147               0 :         return YYSIZE_MAXIMUM;
    1148                 : 
    1149               2 :       if (yyresult)
    1150                 :         {
    1151                 :           /* Avoid sprintf, as that infringes on the user's name space.
    1152                 :              Don't have undefined behavior even if the translation
    1153                 :              produced a string with the wrong number of "%s"s.  */
    1154               1 :           char *yyp = yyresult;
    1155               1 :           int yyi = 0;
    1156              28 :           while ((*yyp = *yyf) != '\0')
    1157                 :             {
    1158              27 :               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
    1159                 :                 {
    1160               1 :                   yyp += yytnamerr (yyp, yyarg[yyi++]);
    1161               1 :                   yyf += 2;
    1162                 :                 }
    1163                 :               else
    1164                 :                 {
    1165              25 :                   yyp++;
    1166              25 :                   yyf++;
    1167                 :                 }
    1168                 :             }
    1169                 :         }
    1170               2 :       return yysize;
    1171                 :     }
    1172                 : }
    1173                 : #endif /* YYERROR_VERBOSE */
    1174                 : 
    1175                 : 
    1176                 : /*-----------------------------------------------.
    1177                 : | Release the memory associated to this symbol.  |
    1178                 : `-----------------------------------------------*/
    1179                 : 
    1180                 : /*ARGSUSED*/
    1181                 : #if (defined __STDC__ || defined __C99__FUNC__ \
    1182                 :      || defined __cplusplus || defined _MSC_VER)
    1183                 : static void
    1184                 : yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
    1185                 : #else
    1186                 : static void
    1187                 : yydestruct (yymsg, yytype, yyvaluep)
    1188                 :     const char *yymsg;
    1189                 :     int yytype;
    1190                 :     YYSTYPE *yyvaluep;
    1191                 : #endif
    1192              61 : {
    1193                 :   YYUSE (yyvaluep);
    1194                 : 
    1195              61 :   if (!yymsg)
    1196               0 :     yymsg = "Deleting";
    1197                 :   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    1198                 : 
    1199                 :   switch (yytype)
    1200                 :     {
    1201                 : 
    1202                 :       default:
    1203                 :         break;
    1204                 :     }
    1205              61 : }
    1206                 : 
    1207                 : 
    1208                 : /* Prevent warnings from -Wmissing-prototypes.  */
    1209                 : 
    1210                 : #ifdef YYPARSE_PARAM
    1211                 : #if defined __STDC__ || defined __cplusplus
    1212                 : int yyparse (void *YYPARSE_PARAM);
    1213                 : #else
    1214                 : int yyparse ();
    1215                 : #endif
    1216                 : #else /* ! YYPARSE_PARAM */
    1217                 : #if defined __STDC__ || defined __cplusplus
    1218                 : int yyparse (void);
    1219                 : #else
    1220                 : int yyparse ();
    1221                 : #endif
    1222                 : #endif /* ! YYPARSE_PARAM */
    1223                 : 
    1224                 : 
    1225                 : 
    1226                 : /* The look-ahead symbol.  */
    1227                 : int yychar;
    1228                 : 
    1229                 : /* The semantic value of the look-ahead symbol.  */
    1230                 : YYSTYPE yylval;
    1231                 : 
    1232                 : /* Number of syntax errors so far.  */
    1233                 : int yynerrs;
    1234                 : 
    1235                 : 
    1236                 : 
    1237                 : /*----------.
    1238                 : | yyparse.  |
    1239                 : `----------*/
    1240                 : 
    1241                 : #ifdef YYPARSE_PARAM
    1242                 : #if (defined __STDC__ || defined __C99__FUNC__ \
    1243                 :      || defined __cplusplus || defined _MSC_VER)
    1244                 : int
    1245                 : yyparse (void *YYPARSE_PARAM)
    1246                 : #else
    1247                 : int
    1248                 : yyparse (YYPARSE_PARAM)
    1249                 :     void *YYPARSE_PARAM;
    1250                 : #endif
    1251                 : #else /* ! YYPARSE_PARAM */
    1252                 : #if (defined __STDC__ || defined __C99__FUNC__ \
    1253                 :      || defined __cplusplus || defined _MSC_VER)
    1254                 : int
    1255                 : yyparse (void)
    1256                 : #else
    1257                 : int
    1258                 : yyparse ()
    1259                 : 
    1260                 : #endif
    1261                 : #endif
    1262              56 : {
    1263                 :   
    1264                 :   int yystate;
    1265                 :   int yyn;
    1266                 :   int yyresult;
    1267                 :   /* Number of tokens to shift before error messages enabled.  */
    1268                 :   int yyerrstatus;
    1269                 :   /* Look-ahead token as an internal (translated) token number.  */
    1270              56 :   int yytoken = 0;
    1271                 : #if YYERROR_VERBOSE
    1272                 :   /* Buffer for error messages, and its allocated size.  */
    1273                 :   char yymsgbuf[128];
    1274              56 :   char *yymsg = yymsgbuf;
    1275              56 :   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
    1276                 : #endif
    1277                 : 
    1278                 :   /* Three stacks and their tools:
    1279                 :      `yyss': related to states,
    1280                 :      `yyvs': related to semantic values,
    1281                 :      `yyls': related to locations.
    1282                 : 
    1283                 :      Refer to the stacks thru separate pointers, to allow yyoverflow
    1284                 :      to reallocate them elsewhere.  */
    1285                 : 
    1286                 :   /* The state stack.  */
    1287                 :   yytype_int16 yyssa[YYINITDEPTH];
    1288              56 :   yytype_int16 *yyss = yyssa;
    1289                 :   yytype_int16 *yyssp;
    1290                 : 
    1291                 :   /* The semantic value stack.  */
    1292                 :   YYSTYPE yyvsa[YYINITDEPTH];
    1293              56 :   YYSTYPE *yyvs = yyvsa;
    1294                 :   YYSTYPE *yyvsp;
    1295                 : 
    1296                 : 
    1297                 : 
    1298                 : #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
    1299                 : 
    1300              56 :   YYSIZE_T yystacksize = YYINITDEPTH;
    1301                 : 
    1302                 :   /* The variables used to return semantic value and location from the
    1303                 :      action routines.  */
    1304                 :   YYSTYPE yyval;
    1305                 : 
    1306                 : 
    1307                 :   /* The number of symbols on the RHS of the reduced rule.
    1308                 :      Keep to zero when no symbol should be popped.  */
    1309              56 :   int yylen = 0;
    1310                 : 
    1311                 :   YYDPRINTF ((stderr, "Starting parse\n"));
    1312                 : 
    1313              56 :   yystate = 0;
    1314              56 :   yyerrstatus = 0;
    1315              56 :   yynerrs = 0;
    1316              56 :   yychar = YYEMPTY;             /* Cause a token to be read.  */
    1317                 : 
    1318                 :   /* Initialize stack pointers.
    1319                 :      Waste one element of value and location stack
    1320                 :      so that they stay on the same level as the state stack.
    1321                 :      The wasted elements are never initialized.  */
    1322                 : 
    1323              56 :   yyssp = yyss;
    1324              56 :   yyvsp = yyvs;
    1325                 : 
    1326              56 :   goto yysetstate;
    1327                 : 
    1328                 : /*------------------------------------------------------------.
    1329                 : | yynewstate -- Push a new state, which is found in yystate.  |
    1330                 : `------------------------------------------------------------*/
    1331           12308 :  yynewstate:
    1332                 :   /* In all cases, when you get here, the value and location stacks
    1333                 :      have just been pushed.  So pushing a state here evens the stacks.  */
    1334           12308 :   yyssp++;
    1335                 : 
    1336           12364 :  yysetstate:
    1337           12364 :   *yyssp = yystate;
    1338                 : 
    1339           12364 :   if (yyss + yystacksize - 1 <= yyssp)
    1340                 :     {
    1341                 :       /* Get the current used size of the three stacks, in elements.  */
    1342               0 :       YYSIZE_T yysize = yyssp - yyss + 1;
    1343                 : 
    1344                 : #ifdef yyoverflow
    1345                 :       {
    1346                 :         /* Give user a chance to reallocate the stack.  Use copies of
    1347                 :            these so that the &'s don't force the real ones into
    1348                 :            memory.  */
    1349                 :         YYSTYPE *yyvs1 = yyvs;
    1350                 :         yytype_int16 *yyss1 = yyss;
    1351                 : 
    1352                 : 
    1353                 :         /* Each stack pointer address is followed by the size of the
    1354                 :            data in use in that stack, in bytes.  This used to be a
    1355                 :            conditional around just the two extra args, but that might
    1356                 :            be undefined if yyoverflow is a macro.  */
    1357                 :         yyoverflow (YY_("memory exhausted"),
    1358                 :                     &yyss1, yysize * sizeof (*yyssp),
    1359                 :                     &yyvs1, yysize * sizeof (*yyvsp),
    1360                 : 
    1361                 :                     &yystacksize);
    1362                 : 
    1363                 :         yyss = yyss1;
    1364                 :         yyvs = yyvs1;
    1365                 :       }
    1366                 : #else /* no yyoverflow */
    1367                 : # ifndef YYSTACK_RELOCATE
    1368                 :       goto yyexhaustedlab;
    1369                 : # else
    1370                 :       /* Extend the stack our own way.  */
    1371               0 :       if (YYMAXDEPTH <= yystacksize)
    1372               0 :         goto yyexhaustedlab;
    1373               0 :       yystacksize *= 2;
    1374               0 :       if (YYMAXDEPTH < yystacksize)
    1375               0 :         yystacksize = YYMAXDEPTH;
    1376                 : 
    1377                 :       {
    1378               0 :         yytype_int16 *yyss1 = yyss;
    1379                 :         union yyalloc *yyptr =
    1380               0 :           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
    1381               0 :         if (! yyptr)
    1382               0 :           goto yyexhaustedlab;
    1383               0 :         YYSTACK_RELOCATE (yyss);
    1384               0 :         YYSTACK_RELOCATE (yyvs);
    1385                 : 
    1386                 : #  undef YYSTACK_RELOCATE
    1387               0 :         if (yyss1 != yyssa)
    1388               0 :           YYSTACK_FREE (yyss1);
    1389                 :       }
    1390                 : # endif
    1391                 : #endif /* no yyoverflow */
    1392                 : 
    1393               0 :       yyssp = yyss + yysize - 1;
    1394               0 :       yyvsp = yyvs + yysize - 1;
    1395                 : 
    1396                 : 
    1397                 :       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    1398                 :                   (unsigned long int) yystacksize));
    1399                 : 
    1400               0 :       if (yyss + yystacksize - 1 <= yyssp)
    1401               0 :         YYABORT;
    1402                 :     }
    1403                 : 
    1404                 :   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
    1405                 : 
    1406                 :   goto yybackup;
    1407                 : 
    1408                 : /*-----------.
    1409                 : | yybackup.  |
    1410                 : `-----------*/
    1411           12364 : yybackup:
    1412                 : 
    1413                 :   /* Do appropriate processing given the current state.  Read a
    1414                 :      look-ahead token if we need one and don't already have one.  */
    1415                 : 
    1416                 :   /* First try to decide what to do without reference to look-ahead token.  */
    1417           12364 :   yyn = yypact[yystate];
    1418           12364 :   if (yyn == YYPACT_NINF)
    1419            6586 :     goto yydefault;
    1420                 : 
    1421                 :   /* Not known => get a look-ahead token if don't already have one.  */
    1422                 : 
    1423                 :   /* YYCHAR is either YY