Blame bc/bc.c

Packit 70b277
/* A Bison parser, made by GNU Bison 3.0.2.  */
Packit 70b277
Packit 70b277
/* Bison implementation for Yacc-like parsers in C
Packit 70b277
Packit 70b277
   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
Packit 70b277
Packit 70b277
   This program is free software: you can redistribute it and/or modify
Packit 70b277
   it under the terms of the GNU General Public License as published by
Packit 70b277
   the Free Software Foundation, either version 3 of the License, or
Packit 70b277
   (at your option) any later version.
Packit 70b277
Packit 70b277
   This program is distributed in the hope that it will be useful,
Packit 70b277
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 70b277
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 70b277
   GNU General Public License for more details.
Packit 70b277
Packit 70b277
   You should have received a copy of the GNU General Public License
Packit 70b277
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit 70b277
Packit 70b277
/* As a special exception, you may create a larger work that contains
Packit 70b277
   part or all of the Bison parser skeleton and distribute that work
Packit 70b277
   under terms of your choice, so long as that work isn't itself a
Packit 70b277
   parser generator using the skeleton or a modified version thereof
Packit 70b277
   as a parser skeleton.  Alternatively, if you modify or redistribute
Packit 70b277
   the parser skeleton itself, you may (at your option) remove this
Packit 70b277
   special exception, which will cause the skeleton and the resulting
Packit 70b277
   Bison output files to be licensed under the GNU General Public
Packit 70b277
   License without this special exception.
Packit 70b277
Packit 70b277
   This special exception was added by the Free Software Foundation in
Packit 70b277
   version 2.2 of Bison.  */
Packit 70b277
Packit 70b277
/* C LALR(1) parser skeleton written by Richard Stallman, by
Packit 70b277
   simplifying the original so-called "semantic" parser.  */
Packit 70b277
Packit 70b277
/* All symbols defined below should begin with yy or YY, to avoid
Packit 70b277
   infringing on user name space.  This should be done even for local
Packit 70b277
   variables, as they might otherwise be expanded by user macros.
Packit 70b277
   There are some unavoidable exceptions within include files to
Packit 70b277
   define necessary library symbols; they are noted "INFRINGES ON
Packit 70b277
   USER NAME SPACE" below.  */
Packit 70b277
Packit 70b277
/* Identify Bison output.  */
Packit 70b277
#define YYBISON 1
Packit 70b277
Packit 70b277
/* Bison version.  */
Packit 70b277
#define YYBISON_VERSION "3.0.2"
Packit 70b277
Packit 70b277
/* Skeleton name.  */
Packit 70b277
#define YYSKELETON_NAME "yacc.c"
Packit 70b277
Packit 70b277
/* Pure parsers.  */
Packit 70b277
#define YYPURE 0
Packit 70b277
Packit 70b277
/* Push parsers.  */
Packit 70b277
#define YYPUSH 0
Packit 70b277
Packit 70b277
/* Pull parsers.  */
Packit 70b277
#define YYPULL 1
Packit 70b277
Packit 70b277
Packit 70b277
Packit 70b277
Packit 70b277
/* Copy the first part of user declarations.  */
Packit 70b277
#line 31 "../../bc/bc.y" /* yacc.c:339  */
Packit 70b277
Packit 70b277
Packit 70b277
#include "bcdefs.h"
Packit 70b277
#include "global.h"
Packit 70b277
#include "proto.h"
Packit 70b277
Packit 70b277
/* current function number. */
Packit 70b277
int cur_func = -1;
Packit 70b277
Packit 70b277
/* Expression encoded information -- See comment at expression rules. */
Packit 70b277
#define EX_ASSGN 0 
Packit 70b277
#define EX_REG   1
Packit 70b277
#define EX_COMP  2
Packit 70b277
#define EX_PAREN 4
Packit 70b277
#define EX_VOID  8 
Packit 70b277
#define EX_EMPTY 16
Packit 70b277
Packit 70b277
Packit 70b277
#line 85 "bc.c" /* yacc.c:339  */
Packit 70b277
Packit 70b277
# ifndef YY_NULLPTR
Packit 70b277
#  if defined __cplusplus && 201103L <= __cplusplus
Packit 70b277
#   define YY_NULLPTR nullptr
Packit 70b277
#  else
Packit 70b277
#   define YY_NULLPTR 0
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
Packit 70b277
/* Enabling verbose error messages.  */
Packit 70b277
#ifdef YYERROR_VERBOSE
Packit 70b277
# undef YYERROR_VERBOSE
Packit 70b277
# define YYERROR_VERBOSE 1
Packit 70b277
#else
Packit 70b277
# define YYERROR_VERBOSE 0
Packit 70b277
#endif
Packit 70b277
Packit 70b277
/* In a future release of Bison, this section will be replaced
Packit 70b277
   by #include "y.tab.h".  */
Packit 70b277
#ifndef YY_YY_BC_H_INCLUDED
Packit 70b277
# define YY_YY_BC_H_INCLUDED
Packit 70b277
/* Debug traces.  */
Packit 70b277
#ifndef YYDEBUG
Packit 70b277
# define YYDEBUG 0
Packit 70b277
#endif
Packit 70b277
#if YYDEBUG
Packit 70b277
extern int yydebug;
Packit 70b277
#endif
Packit 70b277
Packit 70b277
/* Token type.  */
Packit 70b277
#ifndef YYTOKENTYPE
Packit 70b277
# define YYTOKENTYPE
Packit 70b277
  enum yytokentype
Packit 70b277
  {
Packit 70b277
    ENDOFLINE = 258,
Packit 70b277
    AND = 259,
Packit 70b277
    OR = 260,
Packit 70b277
    NOT = 261,
Packit 70b277
    STRING = 262,
Packit 70b277
    NAME = 263,
Packit 70b277
    NUMBER = 264,
Packit 70b277
    ASSIGN_OP = 265,
Packit 70b277
    REL_OP = 266,
Packit 70b277
    INCR_DECR = 267,
Packit 70b277
    Define = 268,
Packit 70b277
    Break = 269,
Packit 70b277
    Quit = 270,
Packit 70b277
    Length = 271,
Packit 70b277
    Return = 272,
Packit 70b277
    For = 273,
Packit 70b277
    If = 274,
Packit 70b277
    While = 275,
Packit 70b277
    Sqrt = 276,
Packit 70b277
    Else = 277,
Packit 70b277
    Scale = 278,
Packit 70b277
    Ibase = 279,
Packit 70b277
    Obase = 280,
Packit 70b277
    Auto = 281,
Packit 70b277
    Read = 282,
Packit 70b277
    Random = 283,
Packit 70b277
    Warranty = 284,
Packit 70b277
    Halt = 285,
Packit 70b277
    Last = 286,
Packit 70b277
    Continue = 287,
Packit 70b277
    Print = 288,
Packit 70b277
    Limits = 289,
Packit 70b277
    UNARY_MINUS = 290,
Packit 70b277
    HistoryVar = 291,
Packit 70b277
    Void = 292
Packit 70b277
  };
Packit 70b277
#endif
Packit 70b277
/* Tokens.  */
Packit 70b277
#define ENDOFLINE 258
Packit 70b277
#define AND 259
Packit 70b277
#define OR 260
Packit 70b277
#define NOT 261
Packit 70b277
#define STRING 262
Packit 70b277
#define NAME 263
Packit 70b277
#define NUMBER 264
Packit 70b277
#define ASSIGN_OP 265
Packit 70b277
#define REL_OP 266
Packit 70b277
#define INCR_DECR 267
Packit 70b277
#define Define 268
Packit 70b277
#define Break 269
Packit 70b277
#define Quit 270
Packit 70b277
#define Length 271
Packit 70b277
#define Return 272
Packit 70b277
#define For 273
Packit 70b277
#define If 274
Packit 70b277
#define While 275
Packit 70b277
#define Sqrt 276
Packit 70b277
#define Else 277
Packit 70b277
#define Scale 278
Packit 70b277
#define Ibase 279
Packit 70b277
#define Obase 280
Packit 70b277
#define Auto 281
Packit 70b277
#define Read 282
Packit 70b277
#define Random 283
Packit 70b277
#define Warranty 284
Packit 70b277
#define Halt 285
Packit 70b277
#define Last 286
Packit 70b277
#define Continue 287
Packit 70b277
#define Print 288
Packit 70b277
#define Limits 289
Packit 70b277
#define UNARY_MINUS 290
Packit 70b277
#define HistoryVar 291
Packit 70b277
#define Void 292
Packit 70b277
Packit 70b277
/* Value type.  */
Packit 70b277
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
Packit 70b277
typedef union YYSTYPE YYSTYPE;
Packit 70b277
union YYSTYPE
Packit 70b277
{
Packit 70b277
#line 52 "../../bc/bc.y" /* yacc.c:355  */
Packit 70b277
Packit 70b277
	char	 *s_value;
Packit 70b277
	char	  c_value;
Packit 70b277
	int	  i_value;
Packit 70b277
	arg_list *a_value;
Packit 70b277
       
Packit 70b277
Packit 70b277
#line 207 "bc.c" /* yacc.c:355  */
Packit 70b277
};
Packit 70b277
# define YYSTYPE_IS_TRIVIAL 1
Packit 70b277
# define YYSTYPE_IS_DECLARED 1
Packit 70b277
#endif
Packit 70b277
Packit 70b277
Packit 70b277
extern YYSTYPE yylval;
Packit 70b277
Packit 70b277
int yyparse (void);
Packit 70b277
Packit 70b277
#endif /* !YY_YY_BC_H_INCLUDED  */
Packit 70b277
Packit 70b277
/* Copy the second part of user declarations.  */
Packit 70b277
Packit 70b277
#line 222 "bc.c" /* yacc.c:358  */
Packit 70b277
Packit 70b277
#ifdef short
Packit 70b277
# undef short
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifdef YYTYPE_UINT8
Packit 70b277
typedef YYTYPE_UINT8 yytype_uint8;
Packit 70b277
#else
Packit 70b277
typedef unsigned char yytype_uint8;
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifdef YYTYPE_INT8
Packit 70b277
typedef YYTYPE_INT8 yytype_int8;
Packit 70b277
#else
Packit 70b277
typedef signed char yytype_int8;
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifdef YYTYPE_UINT16
Packit 70b277
typedef YYTYPE_UINT16 yytype_uint16;
Packit 70b277
#else
Packit 70b277
typedef unsigned short int yytype_uint16;
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifdef YYTYPE_INT16
Packit 70b277
typedef YYTYPE_INT16 yytype_int16;
Packit 70b277
#else
Packit 70b277
typedef short int yytype_int16;
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifndef YYSIZE_T
Packit 70b277
# ifdef __SIZE_TYPE__
Packit 70b277
#  define YYSIZE_T __SIZE_TYPE__
Packit 70b277
# elif defined size_t
Packit 70b277
#  define YYSIZE_T size_t
Packit 70b277
# elif ! defined YYSIZE_T
Packit 70b277
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#  define YYSIZE_T size_t
Packit 70b277
# else
Packit 70b277
#  define YYSIZE_T unsigned int
Packit 70b277
# endif
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
Packit 70b277
Packit 70b277
#ifndef YY_
Packit 70b277
# if defined YYENABLE_NLS && YYENABLE_NLS
Packit 70b277
#  if ENABLE_NLS
Packit 70b277
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
# ifndef YY_
Packit 70b277
#  define YY_(Msgid) Msgid
Packit 70b277
# endif
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifndef YY_ATTRIBUTE
Packit 70b277
# if (defined __GNUC__                                               \
Packit 70b277
      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
Packit 70b277
     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
Packit 70b277
#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
Packit 70b277
# else
Packit 70b277
#  define YY_ATTRIBUTE(Spec) /* empty */
Packit 70b277
# endif
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifndef YY_ATTRIBUTE_PURE
Packit 70b277
# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#ifndef YY_ATTRIBUTE_UNUSED
Packit 70b277
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#if !defined _Noreturn \
Packit 70b277
     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
Packit 70b277
# if defined _MSC_VER && 1200 <= _MSC_VER
Packit 70b277
#  define _Noreturn __declspec (noreturn)
Packit 70b277
# else
Packit 70b277
#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
Packit 70b277
# endif
Packit 70b277
#endif
Packit 70b277
Packit 70b277
/* Suppress unused-variable warnings by "using" E.  */
Packit 70b277
#if ! defined lint || defined __GNUC__
Packit 70b277
# define YYUSE(E) ((void) (E))
Packit 70b277
#else
Packit 70b277
# define YYUSE(E) /* empty */
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
Packit 70b277
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
Packit 70b277
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
Packit 70b277
    _Pragma ("GCC diagnostic push") \
Packit 70b277
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
Packit 70b277
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
Packit 70b277
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
Packit 70b277
    _Pragma ("GCC diagnostic pop")
Packit 70b277
#else
Packit 70b277
# define YY_INITIAL_VALUE(Value) Value
Packit 70b277
#endif
Packit 70b277
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Packit 70b277
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Packit 70b277
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
Packit 70b277
#endif
Packit 70b277
#ifndef YY_INITIAL_VALUE
Packit 70b277
# define YY_INITIAL_VALUE(Value) /* Nothing. */
Packit 70b277
#endif
Packit 70b277
Packit 70b277
Packit 70b277
#if ! defined yyoverflow || YYERROR_VERBOSE
Packit 70b277
Packit 70b277
/* The parser invokes alloca or malloc; define the necessary symbols.  */
Packit 70b277
Packit 70b277
# ifdef YYSTACK_USE_ALLOCA
Packit 70b277
#  if YYSTACK_USE_ALLOCA
Packit 70b277
#   ifdef __GNUC__
Packit 70b277
#    define YYSTACK_ALLOC __builtin_alloca
Packit 70b277
#   elif defined __BUILTIN_VA_ARG_INCR
Packit 70b277
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#   elif defined _AIX
Packit 70b277
#    define YYSTACK_ALLOC __alloca
Packit 70b277
#   elif defined _MSC_VER
Packit 70b277
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#    define alloca _alloca
Packit 70b277
#   else
Packit 70b277
#    define YYSTACK_ALLOC alloca
Packit 70b277
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
Packit 70b277
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
Packit 70b277
#     ifndef EXIT_SUCCESS
Packit 70b277
#      define EXIT_SUCCESS 0
Packit 70b277
#     endif
Packit 70b277
#    endif
Packit 70b277
#   endif
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
Packit 70b277
# ifdef YYSTACK_ALLOC
Packit 70b277
   /* Pacify GCC's 'empty if-body' warning.  */
Packit 70b277
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
Packit 70b277
#  ifndef YYSTACK_ALLOC_MAXIMUM
Packit 70b277
    /* The OS might guarantee only one guard page at the bottom of the stack,
Packit 70b277
       and a page size can be as small as 4096 bytes.  So we cannot safely
Packit 70b277
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
Packit 70b277
       to allow for a few compiler-allocated temporary stack slots.  */
Packit 70b277
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
Packit 70b277
#  endif
Packit 70b277
# else
Packit 70b277
#  define YYSTACK_ALLOC YYMALLOC
Packit 70b277
#  define YYSTACK_FREE YYFREE
Packit 70b277
#  ifndef YYSTACK_ALLOC_MAXIMUM
Packit 70b277
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
Packit 70b277
#  endif
Packit 70b277
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
Packit 70b277
       && ! ((defined YYMALLOC || defined malloc) \
Packit 70b277
             && (defined YYFREE || defined free)))
Packit 70b277
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#   ifndef EXIT_SUCCESS
Packit 70b277
#    define EXIT_SUCCESS 0
Packit 70b277
#   endif
Packit 70b277
#  endif
Packit 70b277
#  ifndef YYMALLOC
Packit 70b277
#   define YYMALLOC malloc
Packit 70b277
#   if ! defined malloc && ! defined EXIT_SUCCESS
Packit 70b277
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#   endif
Packit 70b277
#  endif
Packit 70b277
#  ifndef YYFREE
Packit 70b277
#   define YYFREE free
Packit 70b277
#   if ! defined free && ! defined EXIT_SUCCESS
Packit 70b277
void free (void *); /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#   endif
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
Packit 70b277
Packit 70b277
Packit 70b277
#if (! defined yyoverflow \
Packit 70b277
     && (! defined __cplusplus \
Packit 70b277
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
Packit 70b277
Packit 70b277
/* A type that is properly aligned for any stack member.  */
Packit 70b277
union yyalloc
Packit 70b277
{
Packit 70b277
  yytype_int16 yyss_alloc;
Packit 70b277
  YYSTYPE yyvs_alloc;
Packit 70b277
};
Packit 70b277
Packit 70b277
/* The size of the maximum gap between one aligned stack and the next.  */
Packit 70b277
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
Packit 70b277
Packit 70b277
/* The size of an array large to enough to hold all stacks, each with
Packit 70b277
   N elements.  */
Packit 70b277
# define YYSTACK_BYTES(N) \
Packit 70b277
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
Packit 70b277
      + YYSTACK_GAP_MAXIMUM)
Packit 70b277
Packit 70b277
# define YYCOPY_NEEDED 1
Packit 70b277
Packit 70b277
/* Relocate STACK from its old location to the new one.  The
Packit 70b277
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
Packit 70b277
   elements in the stack, and YYPTR gives the new location of the
Packit 70b277
   stack.  Advance YYPTR to a properly aligned location for the next
Packit 70b277
   stack.  */
Packit 70b277
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
Packit 70b277
    do                                                                  \
Packit 70b277
      {                                                                 \
Packit 70b277
        YYSIZE_T yynewbytes;                                            \
Packit 70b277
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
Packit 70b277
        Stack = &yyptr->Stack_alloc;                                    \
Packit 70b277
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
Packit 70b277
        yyptr += yynewbytes / sizeof (*yyptr);                          \
Packit 70b277
      }                                                                 \
Packit 70b277
    while (0)
Packit 70b277
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
Packit 70b277
/* Copy COUNT objects from SRC to DST.  The source and destination do
Packit 70b277
   not overlap.  */
Packit 70b277
# ifndef YYCOPY
Packit 70b277
#  if defined __GNUC__ && 1 < __GNUC__
Packit 70b277
#   define YYCOPY(Dst, Src, Count) \
Packit 70b277
      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
Packit 70b277
#  else
Packit 70b277
#   define YYCOPY(Dst, Src, Count)              \
Packit 70b277
      do                                        \
Packit 70b277
        {                                       \
Packit 70b277
          YYSIZE_T yyi;                         \
Packit 70b277
          for (yyi = 0; yyi < (Count); yyi++)   \
Packit 70b277
            (Dst)[yyi] = (Src)[yyi];            \
Packit 70b277
        }                                       \
Packit 70b277
      while (0)
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
#endif /* !YYCOPY_NEEDED */
Packit 70b277
Packit 70b277
/* YYFINAL -- State number of the termination state.  */
Packit 70b277
#define YYFINAL  2
Packit 70b277
/* YYLAST -- Last index in YYTABLE.  */
Packit 70b277
#define YYLAST   719
Packit 70b277
Packit 70b277
/* YYNTOKENS -- Number of terminals.  */
Packit 70b277
#define YYNTOKENS  53
Packit 70b277
/* YYNNTS -- Number of nonterminals.  */
Packit 70b277
#define YYNNTS  36
Packit 70b277
/* YYNRULES -- Number of rules.  */
Packit 70b277
#define YYNRULES  112
Packit 70b277
/* YYNSTATES -- Number of states.  */
Packit 70b277
#define YYNSTATES  198
Packit 70b277
Packit 70b277
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
Packit 70b277
   by yylex, with out-of-bounds checking.  */
Packit 70b277
#define YYUNDEFTOK  2
Packit 70b277
#define YYMAXUTOK   292
Packit 70b277
Packit 70b277
#define YYTRANSLATE(YYX)                                                \
Packit 70b277
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
Packit 70b277
Packit 70b277
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
Packit 70b277
   as returned by yylex, without out-of-bounds checking.  */
Packit 70b277
static const yytype_uint8 yytranslate[] =
Packit 70b277
{
Packit 70b277
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,    42,    52,     2,
Packit 70b277
      45,    46,    40,    38,    49,    39,     2,    41,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,    44,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,    50,     2,    51,    43,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,    47,     2,    48,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
Packit 70b277
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
Packit 70b277
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
Packit 70b277
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
Packit 70b277
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
Packit 70b277
      35,    36,    37
Packit 70b277
};
Packit 70b277
Packit 70b277
#if YYDEBUG
Packit 70b277
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
Packit 70b277
static const yytype_uint16 yyrline[] =
Packit 70b277
{
Packit 70b277
       0,   123,   123,   131,   133,   135,   137,   143,   144,   148,
Packit 70b277
     149,   150,   151,   154,   155,   156,   157,   158,   159,   161,
Packit 70b277
     162,   165,   167,   169,   178,   185,   196,   208,   210,   212,
Packit 70b277
     215,   220,   232,   247,   214,   267,   266,   282,   290,   281,
Packit 70b277
     306,   309,   308,   312,   313,   315,   321,   328,   330,   329,
Packit 70b277
     342,   340,   367,   368,   375,   376,   379,   380,   382,   385,
Packit 70b277
     387,   389,   393,   397,   399,   401,   405,   411,   412,   414,
Packit 70b277
     422,   429,   437,   456,   460,   463,   469,   484,   483,   513,
Packit 70b277
     512,   528,   527,   545,   553,   584,   591,   598,   605,   612,
Packit 70b277
     619,   626,   633,   642,   658,   664,   684,   703,   726,   733,
Packit 70b277
     740,   747,   753,   760,   762,   770,   772,   774,   776,   780,
Packit 70b277
     787,   788,   789
Packit 70b277
};
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#if YYDEBUG || YYERROR_VERBOSE || 0
Packit 70b277
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
Packit 70b277
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
Packit 70b277
static const char *const yytname[] =
Packit 70b277
{
Packit 70b277
  "$end", "error", "$undefined", "ENDOFLINE", "AND", "OR", "NOT",
Packit 70b277
  "STRING", "NAME", "NUMBER", "ASSIGN_OP", "REL_OP", "INCR_DECR", "Define",
Packit 70b277
  "Break", "Quit", "Length", "Return", "For", "If", "While", "Sqrt",
Packit 70b277
  "Else", "Scale", "Ibase", "Obase", "Auto", "Read", "Random", "Warranty",
Packit 70b277
  "Halt", "Last", "Continue", "Print", "Limits", "UNARY_MINUS",
Packit 70b277
  "HistoryVar", "Void", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "';'",
Packit 70b277
  "'('", "')'", "'{'", "'}'", "','", "'['", "']'", "'&'", "$accept",
Packit 70b277
  "program", "input_item", "opt_newline", "semicolon_list",
Packit 70b277
  "statement_list", "statement_or_error", "statement", "$@1", "$@2", "@3",
Packit 70b277
  "$@4", "$@5", "$@6", "$@7", "$@8", "print_list", "print_element",
Packit 70b277
  "opt_else", "$@9", "function", "$@10", "opt_void", "opt_parameter_list",
Packit 70b277
  "opt_auto_define_list", "define_list", "opt_argument_list",
Packit 70b277
  "argument_list", "opt_expression", "return_expression", "expression",
Packit 70b277
  "$@11", "$@12", "$@13", "named_expression", "required_eol", YY_NULLPTR
Packit 70b277
};
Packit 70b277
#endif
Packit 70b277
Packit 70b277
# ifdef YYPRINT
Packit 70b277
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
Packit 70b277
   (internal) symbol number NUM (which must be that of a token).  */
Packit 70b277
static const yytype_uint16 yytoknum[] =
Packit 70b277
{
Packit 70b277
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
Packit 70b277
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
Packit 70b277
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
Packit 70b277
     285,   286,   287,   288,   289,   290,   291,   292,    43,    45,
Packit 70b277
      42,    47,    37,    94,    59,    40,    41,   123,   125,    44,
Packit 70b277
      91,    93,    38
Packit 70b277
};
Packit 70b277
# endif
Packit 70b277
Packit 70b277
#define YYPACT_NINF -144
Packit 70b277
Packit 70b277
#define yypact_value_is_default(Yystate) \
Packit 70b277
  (!!((Yystate) == (-144)))
Packit 70b277
Packit 70b277
#define YYTABLE_NINF -16
Packit 70b277
Packit 70b277
#define yytable_value_is_error(Yytable_value) \
Packit 70b277
  0
Packit 70b277
Packit 70b277
  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
Packit 70b277
     STATE-NUM.  */
Packit 70b277
static const yytype_int16 yypact[] =
Packit 70b277
{
Packit 70b277
    -144,   188,  -144,   392,   595,  -144,   -36,  -144,   484,   -31,
Packit 70b277
    -144,  -144,   -32,   595,  -144,   -11,  -144,   -10,    -7,  -144,
Packit 70b277
    -144,    -6,    -5,  -144,  -144,  -144,  -144,  -144,  -144,  -144,
Packit 70b277
     595,   595,   222,  -144,     2,  -144,  -144,  -144,   676,    14,
Packit 70b277
    -144,  -144,   131,   621,   595,   -27,  -144,  -144,  -144,    54,
Packit 70b277
     595,  -144,   676,    20,   595,    21,   595,   595,    13,    37,
Packit 70b277
     569,  -144,   425,   535,     1,  -144,  -144,   318,  -144,  -144,
Packit 70b277
     595,   595,   595,   595,   595,   595,   595,  -144,  -144,   -23,
Packit 70b277
      41,    36,   676,    39,    43,   436,   595,   445,   595,   485,
Packit 70b277
     494,  -144,  -144,  -144,  -144,    40,   676,  -144,   270,   535,
Packit 70b277
    -144,  -144,   595,   595,   -22,    51,    51,     4,     4,     4,
Packit 70b277
       4,   595,   105,  -144,   647,  -144,    23,  -144,    53,   676,
Packit 70b277
    -144,   676,  -144,  -144,   569,  -144,  -144,   131,   123,   -22,
Packit 70b277
    -144,   -20,   676,    45,    91,    94,    57,    55,  -144,   102,
Packit 70b277
      60,  -144,   352,    56,    58,    65,   102,    24,   595,  -144,
Packit 70b277
     535,   102,  -144,  -144,    67,    68,    69,    70,   115,   116,
Packit 70b277
      81,   109,   535,  -144,  -144,   132,    86,    88,    89,  -144,
Packit 70b277
    -144,  -144,  -144,  -144,     7,  -144,    92,    97,   595,   102,
Packit 70b277
    -144,    23,  -144,  -144,  -144,    99,   535,    12,   222,  -144,
Packit 70b277
    -144,  -144,  -144,     9,   102,  -144,   535,  -144
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Packit 70b277
     Performed when YYTABLE does not specify something else to do.  Zero
Packit 70b277
     means the default is an error.  */
Packit 70b277
static const yytype_uint8 yydefact[] =
Packit 70b277
{
Packit 70b277
       2,     0,     1,     0,     0,    24,   103,    93,     0,    52,
Packit 70b277
      25,    27,     0,    75,    30,     0,    37,     0,   107,   105,
Packit 70b277
     106,     0,     0,    21,    28,   109,    26,    41,    22,   108,
Packit 70b277
       0,     0,     0,     3,     0,    10,    19,     5,    23,    92,
Packit 70b277
       6,    20,    83,    67,     0,   103,   107,    96,    53,     0,
Packit 70b277
       0,    29,    76,     0,     0,     0,     0,     0,     0,     0,
Packit 70b277
       0,    91,     0,     0,     0,    14,     4,     0,    79,    81,
Packit 70b277
       0,     0,     0,     0,     0,     0,     0,    77,    97,   103,
Packit 70b277
       0,    68,    69,     0,     0,     0,    73,     0,     0,     0,
Packit 70b277
       0,   101,   102,    45,    42,    43,    46,    94,     0,    17,
Packit 70b277
      40,    11,     0,     0,    84,    85,    86,    87,    88,    89,
Packit 70b277
      90,     0,     0,    95,     0,   104,    54,    98,     0,    74,
Packit 70b277
      35,    38,    99,   100,     0,    16,    18,    80,    82,    78,
Packit 70b277
      70,   103,    71,    59,     0,     0,     0,    55,    31,     7,
Packit 70b277
       0,    44,     0,     0,     0,     0,     7,     0,    73,     8,
Packit 70b277
       0,     7,    72,    60,     0,     0,     0,    63,     0,     0,
Packit 70b277
       0,    47,     0,    61,    62,   110,     0,     0,     0,    32,
Packit 70b277
      48,    36,    39,   111,    56,    64,     0,     0,    73,     7,
Packit 70b277
     112,     0,    50,    65,    66,     0,     0,     0,     0,    33,
Packit 70b277
      49,    57,    58,     0,     7,    51,     0,    34
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYPGOTO[NTERM-NUM].  */
Packit 70b277
static const yytype_int16 yypgoto[] =
Packit 70b277
{
Packit 70b277
    -144,  -144,  -144,  -143,  -144,   -39,     0,    -3,  -144,  -144,
Packit 70b277
    -144,  -144,  -144,  -144,  -144,  -144,    27,  -144,  -144,  -144,
Packit 70b277
    -144,  -144,  -144,  -144,  -144,   -29,  -144,  -144,  -141,  -144,
Packit 70b277
      -2,  -144,  -144,  -144,   145,  -144
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYDEFGOTO[NTERM-NUM].  */
Packit 70b277
static const yytype_int16 yydefgoto[] =
Packit 70b277
{
Packit 70b277
      -1,     1,    33,   150,    34,    64,    65,    36,    53,   148,
Packit 70b277
     178,   194,   139,    55,   140,    60,    94,    95,   171,   179,
Packit 70b277
      37,   188,    49,   136,   182,   137,    80,    81,   118,    51,
Packit 70b277
      38,   111,   102,   103,    39,   174
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
Packit 70b277
     positive, shift that token.  If negative, reduce the rule whose
Packit 70b277
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
Packit 70b277
static const yytype_int16 yytable[] =
Packit 70b277
{
Packit 70b277
      41,    35,    42,   156,    98,    66,    48,   160,   162,    43,
Packit 70b277
     180,    52,    98,    50,    44,   191,    71,    72,    73,    74,
Packit 70b277
      75,    76,    43,    44,    77,    43,    78,   112,    61,    62,
Packit 70b277
     142,   133,   157,   181,    54,    56,   186,   185,    57,    58,
Packit 70b277
      59,    82,    83,    68,    69,    99,    67,    76,    85,   100,
Packit 70b277
      70,   196,    87,    99,    89,    90,   192,   195,    96,    91,
Packit 70b277
      41,   147,    84,   134,   158,    86,    88,   101,   104,   105,
Packit 70b277
     106,   107,   108,   109,   110,   135,   159,    71,    72,    73,
Packit 70b277
      74,    75,    76,    92,   119,   114,   121,   113,   116,   124,
Packit 70b277
     115,    73,    74,    75,    76,   143,   126,   138,   125,   144,
Packit 70b277
     127,   128,   145,   146,   147,   149,   151,   153,   154,   129,
Packit 70b277
      83,     4,   132,     6,     7,   155,   165,     8,   163,   164,
Packit 70b277
     166,    12,    96,   167,   168,   169,    17,    68,    18,    19,
Packit 70b277
      20,   170,    21,    22,    70,   173,    25,   175,   176,   177,
Packit 70b277
      83,    29,    70,   183,    30,   189,   119,   161,   184,   193,
Packit 70b277
      31,   141,   187,    47,     0,     0,   130,     0,     0,   172,
Packit 70b277
       0,    71,    72,    73,    74,    75,    76,     0,     0,    71,
Packit 70b277
      72,    73,    74,    75,    76,     0,   119,     0,     0,     0,
Packit 70b277
       0,     0,     0,   190,     0,     0,     0,     0,     2,     3,
Packit 70b277
       0,    -9,     0,   197,     4,     5,     6,     7,     0,     0,
Packit 70b277
       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
Packit 70b277
       0,    18,    19,    20,     0,    21,    22,    23,    24,    25,
Packit 70b277
      26,    27,    28,    63,    29,   -13,     0,    30,     4,     5,
Packit 70b277
       6,     7,    -9,    31,     8,    32,    10,    11,    12,    13,
Packit 70b277
      14,    15,    16,    17,     0,    18,    19,    20,     0,    21,
Packit 70b277
      22,    23,    24,    25,    26,    27,    28,     0,    29,     0,
Packit 70b277
       0,    30,     0,     0,     0,     0,   -13,    31,     0,    32,
Packit 70b277
     -13,    63,     0,   -15,     0,     0,     4,     5,     6,     7,
Packit 70b277
       0,     0,     8,     0,    10,    11,    12,    13,    14,    15,
Packit 70b277
      16,    17,     0,    18,    19,    20,     0,    21,    22,    23,
Packit 70b277
      24,    25,    26,    27,    28,     0,    29,     0,     0,    30,
Packit 70b277
       0,     0,     0,     0,   -15,    31,     0,    32,   -15,    63,
Packit 70b277
       0,   -12,     0,     0,     4,     5,     6,     7,     0,     0,
Packit 70b277
       8,     0,    10,    11,    12,    13,    14,    15,    16,    17,
Packit 70b277
       0,    18,    19,    20,     0,    21,    22,    23,    24,    25,
Packit 70b277
      26,    27,    28,     0,    29,     0,     0,    30,     4,     0,
Packit 70b277
       6,     7,   -12,    31,     8,    32,     0,     0,    12,     0,
Packit 70b277
       0,     0,     0,    17,     0,    18,    19,    20,     0,    21,
Packit 70b277
      22,     0,     0,    25,     0,     0,     0,     0,    29,     0,
Packit 70b277
       0,    30,     0,     0,     0,    40,     0,    31,     4,     5,
Packit 70b277
       6,     7,     0,   152,     8,     0,    10,    11,    12,    13,
Packit 70b277
      14,    15,    16,    17,     0,    18,    19,    20,     0,    21,
Packit 70b277
      22,    23,    24,    25,    26,    27,    28,     0,    29,    68,
Packit 70b277
      69,    30,     0,     0,     0,     0,    70,    31,     0,    32,
Packit 70b277
      68,    69,     0,     0,     0,     0,     0,    70,     0,    68,
Packit 70b277
      69,     0,     0,     0,     0,     0,    70,     0,     0,     0,
Packit 70b277
       0,     0,     0,    71,    72,    73,    74,    75,    76,     0,
Packit 70b277
       0,    97,     0,     0,    71,    72,    73,    74,    75,    76,
Packit 70b277
       0,     0,   117,    71,    72,    73,    74,    75,    76,    68,
Packit 70b277
      69,   120,    45,     0,     0,     0,    70,     0,    68,    69,
Packit 70b277
       0,     0,     0,     0,     0,    70,     0,    46,    19,    20,
Packit 70b277
       0,     0,     0,     0,     0,    25,     0,     0,     0,     0,
Packit 70b277
      29,     0,     0,    71,    72,    73,    74,    75,    76,     0,
Packit 70b277
       0,   122,    71,    72,    73,    74,    75,    76,     0,     0,
Packit 70b277
     123,     4,     5,     6,     7,     0,     0,     8,     0,    10,
Packit 70b277
      11,    12,    13,    14,    15,    16,    17,     0,    18,    19,
Packit 70b277
      20,     0,    21,    22,    23,    24,    25,    26,    27,    28,
Packit 70b277
       0,    29,     0,     0,    30,     4,    93,     6,     7,     0,
Packit 70b277
      31,     8,    32,     0,     0,    12,     0,     0,     0,     0,
Packit 70b277
      17,     0,    18,    19,    20,     0,    21,    22,     0,     0,
Packit 70b277
      25,     4,     0,     6,     7,    29,     0,     8,    30,     0,
Packit 70b277
       0,    12,     0,     0,    31,     0,    17,     0,    18,    19,
Packit 70b277
      20,     0,    21,    22,     0,     0,    25,     4,     0,    79,
Packit 70b277
       7,    29,     0,     8,    30,     0,     0,    12,     0,     0,
Packit 70b277
      31,     0,    17,     0,    18,    19,    20,     0,    21,    22,
Packit 70b277
       0,     0,    25,     4,     0,   131,     7,    29,     0,     8,
Packit 70b277
      30,     0,     0,    12,     0,     0,    31,     0,    17,     0,
Packit 70b277
      18,    19,    20,     0,    21,    22,     0,     0,    25,     0,
Packit 70b277
      68,    69,     0,    29,     0,     0,    30,    70,     0,     0,
Packit 70b277
       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
Packit 70b277
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
Packit 70b277
       0,     0,     0,     0,    71,    72,    73,    74,    75,    76
Packit 70b277
};
Packit 70b277
Packit 70b277
static const yytype_int16 yycheck[] =
Packit 70b277
{
Packit 70b277
       3,     1,     4,   146,     3,     3,    37,   148,   151,    45,
Packit 70b277
       3,    13,     3,    45,    50,     3,    38,    39,    40,    41,
Packit 70b277
      42,    43,    45,    50,    10,    45,    12,    50,    30,    31,
Packit 70b277
      50,     8,     8,    26,    45,    45,   179,   178,    45,    45,
Packit 70b277
      45,    43,    44,     4,     5,    44,    44,    43,    50,    48,
Packit 70b277
      11,   194,    54,    44,    56,    57,    44,    48,    60,    46,
Packit 70b277
      63,    49,     8,    40,    40,    45,    45,    67,    70,    71,
Packit 70b277
      72,    73,    74,    75,    76,    52,    52,    38,    39,    40,
Packit 70b277
      41,    42,    43,    46,    86,    49,    88,    46,    45,    49,
Packit 70b277
      51,    40,    41,    42,    43,    50,    99,    44,    98,     8,
Packit 70b277
     102,   103,     8,    46,    49,     3,    46,    51,    50,   111,
Packit 70b277
     112,     6,   114,     8,     9,    50,    47,    12,    51,    51,
Packit 70b277
      50,    16,   124,     8,     8,    44,    21,     4,    23,    24,
Packit 70b277
      25,    22,    27,    28,    11,     3,    31,    51,    50,    50,
Packit 70b277
     142,    36,    11,    51,    39,    46,   148,   150,    51,   188,
Packit 70b277
      45,   124,   181,     8,    -1,    -1,    51,    -1,    -1,   162,
Packit 70b277
      -1,    38,    39,    40,    41,    42,    43,    -1,    -1,    38,
Packit 70b277
      39,    40,    41,    42,    43,    -1,   178,    -1,    -1,    -1,
Packit 70b277
      -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,     0,     1,
Packit 70b277
      -1,     3,    -1,   196,     6,     7,     8,     9,    -1,    -1,
Packit 70b277
      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
Packit 70b277
      -1,    23,    24,    25,    -1,    27,    28,    29,    30,    31,
Packit 70b277
      32,    33,    34,     1,    36,     3,    -1,    39,     6,     7,
Packit 70b277
       8,     9,    44,    45,    12,    47,    14,    15,    16,    17,
Packit 70b277
      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
Packit 70b277
      28,    29,    30,    31,    32,    33,    34,    -1,    36,    -1,
Packit 70b277
      -1,    39,    -1,    -1,    -1,    -1,    44,    45,    -1,    47,
Packit 70b277
      48,     1,    -1,     3,    -1,    -1,     6,     7,     8,     9,
Packit 70b277
      -1,    -1,    12,    -1,    14,    15,    16,    17,    18,    19,
Packit 70b277
      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
Packit 70b277
      30,    31,    32,    33,    34,    -1,    36,    -1,    -1,    39,
Packit 70b277
      -1,    -1,    -1,    -1,    44,    45,    -1,    47,    48,     1,
Packit 70b277
      -1,     3,    -1,    -1,     6,     7,     8,     9,    -1,    -1,
Packit 70b277
      12,    -1,    14,    15,    16,    17,    18,    19,    20,    21,
Packit 70b277
      -1,    23,    24,    25,    -1,    27,    28,    29,    30,    31,
Packit 70b277
      32,    33,    34,    -1,    36,    -1,    -1,    39,     6,    -1,
Packit 70b277
       8,     9,    44,    45,    12,    47,    -1,    -1,    16,    -1,
Packit 70b277
      -1,    -1,    -1,    21,    -1,    23,    24,    25,    -1,    27,
Packit 70b277
      28,    -1,    -1,    31,    -1,    -1,    -1,    -1,    36,    -1,
Packit 70b277
      -1,    39,    -1,    -1,    -1,     3,    -1,    45,     6,     7,
Packit 70b277
       8,     9,    -1,    51,    12,    -1,    14,    15,    16,    17,
Packit 70b277
      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
Packit 70b277
      28,    29,    30,    31,    32,    33,    34,    -1,    36,     4,
Packit 70b277
       5,    39,    -1,    -1,    -1,    -1,    11,    45,    -1,    47,
Packit 70b277
       4,     5,    -1,    -1,    -1,    -1,    -1,    11,    -1,     4,
Packit 70b277
       5,    -1,    -1,    -1,    -1,    -1,    11,    -1,    -1,    -1,
Packit 70b277
      -1,    -1,    -1,    38,    39,    40,    41,    42,    43,    -1,
Packit 70b277
      -1,    46,    -1,    -1,    38,    39,    40,    41,    42,    43,
Packit 70b277
      -1,    -1,    46,    38,    39,    40,    41,    42,    43,     4,
Packit 70b277
       5,    46,     8,    -1,    -1,    -1,    11,    -1,     4,     5,
Packit 70b277
      -1,    -1,    -1,    -1,    -1,    11,    -1,    23,    24,    25,
Packit 70b277
      -1,    -1,    -1,    -1,    -1,    31,    -1,    -1,    -1,    -1,
Packit 70b277
      36,    -1,    -1,    38,    39,    40,    41,    42,    43,    -1,
Packit 70b277
      -1,    46,    38,    39,    40,    41,    42,    43,    -1,    -1,
Packit 70b277
      46,     6,     7,     8,     9,    -1,    -1,    12,    -1,    14,
Packit 70b277
      15,    16,    17,    18,    19,    20,    21,    -1,    23,    24,
Packit 70b277
      25,    -1,    27,    28,    29,    30,    31,    32,    33,    34,
Packit 70b277
      -1,    36,    -1,    -1,    39,     6,     7,     8,     9,    -1,
Packit 70b277
      45,    12,    47,    -1,    -1,    16,    -1,    -1,    -1,    -1,
Packit 70b277
      21,    -1,    23,    24,    25,    -1,    27,    28,    -1,    -1,
Packit 70b277
      31,     6,    -1,     8,     9,    36,    -1,    12,    39,    -1,
Packit 70b277
      -1,    16,    -1,    -1,    45,    -1,    21,    -1,    23,    24,
Packit 70b277
      25,    -1,    27,    28,    -1,    -1,    31,     6,    -1,     8,
Packit 70b277
       9,    36,    -1,    12,    39,    -1,    -1,    16,    -1,    -1,
Packit 70b277
      45,    -1,    21,    -1,    23,    24,    25,    -1,    27,    28,
Packit 70b277
      -1,    -1,    31,     6,    -1,     8,     9,    36,    -1,    12,
Packit 70b277
      39,    -1,    -1,    16,    -1,    -1,    45,    -1,    21,    -1,
Packit 70b277
      23,    24,    25,    -1,    27,    28,    -1,    -1,    31,    -1,
Packit 70b277
       4,     5,    -1,    36,    -1,    -1,    39,    11,    -1,    -1,
Packit 70b277
      -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
Packit 70b277
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
Packit 70b277
      -1,    -1,    -1,    -1,    38,    39,    40,    41,    42,    43
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
Packit 70b277
     symbol of state STATE-NUM.  */
Packit 70b277
static const yytype_uint8 yystos[] =
Packit 70b277
{
Packit 70b277
       0,    54,     0,     1,     6,     7,     8,     9,    12,    13,
Packit 70b277
      14,    15,    16,    17,    18,    19,    20,    21,    23,    24,
Packit 70b277
      25,    27,    28,    29,    30,    31,    32,    33,    34,    36,
Packit 70b277
      39,    45,    47,    55,    57,    59,    60,    73,    83,    87,
Packit 70b277
       3,    60,    83,    45,    50,     8,    23,    87,    37,    75,
Packit 70b277
      45,    82,    83,    61,    45,    66,    45,    45,    45,    45,
Packit 70b277
      68,    83,    83,     1,    58,    59,     3,    44,     4,     5,
Packit 70b277
      11,    38,    39,    40,    41,    42,    43,    10,    12,     8,
Packit 70b277
      79,    80,    83,    83,     8,    83,    45,    83,    45,    83,
Packit 70b277
      83,    46,    46,     7,    69,    70,    83,    46,     3,    44,
Packit 70b277
      48,    59,    85,    86,    83,    83,    83,    83,    83,    83,
Packit 70b277
      83,    84,    50,    46,    49,    51,    45,    46,    81,    83,
Packit 70b277
      46,    83,    46,    46,    49,    59,    60,    83,    83,    83,
Packit 70b277
      51,     8,    83,     8,    40,    52,    76,    78,    44,    65,
Packit 70b277
      67,    69,    50,    50,     8,     8,    46,    49,    62,     3,
Packit 70b277
      56,    46,    51,    51,    50,    50,    56,     8,    40,    52,
Packit 70b277
      81,    60,    56,    51,    51,    47,    50,     8,     8,    44,
Packit 70b277
      22,    71,    60,     3,    88,    51,    50,    50,    63,    72,
Packit 70b277
       3,    26,    77,    51,    51,    81,    56,    78,    74,    46,
Packit 70b277
      60,     3,    44,    58,    64,    48,    56,    60
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
Packit 70b277
static const yytype_uint8 yyr1[] =
Packit 70b277
{
Packit 70b277
       0,    53,    54,    54,    55,    55,    55,    56,    56,    57,
Packit 70b277
      57,    57,    57,    58,    58,    58,    58,    58,    58,    59,
Packit 70b277
      59,    60,    60,    60,    60,    60,    60,    60,    60,    60,
Packit 70b277
      61,    62,    63,    64,    60,    65,    60,    66,    67,    60,
Packit 70b277
      60,    68,    60,    69,    69,    70,    70,    71,    72,    71,
Packit 70b277
      74,    73,    75,    75,    76,    76,    77,    77,    77,    78,
Packit 70b277
      78,    78,    78,    78,    78,    78,    78,    79,    79,    80,
Packit 70b277
      80,    80,    80,    81,    81,    82,    82,    84,    83,    85,
Packit 70b277
      83,    86,    83,    83,    83,    83,    83,    83,    83,    83,
Packit 70b277
      83,    83,    83,    83,    83,    83,    83,    83,    83,    83,
Packit 70b277
      83,    83,    83,    87,    87,    87,    87,    87,    87,    87,
Packit 70b277
      88,    88,    88
Packit 70b277
};
Packit 70b277
Packit 70b277
  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
Packit 70b277
static const yytype_uint8 yyr2[] =
Packit 70b277
{
Packit 70b277
       0,     2,     0,     2,     2,     1,     2,     0,     1,     0,
Packit 70b277
       1,     3,     2,     0,     1,     2,     3,     2,     3,     1,
Packit 70b277
       2,     1,     1,     1,     1,     1,     1,     1,     1,     2,
Packit 70b277
       0,     0,     0,     0,    14,     0,     8,     0,     0,     8,
Packit 70b277
       3,     0,     3,     1,     3,     1,     1,     0,     0,     4,
Packit 70b277
       0,    13,     0,     1,     0,     1,     0,     3,     3,     1,
Packit 70b277
       3,     4,     4,     3,     5,     6,     6,     0,     1,     1,
Packit 70b277
       3,     3,     5,     0,     1,     0,     1,     0,     4,     0,
Packit 70b277
       4,     0,     4,     2,     3,     3,     3,     3,     3,     3,
Packit 70b277
       3,     2,     1,     1,     3,     4,     2,     2,     4,     4,
Packit 70b277
       4,     3,     3,     1,     4,     1,     1,     1,     1,     1,
Packit 70b277
       0,     1,     2
Packit 70b277
};
Packit 70b277
Packit 70b277
Packit 70b277
#define yyerrok         (yyerrstatus = 0)
Packit 70b277
#define yyclearin       (yychar = YYEMPTY)
Packit 70b277
#define YYEMPTY         (-2)
Packit 70b277
#define YYEOF           0
Packit 70b277
Packit 70b277
#define YYACCEPT        goto yyacceptlab
Packit 70b277
#define YYABORT         goto yyabortlab
Packit 70b277
#define YYERROR         goto yyerrorlab
Packit 70b277
Packit 70b277
Packit 70b277
#define YYRECOVERING()  (!!yyerrstatus)
Packit 70b277
Packit 70b277
#define YYBACKUP(Token, Value)                                  \
Packit 70b277
do                                                              \
Packit 70b277
  if (yychar == YYEMPTY)                                        \
Packit 70b277
    {                                                           \
Packit 70b277
      yychar = (Token);                                         \
Packit 70b277
      yylval = (Value);                                         \
Packit 70b277
      YYPOPSTACK (yylen);                                       \
Packit 70b277
      yystate = *yyssp;                                         \
Packit 70b277
      goto yybackup;                                            \
Packit 70b277
    }                                                           \
Packit 70b277
  else                                                          \
Packit 70b277
    {                                                           \
Packit 70b277
      yyerror (YY_("syntax error: cannot back up")); \
Packit 70b277
      YYERROR;                                                  \
Packit 70b277
    }                                                           \
Packit 70b277
while (0)
Packit 70b277
Packit 70b277
/* Error token number */
Packit 70b277
#define YYTERROR        1
Packit 70b277
#define YYERRCODE       256
Packit 70b277
Packit 70b277
Packit 70b277
Packit 70b277
/* Enable debugging if requested.  */
Packit 70b277
#if YYDEBUG
Packit 70b277
Packit 70b277
# ifndef YYFPRINTF
Packit 70b277
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
Packit 70b277
#  define YYFPRINTF fprintf
Packit 70b277
# endif
Packit 70b277
Packit 70b277
# define YYDPRINTF(Args)                        \
Packit 70b277
do {                                            \
Packit 70b277
  if (yydebug)                                  \
Packit 70b277
    YYFPRINTF Args;                             \
Packit 70b277
} while (0)
Packit 70b277
Packit 70b277
/* This macro is provided for backward compatibility. */
Packit 70b277
#ifndef YY_LOCATION_PRINT
Packit 70b277
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
Packit 70b277
#endif
Packit 70b277
Packit 70b277
Packit 70b277
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
Packit 70b277
do {                                                                      \
Packit 70b277
  if (yydebug)                                                            \
Packit 70b277
    {                                                                     \
Packit 70b277
      YYFPRINTF (stderr, "%s ", Title);                                   \
Packit 70b277
      yy_symbol_print (stderr,                                            \
Packit 70b277
                  Type, Value); \
Packit 70b277
      YYFPRINTF (stderr, "\n");                                           \
Packit 70b277
    }                                                                     \
Packit 70b277
} while (0)
Packit 70b277
Packit 70b277
Packit 70b277
/*----------------------------------------.
Packit 70b277
| Print this symbol's value on YYOUTPUT.  |
Packit 70b277
`----------------------------------------*/
Packit 70b277
Packit 70b277
static void
Packit 70b277
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
Packit 70b277
{
Packit 70b277
  FILE *yyo = yyoutput;
Packit 70b277
  YYUSE (yyo);
Packit 70b277
  if (!yyvaluep)
Packit 70b277
    return;
Packit 70b277
# ifdef YYPRINT
Packit 70b277
  if (yytype < YYNTOKENS)
Packit 70b277
    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
Packit 70b277
# endif
Packit 70b277
  YYUSE (yytype);
Packit 70b277
}
Packit 70b277
Packit 70b277
Packit 70b277
/*--------------------------------.
Packit 70b277
| Print this symbol on YYOUTPUT.  |
Packit 70b277
`--------------------------------*/
Packit 70b277
Packit 70b277
static void
Packit 70b277
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
Packit 70b277
{
Packit 70b277
  YYFPRINTF (yyoutput, "%s %s (",
Packit 70b277
             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
Packit 70b277
Packit 70b277
  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
Packit 70b277
  YYFPRINTF (yyoutput, ")");
Packit 70b277
}
Packit 70b277
Packit 70b277
/*------------------------------------------------------------------.
Packit 70b277
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
Packit 70b277
| TOP (included).                                                   |
Packit 70b277
`------------------------------------------------------------------*/
Packit 70b277
Packit 70b277
static void
Packit 70b277
yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
Packit 70b277
{
Packit 70b277
  YYFPRINTF (stderr, "Stack now");
Packit 70b277
  for (; yybottom <= yytop; yybottom++)
Packit 70b277
    {
Packit 70b277
      int yybot = *yybottom;
Packit 70b277
      YYFPRINTF (stderr, " %d", yybot);
Packit 70b277
    }
Packit 70b277
  YYFPRINTF (stderr, "\n");
Packit 70b277
}
Packit 70b277
Packit 70b277
# define YY_STACK_PRINT(Bottom, Top)                            \
Packit 70b277
do {                                                            \
Packit 70b277
  if (yydebug)                                                  \
Packit 70b277
    yy_stack_print ((Bottom), (Top));                           \
Packit 70b277
} while (0)
Packit 70b277
Packit 70b277
Packit 70b277
/*------------------------------------------------.
Packit 70b277
| Report that the YYRULE is going to be reduced.  |
Packit 70b277
`------------------------------------------------*/
Packit 70b277
Packit 70b277
static void
Packit 70b277
yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
Packit 70b277
{
Packit 70b277
  unsigned long int yylno = yyrline[yyrule];
Packit 70b277
  int yynrhs = yyr2[yyrule];
Packit 70b277
  int yyi;
Packit 70b277
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
Packit 70b277
             yyrule - 1, yylno);
Packit 70b277
  /* The symbols being reduced.  */
Packit 70b277
  for (yyi = 0; yyi < yynrhs; yyi++)
Packit 70b277
    {
Packit 70b277
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
Packit 70b277
      yy_symbol_print (stderr,
Packit 70b277
                       yystos[yyssp[yyi + 1 - yynrhs]],
Packit 70b277
                       &(yyvsp[(yyi + 1) - (yynrhs)])
Packit 70b277
                                              );
Packit 70b277
      YYFPRINTF (stderr, "\n");
Packit 70b277
    }
Packit 70b277
}
Packit 70b277
Packit 70b277
# define YY_REDUCE_PRINT(Rule)          \
Packit 70b277
do {                                    \
Packit 70b277
  if (yydebug)                          \
Packit 70b277
    yy_reduce_print (yyssp, yyvsp, Rule); \
Packit 70b277
} while (0)
Packit 70b277
Packit 70b277
/* Nonzero means print parse trace.  It is left uninitialized so that
Packit 70b277
   multiple parsers can coexist.  */
Packit 70b277
int yydebug;
Packit 70b277
#else /* !YYDEBUG */
Packit 70b277
# define YYDPRINTF(Args)
Packit 70b277
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Packit 70b277
# define YY_STACK_PRINT(Bottom, Top)
Packit 70b277
# define YY_REDUCE_PRINT(Rule)
Packit 70b277
#endif /* !YYDEBUG */
Packit 70b277
Packit 70b277
Packit 70b277
/* YYINITDEPTH -- initial size of the parser's stacks.  */
Packit 70b277
#ifndef YYINITDEPTH
Packit 70b277
# define YYINITDEPTH 200
Packit 70b277
#endif
Packit 70b277
Packit 70b277
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
Packit 70b277
   if the built-in stack extension method is used).
Packit 70b277
Packit 70b277
   Do not make this value too large; the results are undefined if
Packit 70b277
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
Packit 70b277
   evaluated with infinite-precision integer arithmetic.  */
Packit 70b277
Packit 70b277
#ifndef YYMAXDEPTH
Packit 70b277
# define YYMAXDEPTH 10000
Packit 70b277
#endif
Packit 70b277
Packit 70b277
Packit 70b277
#if YYERROR_VERBOSE
Packit 70b277
Packit 70b277
# ifndef yystrlen
Packit 70b277
#  if defined __GLIBC__ && defined _STRING_H
Packit 70b277
#   define yystrlen strlen
Packit 70b277
#  else
Packit 70b277
/* Return the length of YYSTR.  */
Packit 70b277
static YYSIZE_T
Packit 70b277
yystrlen (const char *yystr)
Packit 70b277
{
Packit 70b277
  YYSIZE_T yylen;
Packit 70b277
  for (yylen = 0; yystr[yylen]; yylen++)
Packit 70b277
    continue;
Packit 70b277
  return yylen;
Packit 70b277
}
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
Packit 70b277
# ifndef yystpcpy
Packit 70b277
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
Packit 70b277
#   define yystpcpy stpcpy
Packit 70b277
#  else
Packit 70b277
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
Packit 70b277
   YYDEST.  */
Packit 70b277
static char *
Packit 70b277
yystpcpy (char *yydest, const char *yysrc)
Packit 70b277
{
Packit 70b277
  char *yyd = yydest;
Packit 70b277
  const char *yys = yysrc;
Packit 70b277
Packit 70b277
  while ((*yyd++ = *yys++) != '\0')
Packit 70b277
    continue;
Packit 70b277
Packit 70b277
  return yyd - 1;
Packit 70b277
}
Packit 70b277
#  endif
Packit 70b277
# endif
Packit 70b277
Packit 70b277
# ifndef yytnamerr
Packit 70b277
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
Packit 70b277
   quotes and backslashes, so that it's suitable for yyerror.  The
Packit 70b277
   heuristic is that double-quoting is unnecessary unless the string
Packit 70b277
   contains an apostrophe, a comma, or backslash (other than
Packit 70b277
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
Packit 70b277
   null, do not copy; instead, return the length of what the result
Packit 70b277
   would have been.  */
Packit 70b277
static YYSIZE_T
Packit 70b277
yytnamerr (char *yyres, const char *yystr)
Packit 70b277
{
Packit 70b277
  if (*yystr == '"')
Packit 70b277
    {
Packit 70b277
      YYSIZE_T yyn = 0;
Packit 70b277
      char const *yyp = yystr;
Packit 70b277
Packit 70b277
      for (;;)
Packit 70b277
        switch (*++yyp)
Packit 70b277
          {
Packit 70b277
          case '\'':
Packit 70b277
          case ',':
Packit 70b277
            goto do_not_strip_quotes;
Packit 70b277
Packit 70b277
          case '\\':
Packit 70b277
            if (*++yyp != '\\')
Packit 70b277
              goto do_not_strip_quotes;
Packit 70b277
            /* Fall through.  */
Packit 70b277
          default:
Packit 70b277
            if (yyres)
Packit 70b277
              yyres[yyn] = *yyp;
Packit 70b277
            yyn++;
Packit 70b277
            break;
Packit 70b277
Packit 70b277
          case '"':
Packit 70b277
            if (yyres)
Packit 70b277
              yyres[yyn] = '\0';
Packit 70b277
            return yyn;
Packit 70b277
          }
Packit 70b277
    do_not_strip_quotes: ;
Packit 70b277
    }
Packit 70b277
Packit 70b277
  if (! yyres)
Packit 70b277
    return yystrlen (yystr);
Packit 70b277
Packit 70b277
  return yystpcpy (yyres, yystr) - yyres;
Packit 70b277
}
Packit 70b277
# endif
Packit 70b277
Packit 70b277
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
Packit 70b277
   about the unexpected token YYTOKEN for the state stack whose top is
Packit 70b277
   YYSSP.
Packit 70b277
Packit 70b277
   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
Packit 70b277
   not large enough to hold the message.  In that case, also set
Packit 70b277
   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
Packit 70b277
   required number of bytes is too large to store.  */
Packit 70b277
static int
Packit 70b277
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
Packit 70b277
                yytype_int16 *yyssp, int yytoken)
Packit 70b277
{
Packit 70b277
  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
Packit 70b277
  YYSIZE_T yysize = yysize0;
Packit 70b277
  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
Packit 70b277
  /* Internationalized format string. */
Packit 70b277
  const char *yyformat = YY_NULLPTR;
Packit 70b277
  /* Arguments of yyformat. */
Packit 70b277
  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
Packit 70b277
  /* Number of reported tokens (one for the "unexpected", one per
Packit 70b277
     "expected"). */
Packit 70b277
  int yycount = 0;
Packit 70b277
Packit 70b277
  /* There are many possibilities here to consider:
Packit 70b277
     - If this state is a consistent state with a default action, then
Packit 70b277
       the only way this function was invoked is if the default action
Packit 70b277
       is an error action.  In that case, don't check for expected
Packit 70b277
       tokens because there are none.
Packit 70b277
     - The only way there can be no lookahead present (in yychar) is if
Packit 70b277
       this state is a consistent state with a default action.  Thus,
Packit 70b277
       detecting the absence of a lookahead is sufficient to determine
Packit 70b277
       that there is no unexpected or expected token to report.  In that
Packit 70b277
       case, just report a simple "syntax error".
Packit 70b277
     - Don't assume there isn't a lookahead just because this state is a
Packit 70b277
       consistent state with a default action.  There might have been a
Packit 70b277
       previous inconsistent state, consistent state with a non-default
Packit 70b277
       action, or user semantic action that manipulated yychar.
Packit 70b277
     - Of course, the expected token list depends on states to have
Packit 70b277
       correct lookahead information, and it depends on the parser not
Packit 70b277
       to perform extra reductions after fetching a lookahead from the
Packit 70b277
       scanner and before detecting a syntax error.  Thus, state merging
Packit 70b277
       (from LALR or IELR) and default reductions corrupt the expected
Packit 70b277
       token list.  However, the list is correct for canonical LR with
Packit 70b277
       one exception: it will still contain any token that will not be
Packit 70b277
       accepted due to an error action in a later state.
Packit 70b277
  */
Packit 70b277
  if (yytoken != YYEMPTY)
Packit 70b277
    {
Packit 70b277
      int yyn = yypact[*yyssp];
Packit 70b277
      yyarg[yycount++] = yytname[yytoken];
Packit 70b277
      if (!yypact_value_is_default (yyn))
Packit 70b277
        {
Packit 70b277
          /* Start YYX at -YYN if negative to avoid negative indexes in
Packit 70b277
             YYCHECK.  In other words, skip the first -YYN actions for
Packit 70b277
             this state because they are default actions.  */
Packit 70b277
          int yyxbegin = yyn < 0 ? -yyn : 0;
Packit 70b277
          /* Stay within bounds of both yycheck and yytname.  */
Packit 70b277
          int yychecklim = YYLAST - yyn + 1;
Packit 70b277
          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
Packit 70b277
          int yyx;
Packit 70b277
Packit 70b277
          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
Packit 70b277
            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
Packit 70b277
                && !yytable_value_is_error (yytable[yyx + yyn]))
Packit 70b277
              {
Packit 70b277
                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
Packit 70b277
                  {
Packit 70b277
                    yycount = 1;
Packit 70b277
                    yysize = yysize0;
Packit 70b277
                    break;
Packit 70b277
                  }
Packit 70b277
                yyarg[yycount++] = yytname[yyx];
Packit 70b277
                {
Packit 70b277
                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
Packit 70b277
                  if (! (yysize <= yysize1
Packit 70b277
                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
Packit 70b277
                    return 2;
Packit 70b277
                  yysize = yysize1;
Packit 70b277
                }
Packit 70b277
              }
Packit 70b277
        }
Packit 70b277
    }
Packit 70b277
Packit 70b277
  switch (yycount)
Packit 70b277
    {
Packit 70b277
# define YYCASE_(N, S)                      \
Packit 70b277
      case N:                               \
Packit 70b277
        yyformat = S;                       \
Packit 70b277
      break
Packit 70b277
      YYCASE_(0, YY_("syntax error"));
Packit 70b277
      YYCASE_(1, YY_("syntax error, unexpected %s"));
Packit 70b277
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
Packit 70b277
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
Packit 70b277
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
Packit 70b277
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
Packit 70b277
# undef YYCASE_
Packit 70b277
    }
Packit 70b277
Packit 70b277
  {
Packit 70b277
    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
Packit 70b277
    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
Packit 70b277
      return 2;
Packit 70b277
    yysize = yysize1;
Packit 70b277
  }
Packit 70b277
Packit 70b277
  if (*yymsg_alloc < yysize)
Packit 70b277
    {
Packit 70b277
      *yymsg_alloc = 2 * yysize;
Packit 70b277
      if (! (yysize <= *yymsg_alloc
Packit 70b277
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
Packit 70b277
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
Packit 70b277
      return 1;
Packit 70b277
    }
Packit 70b277
Packit 70b277
  /* Avoid sprintf, as that infringes on the user's name space.
Packit 70b277
     Don't have undefined behavior even if the translation
Packit 70b277
     produced a string with the wrong number of "%s"s.  */
Packit 70b277
  {
Packit 70b277
    char *yyp = *yymsg;
Packit 70b277
    int yyi = 0;
Packit 70b277
    while ((*yyp = *yyformat) != '\0')
Packit 70b277
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
Packit 70b277
        {
Packit 70b277
          yyp += yytnamerr (yyp, yyarg[yyi++]);
Packit 70b277
          yyformat += 2;
Packit 70b277
        }
Packit 70b277
      else
Packit 70b277
        {
Packit 70b277
          yyp++;
Packit 70b277
          yyformat++;
Packit 70b277
        }
Packit 70b277
  }
Packit 70b277
  return 0;
Packit 70b277
}
Packit 70b277
#endif /* YYERROR_VERBOSE */
Packit 70b277
Packit 70b277
/*-----------------------------------------------.
Packit 70b277
| Release the memory associated to this symbol.  |
Packit 70b277
`-----------------------------------------------*/
Packit 70b277
Packit 70b277
static void
Packit 70b277
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
Packit 70b277
{
Packit 70b277
  YYUSE (yyvaluep);
Packit 70b277
  if (!yymsg)
Packit 70b277
    yymsg = "Deleting";
Packit 70b277
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
Packit 70b277
Packit 70b277
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Packit 70b277
  YYUSE (yytype);
Packit 70b277
  YY_IGNORE_MAYBE_UNINITIALIZED_END
Packit 70b277
}
Packit 70b277
Packit 70b277
Packit 70b277
Packit 70b277
Packit 70b277
/* The lookahead symbol.  */
Packit 70b277
int yychar;
Packit 70b277
Packit 70b277
/* The semantic value of the lookahead symbol.  */
Packit 70b277
YYSTYPE yylval;
Packit 70b277
/* Number of syntax errors so far.  */
Packit 70b277
int yynerrs;
Packit 70b277
Packit 70b277
Packit 70b277
/*----------.
Packit 70b277
| yyparse.  |
Packit 70b277
`----------*/
Packit 70b277
Packit 70b277
int
Packit 70b277
yyparse (void)
Packit 70b277
{
Packit 70b277
    int yystate;
Packit 70b277
    /* Number of tokens to shift before error messages enabled.  */
Packit 70b277
    int yyerrstatus;
Packit 70b277
Packit 70b277
    /* The stacks and their tools:
Packit 70b277
       'yyss': related to states.
Packit 70b277
       'yyvs': related to semantic values.
Packit 70b277
Packit 70b277
       Refer to the stacks through separate pointers, to allow yyoverflow
Packit 70b277
       to reallocate them elsewhere.  */
Packit 70b277
Packit 70b277
    /* The state stack.  */
Packit 70b277
    yytype_int16 yyssa[YYINITDEPTH];
Packit 70b277
    yytype_int16 *yyss;
Packit 70b277
    yytype_int16 *yyssp;
Packit 70b277
Packit 70b277
    /* The semantic value stack.  */
Packit 70b277
    YYSTYPE yyvsa[YYINITDEPTH];
Packit 70b277
    YYSTYPE *yyvs;
Packit 70b277
    YYSTYPE *yyvsp;
Packit 70b277
Packit 70b277
    YYSIZE_T yystacksize;
Packit 70b277
Packit 70b277
  int yyn;
Packit 70b277
  int yyresult;
Packit 70b277
  /* Lookahead token as an internal (translated) token number.  */
Packit 70b277
  int yytoken = 0;
Packit 70b277
  /* The variables used to return semantic value and location from the
Packit 70b277
     action routines.  */
Packit 70b277
  YYSTYPE yyval;
Packit 70b277
Packit 70b277
#if YYERROR_VERBOSE
Packit 70b277
  /* Buffer for error messages, and its allocated size.  */
Packit 70b277
  char yymsgbuf[128];
Packit 70b277
  char *yymsg = yymsgbuf;
Packit 70b277
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
Packit 70b277
#endif
Packit 70b277
Packit 70b277
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
Packit 70b277
Packit 70b277
  /* The number of symbols on the RHS of the reduced rule.
Packit 70b277
     Keep to zero when no symbol should be popped.  */
Packit 70b277
  int yylen = 0;
Packit 70b277
Packit 70b277
  yyssp = yyss = yyssa;
Packit 70b277
  yyvsp = yyvs = yyvsa;
Packit 70b277
  yystacksize = YYINITDEPTH;
Packit 70b277
Packit 70b277
  YYDPRINTF ((stderr, "Starting parse\n"));
Packit 70b277
Packit 70b277
  yystate = 0;
Packit 70b277
  yyerrstatus = 0;
Packit 70b277
  yynerrs = 0;
Packit 70b277
  yychar = YYEMPTY; /* Cause a token to be read.  */
Packit 70b277
  goto yysetstate;
Packit 70b277
Packit 70b277
/*------------------------------------------------------------.
Packit 70b277
| yynewstate -- Push a new state, which is found in yystate.  |
Packit 70b277
`------------------------------------------------------------*/
Packit 70b277
 yynewstate:
Packit 70b277
  /* In all cases, when you get here, the value and location stacks
Packit 70b277
     have just been pushed.  So pushing a state here evens the stacks.  */
Packit 70b277
  yyssp++;
Packit 70b277
Packit 70b277
 yysetstate:
Packit 70b277
  *yyssp = yystate;
Packit 70b277
Packit 70b277
  if (yyss + yystacksize - 1 <= yyssp)
Packit 70b277
    {
Packit 70b277
      /* Get the current used size of the three stacks, in elements.  */
Packit 70b277
      YYSIZE_T yysize = yyssp - yyss + 1;
Packit 70b277
Packit 70b277
#ifdef yyoverflow
Packit 70b277
      {
Packit 70b277
        /* Give user a chance to reallocate the stack.  Use copies of
Packit 70b277
           these so that the &'s don't force the real ones into
Packit 70b277
           memory.  */
Packit 70b277
        YYSTYPE *yyvs1 = yyvs;
Packit 70b277
        yytype_int16 *yyss1 = yyss;
Packit 70b277
Packit 70b277
        /* Each stack pointer address is followed by the size of the
Packit 70b277
           data in use in that stack, in bytes.  This used to be a
Packit 70b277
           conditional around just the two extra args, but that might
Packit 70b277
           be undefined if yyoverflow is a macro.  */
Packit 70b277
        yyoverflow (YY_("memory exhausted"),
Packit 70b277
                    &yyss1, yysize * sizeof (*yyssp),
Packit 70b277
                    &yyvs1, yysize * sizeof (*yyvsp),
Packit 70b277
                    &yystacksize);
Packit 70b277
Packit 70b277
        yyss = yyss1;
Packit 70b277
        yyvs = yyvs1;
Packit 70b277
      }
Packit 70b277
#else /* no yyoverflow */
Packit 70b277
# ifndef YYSTACK_RELOCATE
Packit 70b277
      goto yyexhaustedlab;
Packit 70b277
# else
Packit 70b277
      /* Extend the stack our own way.  */
Packit 70b277
      if (YYMAXDEPTH <= yystacksize)
Packit 70b277
        goto yyexhaustedlab;
Packit 70b277
      yystacksize *= 2;
Packit 70b277
      if (YYMAXDEPTH < yystacksize)
Packit 70b277
        yystacksize = YYMAXDEPTH;
Packit 70b277
Packit 70b277
      {
Packit 70b277
        yytype_int16 *yyss1 = yyss;
Packit 70b277
        union yyalloc *yyptr =
Packit 70b277
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
Packit 70b277
        if (! yyptr)
Packit 70b277
          goto yyexhaustedlab;
Packit 70b277
        YYSTACK_RELOCATE (yyss_alloc, yyss);
Packit 70b277
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
Packit 70b277
#  undef YYSTACK_RELOCATE
Packit 70b277
        if (yyss1 != yyssa)
Packit 70b277
          YYSTACK_FREE (yyss1);
Packit 70b277
      }
Packit 70b277
# endif
Packit 70b277
#endif /* no yyoverflow */
Packit 70b277
Packit 70b277
      yyssp = yyss + yysize - 1;
Packit 70b277
      yyvsp = yyvs + yysize - 1;
Packit 70b277
Packit 70b277
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
Packit 70b277
                  (unsigned long int) yystacksize));
Packit 70b277
Packit 70b277
      if (yyss + yystacksize - 1 <= yyssp)
Packit 70b277
        YYABORT;
Packit 70b277
    }
Packit 70b277
Packit 70b277
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
Packit 70b277
Packit 70b277
  if (yystate == YYFINAL)
Packit 70b277
    YYACCEPT;
Packit 70b277
Packit 70b277
  goto yybackup;
Packit 70b277
Packit 70b277
/*-----------.
Packit 70b277
| yybackup.  |
Packit 70b277
`-----------*/
Packit 70b277
yybackup:
Packit 70b277
Packit 70b277
  /* Do appropriate processing given the current state.  Read a
Packit 70b277
     lookahead token if we need one and don't already have one.  */
Packit 70b277
Packit 70b277
  /* First try to decide what to do without reference to lookahead token.  */
Packit 70b277
  yyn = yypact[yystate];
Packit 70b277
  if (yypact_value_is_default (yyn))
Packit 70b277
    goto yydefault;
Packit 70b277
Packit 70b277
  /* Not known => get a lookahead token if don't already have one.  */
Packit 70b277
Packit 70b277
  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
Packit 70b277
  if (yychar == YYEMPTY)
Packit 70b277
    {
Packit 70b277
      YYDPRINTF ((stderr, "Reading a token: "));
Packit 70b277
      yychar = yylex ();
Packit 70b277
    }
Packit 70b277
Packit 70b277
  if (yychar <= YYEOF)
Packit 70b277
    {
Packit 70b277
      yychar = yytoken = YYEOF;
Packit 70b277
      YYDPRINTF ((stderr, "Now at end of input.\n"));
Packit 70b277
    }
Packit 70b277
  else
Packit 70b277
    {
Packit 70b277
      yytoken = YYTRANSLATE (yychar);
Packit 70b277
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
Packit 70b277
    }
Packit 70b277
Packit 70b277
  /* If the proper action on seeing token YYTOKEN is to reduce or to
Packit 70b277
     detect an error, take that action.  */
Packit 70b277
  yyn += yytoken;
Packit 70b277
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
Packit 70b277
    goto yydefault;
Packit 70b277
  yyn = yytable[yyn];
Packit 70b277
  if (yyn <= 0)
Packit 70b277
    {
Packit 70b277
      if (yytable_value_is_error (yyn))
Packit 70b277
        goto yyerrlab;
Packit 70b277
      yyn = -yyn;
Packit 70b277
      goto yyreduce;
Packit 70b277
    }
Packit 70b277
Packit 70b277
  /* Count tokens shifted since error; after three, turn off error
Packit 70b277
     status.  */
Packit 70b277
  if (yyerrstatus)
Packit 70b277
    yyerrstatus--;
Packit 70b277
Packit 70b277
  /* Shift the lookahead token.  */
Packit 70b277
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
Packit 70b277
Packit 70b277
  /* Discard the shifted token.  */
Packit 70b277
  yychar = YYEMPTY;
Packit 70b277
Packit 70b277
  yystate = yyn;
Packit 70b277
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Packit 70b277
  *++yyvsp = yylval;
Packit 70b277
  YY_IGNORE_MAYBE_UNINITIALIZED_END
Packit 70b277
Packit 70b277
  goto yynewstate;
Packit 70b277
Packit 70b277
Packit 70b277
/*-----------------------------------------------------------.
Packit 70b277
| yydefault -- do the default action for the current state.  |
Packit 70b277
`-----------------------------------------------------------*/
Packit 70b277
yydefault:
Packit 70b277
  yyn = yydefact[yystate];
Packit 70b277
  if (yyn == 0)
Packit 70b277
    goto yyerrlab;
Packit 70b277
  goto yyreduce;
Packit 70b277
Packit 70b277
Packit 70b277
/*-----------------------------.
Packit 70b277
| yyreduce -- Do a reduction.  |
Packit 70b277
`-----------------------------*/
Packit 70b277
yyreduce:
Packit 70b277
  /* yyn is the number of a rule to reduce with.  */
Packit 70b277
  yylen = yyr2[yyn];
Packit 70b277
Packit 70b277
  /* If YYLEN is nonzero, implement the default value of the action:
Packit 70b277
     '$$ = $1'.
Packit 70b277
Packit 70b277
     Otherwise, the following line sets YYVAL to garbage.
Packit 70b277
     This behavior is undocumented and Bison
Packit 70b277
     users should not rely upon it.  Assigning to YYVAL
Packit 70b277
     unconditionally makes the parser a bit smaller, and it avoids a
Packit 70b277
     GCC warning that YYVAL may be used uninitialized.  */
Packit 70b277
  yyval = yyvsp[1-yylen];
Packit 70b277
Packit 70b277
Packit 70b277
  YY_REDUCE_PRINT (yyn);
Packit 70b277
  switch (yyn)
Packit 70b277
    {
Packit 70b277
        case 2:
Packit 70b277
#line 123 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = 0;
Packit 70b277
			      if (interactive && !quiet)
Packit 70b277
				{
Packit 70b277
				  show_bc_version ();
Packit 70b277
				  welcome ();
Packit 70b277
				}
Packit 70b277
			    }
Packit 70b277
#line 1553 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 4:
Packit 70b277
#line 134 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { run_code (); }
Packit 70b277
#line 1559 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 5:
Packit 70b277
#line 136 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { run_code (); }
Packit 70b277
#line 1565 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 6:
Packit 70b277
#line 138 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      yyerrok;
Packit 70b277
			      init_gen ();
Packit 70b277
			    }
Packit 70b277
#line 1574 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 8:
Packit 70b277
#line 145 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { ct_warn ("newline not allowed"); }
Packit 70b277
#line 1580 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 9:
Packit 70b277
#line 148 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 0; }
Packit 70b277
#line 1586 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 13:
Packit 70b277
#line 154 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 0; }
Packit 70b277
#line 1592 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 20:
Packit 70b277
#line 163 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = (yyvsp[0].i_value); }
Packit 70b277
#line 1598 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 21:
Packit 70b277
#line 166 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { warranty (""); }
Packit 70b277
#line 1604 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 22:
Packit 70b277
#line 168 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { limits (); }
Packit 70b277
#line 1610 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 23:
Packit 70b277
#line 170 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_COMP)
Packit 70b277
				ct_warn ("comparison in expression");
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_REG)
Packit 70b277
				generate ("W");
Packit 70b277
			      else 
Packit 70b277
				generate ("p");
Packit 70b277
			    }
Packit 70b277
#line 1623 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 24:
Packit 70b277
#line 179 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = 0;
Packit 70b277
			      generate ("w");
Packit 70b277
			      generate ((yyvsp[0].s_value));
Packit 70b277
			      free ((yyvsp[0].s_value));
Packit 70b277
			    }
Packit 70b277
#line 1634 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 25:
Packit 70b277
#line 186 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (break_label == 0)
Packit 70b277
				yyerror ("Break outside a for/while");
Packit 70b277
			      else
Packit 70b277
				{
Packit 70b277
				  snprintf (genstr, genlen, "J%1d:",
Packit 70b277
				  	    break_label);
Packit 70b277
				  generate (genstr);
Packit 70b277
				}
Packit 70b277
			    }
Packit 70b277
#line 1649 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 26:
Packit 70b277
#line 197 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      ct_warn ("Continue statement");
Packit 70b277
			      if (continue_label == 0)
Packit 70b277
				yyerror ("Continue outside a for");
Packit 70b277
			      else
Packit 70b277
				{
Packit 70b277
				  snprintf (genstr, genlen, "J%1d:", 
Packit 70b277
					    continue_label);
Packit 70b277
				  generate (genstr);
Packit 70b277
				}
Packit 70b277
			    }
Packit 70b277
#line 1665 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 27:
Packit 70b277
#line 209 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { bc_exit (0); }
Packit 70b277
#line 1671 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 28:
Packit 70b277
#line 211 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { generate ("h"); }
Packit 70b277
#line 1677 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 29:
Packit 70b277
#line 213 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { generate ("R"); }
Packit 70b277
#line 1683 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 30:
Packit 70b277
#line 215 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyvsp[0].i_value) = break_label; 
Packit 70b277
			      break_label = next_label++;
Packit 70b277
			    }
Packit 70b277
#line 1692 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 31:
Packit 70b277
#line 220 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_COMP)
Packit 70b277
				ct_warn ("Comparison in first for expression");
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("first expression is void");
Packit 70b277
			      if (!((yyvsp[-1].i_value) & EX_EMPTY))
Packit 70b277
				generate ("p");
Packit 70b277
			      (yyvsp[-1].i_value) = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "N%1d:", (yyvsp[-1].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 1708 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 32:
Packit 70b277
#line 232 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("second expression is void");
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_EMPTY ) generate ("1");
Packit 70b277
			      (yyvsp[-1].i_value) = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "B%1d:J%1d:", (yyvsp[-1].i_value),
Packit 70b277
			      		break_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			      (yyval.i_value) = continue_label;
Packit 70b277
			      continue_label = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "N%1d:", 
Packit 70b277
			      		continue_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 1727 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 33:
Packit 70b277
#line 247 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_COMP)
Packit 70b277
				ct_warn ("Comparison in third for expression");
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("third expression is void");
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_EMPTY)
Packit 70b277
				snprintf (genstr, genlen, "J%1d:N%1d:", (yyvsp[-7].i_value), (yyvsp[-4].i_value));
Packit 70b277
			      else
Packit 70b277
				snprintf (genstr, genlen, "pJ%1d:N%1d:", (yyvsp[-7].i_value), (yyvsp[-4].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 1743 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 34:
Packit 70b277
#line 259 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      snprintf (genstr, genlen, "J%1d:N%1d:",
Packit 70b277
				       continue_label, break_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			      break_label = (yyvsp[-13].i_value);
Packit 70b277
			      continue_label = (yyvsp[-5].i_value);
Packit 70b277
			    }
Packit 70b277
#line 1755 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 35:
Packit 70b277
#line 267 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression");
Packit 70b277
			      (yyvsp[-1].i_value) = if_label;
Packit 70b277
			      if_label = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "Z%1d:", if_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 1768 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 36:
Packit 70b277
#line 276 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      snprintf (genstr, genlen, "N%1d:", if_label); 
Packit 70b277
			      generate (genstr);
Packit 70b277
			      if_label = (yyvsp[-5].i_value);
Packit 70b277
			    }
Packit 70b277
#line 1778 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 37:
Packit 70b277
#line 282 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyvsp[0].i_value) = continue_label;
Packit 70b277
			      continue_label = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "N%1d:", 
Packit 70b277
					continue_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 1790 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 38:
Packit 70b277
#line 290 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression");
Packit 70b277
			      (yyvsp[0].i_value) = break_label; 
Packit 70b277
			      break_label = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "Z%1d:", break_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 1803 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 39:
Packit 70b277
#line 299 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      snprintf (genstr, genlen, "J%1d:N%1d:", 
Packit 70b277
					continue_label, break_label);
Packit 70b277
			      generate (genstr);
Packit 70b277
			      break_label = (yyvsp[-4].i_value);
Packit 70b277
			      continue_label = (yyvsp[-7].i_value);
Packit 70b277
			    }
Packit 70b277
#line 1815 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 40:
Packit 70b277
#line 307 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 0; }
Packit 70b277
#line 1821 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 41:
Packit 70b277
#line 309 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {  ct_warn ("print statement"); }
Packit 70b277
#line 1827 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 45:
Packit 70b277
#line 316 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      generate ("O");
Packit 70b277
			      generate ((yyvsp[0].s_value));
Packit 70b277
			      free ((yyvsp[0].s_value));
Packit 70b277
			    }
Packit 70b277
#line 1837 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 46:
Packit 70b277
#line 322 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression in print");
Packit 70b277
			      generate ("P");
Packit 70b277
			    }
Packit 70b277
#line 1847 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 48:
Packit 70b277
#line 330 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      ct_warn ("else clause in if statement");
Packit 70b277
			      (yyvsp[0].i_value) = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "J%d:N%1d:", (yyvsp[0].i_value),
Packit 70b277
					if_label); 
Packit 70b277
			      generate (genstr);
Packit 70b277
			      if_label = (yyvsp[0].i_value);
Packit 70b277
			    }
Packit 70b277
#line 1860 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 50:
Packit 70b277
#line 342 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { char *params, *autos;
Packit 70b277
			      /* Check auto list against parameter list? */
Packit 70b277
			      check_params ((yyvsp[-5].a_value),(yyvsp[0].a_value));
Packit 70b277
			      params = arg_str ((yyvsp[-5].a_value));
Packit 70b277
			      autos  = arg_str ((yyvsp[0].a_value));
Packit 70b277
			      set_genstr_size (30 + strlen (params)
Packit 70b277
					       + strlen (autos));
Packit 70b277
			      cur_func = lookup((yyvsp[-7].s_value),FUNCTDEF);
Packit 70b277
			      snprintf (genstr, genlen, "F%d,%s.%s[", cur_func,
Packit 70b277
					params, autos); 
Packit 70b277
			      generate (genstr);
Packit 70b277
			      functions[cur_func].f_void = (yyvsp[-8].i_value);
Packit 70b277
			      free_args ((yyvsp[-5].a_value));
Packit 70b277
			      free_args ((yyvsp[0].a_value));
Packit 70b277
			      (yyvsp[-9].i_value) = next_label;
Packit 70b277
			      next_label = 1;
Packit 70b277
			    }
Packit 70b277
#line 1882 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 51:
Packit 70b277
#line 360 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      generate ("0R]");
Packit 70b277
			      next_label = (yyvsp[-12].i_value);
Packit 70b277
			      cur_func = -1;
Packit 70b277
			    }
Packit 70b277
#line 1892 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 52:
Packit 70b277
#line 367 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 0; }
Packit 70b277
#line 1898 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 53:
Packit 70b277
#line 369 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = 1;
Packit 70b277
			      ct_warn ("void functions");
Packit 70b277
			    }
Packit 70b277
#line 1907 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 54:
Packit 70b277
#line 375 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = NULL; }
Packit 70b277
#line 1913 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 56:
Packit 70b277
#line 379 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = NULL; }
Packit 70b277
#line 1919 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 57:
Packit 70b277
#line 381 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = (yyvsp[-1].a_value); }
Packit 70b277
#line 1925 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 58:
Packit 70b277
#line 383 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = (yyvsp[-1].a_value); }
Packit 70b277
#line 1931 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 59:
Packit 70b277
#line 386 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg (NULL, lookup ((yyvsp[0].s_value),SIMPLE), FALSE);}
Packit 70b277
#line 1937 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 60:
Packit 70b277
#line 388 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg (NULL, lookup ((yyvsp[-2].s_value),ARRAY), FALSE); }
Packit 70b277
#line 1943 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 61:
Packit 70b277
#line 390 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg (NULL, lookup ((yyvsp[-2].s_value),ARRAY), TRUE);
Packit 70b277
			      ct_warn ("Call by variable arrays");
Packit 70b277
			    }
Packit 70b277
#line 1951 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 62:
Packit 70b277
#line 394 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg (NULL, lookup ((yyvsp[-2].s_value),ARRAY), TRUE);
Packit 70b277
			      ct_warn ("Call by variable arrays");
Packit 70b277
			    }
Packit 70b277
#line 1959 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 63:
Packit 70b277
#line 398 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg ((yyvsp[-2].a_value), lookup ((yyvsp[0].s_value),SIMPLE), FALSE); }
Packit 70b277
#line 1965 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 64:
Packit 70b277
#line 400 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg ((yyvsp[-4].a_value), lookup ((yyvsp[-2].s_value),ARRAY), FALSE); }
Packit 70b277
#line 1971 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 65:
Packit 70b277
#line 402 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg ((yyvsp[-5].a_value), lookup ((yyvsp[-2].s_value),ARRAY), TRUE);
Packit 70b277
			      ct_warn ("Call by variable arrays");
Packit 70b277
			    }
Packit 70b277
#line 1979 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 66:
Packit 70b277
#line 406 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = nextarg ((yyvsp[-5].a_value), lookup ((yyvsp[-2].s_value),ARRAY), TRUE);
Packit 70b277
			      ct_warn ("Call by variable arrays");
Packit 70b277
			    }
Packit 70b277
#line 1987 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 67:
Packit 70b277
#line 411 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.a_value) = NULL; }
Packit 70b277
#line 1993 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 69:
Packit 70b277
#line 415 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_COMP)
Packit 70b277
				ct_warn ("comparison in argument");
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void argument");
Packit 70b277
			      (yyval.a_value) = nextarg (NULL,0,FALSE);
Packit 70b277
			    }
Packit 70b277
#line 2005 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 70:
Packit 70b277
#line 423 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      snprintf (genstr, genlen, "K%d:",
Packit 70b277
					-lookup ((yyvsp[-2].s_value),ARRAY));
Packit 70b277
			      generate (genstr);
Packit 70b277
			      (yyval.a_value) = nextarg (NULL,1,FALSE);
Packit 70b277
			    }
Packit 70b277
#line 2016 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 71:
Packit 70b277
#line 430 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_COMP)
Packit 70b277
				ct_warn ("comparison in argument");
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void argument");
Packit 70b277
			      (yyval.a_value) = nextarg ((yyvsp[-2].a_value),0,FALSE);
Packit 70b277
			    }
Packit 70b277
#line 2028 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 72:
Packit 70b277
#line 438 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      snprintf (genstr, genlen, "K%d:", 
Packit 70b277
					-lookup ((yyvsp[-2].s_value),ARRAY));
Packit 70b277
			      generate (genstr);
Packit 70b277
			      (yyval.a_value) = nextarg ((yyvsp[-4].a_value),1,FALSE);
Packit 70b277
			    }
Packit 70b277
#line 2039 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 73:
Packit 70b277
#line 456 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = EX_EMPTY;
Packit 70b277
			      ct_warn ("Missing expression in for statement");
Packit 70b277
			    }
Packit 70b277
#line 2048 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 75:
Packit 70b277
#line 463 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = 0;
Packit 70b277
			      generate ("0");
Packit 70b277
			      if (cur_func == -1)
Packit 70b277
				yyerror("Return outside of a function.");
Packit 70b277
			    }
Packit 70b277
#line 2059 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 76:
Packit 70b277
#line 470 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_COMP)
Packit 70b277
				ct_warn ("comparison in return expresion");
Packit 70b277
			      if (!((yyvsp[0].i_value) & EX_PAREN))
Packit 70b277
				ct_warn ("return expression requires parenthesis");
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror("return requires non-void expression");
Packit 70b277
			      if (cur_func == -1)
Packit 70b277
				yyerror("Return outside of a function.");
Packit 70b277
			      else if (functions[cur_func].f_void)
Packit 70b277
				yyerror("Return expression in a void function.");
Packit 70b277
			    }
Packit 70b277
#line 2076 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 77:
Packit 70b277
#line 484 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].c_value) != '=')
Packit 70b277
				{
Packit 70b277
				  if ((yyvsp[-1].i_value) < 0)
Packit 70b277
				    snprintf (genstr, genlen, "DL%d:", -(yyvsp[-1].i_value));
Packit 70b277
				  else
Packit 70b277
				    snprintf (genstr, genlen, "l%d:", (yyvsp[-1].i_value));
Packit 70b277
				  generate (genstr);
Packit 70b277
				}
Packit 70b277
			    }
Packit 70b277
#line 2091 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 78:
Packit 70b277
#line 495 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_ASSGN)
Packit 70b277
				ct_warn("comparison in assignment");
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror("Assignment of a void expression");
Packit 70b277
			      if ((yyvsp[-2].c_value) != '=')
Packit 70b277
				{
Packit 70b277
				  snprintf (genstr, genlen, "%c", (yyvsp[-2].c_value));
Packit 70b277
				  generate (genstr);
Packit 70b277
				}
Packit 70b277
			      if ((yyvsp[-3].i_value) < 0)
Packit 70b277
				snprintf (genstr, genlen, "S%d:", -(yyvsp[-3].i_value));
Packit 70b277
			      else
Packit 70b277
				snprintf (genstr, genlen, "s%d:", (yyvsp[-3].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			      (yyval.i_value) = EX_ASSGN;
Packit 70b277
			    }
Packit 70b277
#line 2113 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 79:
Packit 70b277
#line 513 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      ct_warn("&& operator");
Packit 70b277
			      (yyvsp[0].i_value) = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "DZ%d:p", (yyvsp[0].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 2124 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 80:
Packit 70b277
#line 520 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-3].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with &&";;
Packit 70b277
			      snprintf (genstr, genlen, "DZ%d:p1N%d:", (yyvsp[-2].i_value), (yyvsp[-2].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-3].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2136 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 81:
Packit 70b277
#line 528 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      ct_warn("|| operator");
Packit 70b277
			      (yyvsp[0].i_value) = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "B%d:", (yyvsp[0].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 2147 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 82:
Packit 70b277
#line 535 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      int tmplab;
Packit 70b277
			      if (((yyvsp[-3].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with ||");
Packit 70b277
			      tmplab = next_label++;
Packit 70b277
			      snprintf (genstr, genlen, "B%d:0J%d:N%d:1N%d:",
Packit 70b277
				       (yyvsp[-2].i_value), tmplab, (yyvsp[-2].i_value), tmplab);
Packit 70b277
			      generate (genstr);
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-3].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2162 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 83:
Packit 70b277
#line 546 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression with !");
Packit 70b277
			      (yyval.i_value) = (yyvsp[0].i_value) & ~EX_PAREN;
Packit 70b277
			      ct_warn("! operator");
Packit 70b277
			      generate ("!");
Packit 70b277
			    }
Packit 70b277
#line 2174 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 84:
Packit 70b277
#line 554 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with comparison");
Packit 70b277
			      (yyval.i_value) = EX_REG | EX_COMP;
Packit 70b277
			      switch (*((yyvsp[-1].s_value)))
Packit 70b277
				{
Packit 70b277
				case '=':
Packit 70b277
				  generate ("=");
Packit 70b277
				  break;
Packit 70b277
Packit 70b277
				case '!':
Packit 70b277
				  generate ("#");
Packit 70b277
				  break;
Packit 70b277
Packit 70b277
				case '<':
Packit 70b277
				  if ((yyvsp[-1].s_value)[1] == '=')
Packit 70b277
				    generate ("{");
Packit 70b277
				  else
Packit 70b277
				    generate ("<");
Packit 70b277
				  break;
Packit 70b277
Packit 70b277
				case '>':
Packit 70b277
				  if ((yyvsp[-1].s_value)[1] == '=')
Packit 70b277
				    generate ("}");
Packit 70b277
				  else
Packit 70b277
				    generate (">");
Packit 70b277
				  break;
Packit 70b277
				}
Packit 70b277
                              free((yyvsp[-1].s_value));
Packit 70b277
			    }
Packit 70b277
#line 2209 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 85:
Packit 70b277
#line 585 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with +");
Packit 70b277
			      generate ("+");
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-2].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2220 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 86:
Packit 70b277
#line 592 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with -");
Packit 70b277
			      generate ("-");
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-2].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2231 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 87:
Packit 70b277
#line 599 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with *");
Packit 70b277
			      generate ("*");
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-2].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2242 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 88:
Packit 70b277
#line 606 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with /");
Packit 70b277
			      generate ("/");
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-2].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2253 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 89:
Packit 70b277
#line 613 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with %");
Packit 70b277
			      generate ("%");
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-2].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2264 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 90:
Packit 70b277
#line 620 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if (((yyvsp[-2].i_value) & EX_VOID) || ((yyvsp[0].i_value) & EX_VOID))
Packit 70b277
				yyerror ("void expression with ^");
Packit 70b277
			      generate ("^");
Packit 70b277
			      (yyval.i_value) = ((yyvsp[-2].i_value) | (yyvsp[0].i_value)) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2275 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 91:
Packit 70b277
#line 627 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[0].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression with unary -");
Packit 70b277
			      generate ("n");
Packit 70b277
			      (yyval.i_value) = (yyvsp[0].i_value) & ~EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2286 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 92:
Packit 70b277
#line 634 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			      if ((yyvsp[0].i_value) < 0)
Packit 70b277
				snprintf (genstr, genlen, "L%d:", -(yyvsp[0].i_value));
Packit 70b277
			      else
Packit 70b277
				snprintf (genstr, genlen, "l%d:", (yyvsp[0].i_value));
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 2299 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 93:
Packit 70b277
#line 643 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      int len = strlen((yyvsp[0].s_value));
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			      if (len == 1 && *(yyvsp[0].s_value) == '0')
Packit 70b277
				generate ("0");
Packit 70b277
			      else if (len == 1 && *(yyvsp[0].s_value) == '1')
Packit 70b277
				generate ("1");
Packit 70b277
			      else
Packit 70b277
				{
Packit 70b277
				  generate ("K");
Packit 70b277
				  generate ((yyvsp[0].s_value));
Packit 70b277
				  generate (":");
Packit 70b277
				}
Packit 70b277
			      free ((yyvsp[0].s_value));
Packit 70b277
			    }
Packit 70b277
#line 2319 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 94:
Packit 70b277
#line 659 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { 
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression in parenthesis");
Packit 70b277
			      (yyval.i_value) = (yyvsp[-1].i_value) | EX_REG | EX_PAREN;
Packit 70b277
			    }
Packit 70b277
#line 2329 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 95:
Packit 70b277
#line 665 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { int fn;
Packit 70b277
			      fn = lookup ((yyvsp[-3].s_value),FUNCT);
Packit 70b277
			      if (functions[fn].f_void)
Packit 70b277
				(yyval.i_value) = EX_VOID;
Packit 70b277
			      else
Packit 70b277
				(yyval.i_value) = EX_REG;
Packit 70b277
			      if ((yyvsp[-1].a_value) != NULL)
Packit 70b277
				{ char *params = call_str ((yyvsp[-1].a_value));
Packit 70b277
				  set_genstr_size (20 + strlen (params));
Packit 70b277
				  snprintf (genstr, genlen, "C%d,%s:", fn,
Packit 70b277
				  	    params);
Packit 70b277
				  free_args ((yyvsp[-1].a_value));
Packit 70b277
				}
Packit 70b277
			      else
Packit 70b277
				{
Packit 70b277
				  snprintf (genstr, genlen, "C%d:", fn);
Packit 70b277
				}
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 2353 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 96:
Packit 70b277
#line 685 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			      if ((yyvsp[0].i_value) < 0)
Packit 70b277
				{
Packit 70b277
				  if ((yyvsp[-1].c_value) == '+')
Packit 70b277
				    snprintf (genstr, genlen, "DA%d:L%d:", -(yyvsp[0].i_value), -(yyvsp[0].i_value));
Packit 70b277
				  else
Packit 70b277
				    snprintf (genstr, genlen, "DM%d:L%d:", -(yyvsp[0].i_value), -(yyvsp[0].i_value));
Packit 70b277
				}
Packit 70b277
			      else
Packit 70b277
				{
Packit 70b277
				  if ((yyvsp[-1].c_value) == '+')
Packit 70b277
				    snprintf (genstr, genlen, "i%d:l%d:", (yyvsp[0].i_value), (yyvsp[0].i_value));
Packit 70b277
				  else
Packit 70b277
				    snprintf (genstr, genlen, "d%d:l%d:", (yyvsp[0].i_value), (yyvsp[0].i_value));
Packit 70b277
				}
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 2376 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 97:
Packit 70b277
#line 704 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			      if ((yyvsp[-1].i_value) < 0)
Packit 70b277
				{
Packit 70b277
				  snprintf (genstr, genlen, "DL%d:x", -(yyvsp[-1].i_value));
Packit 70b277
				  generate (genstr); 
Packit 70b277
				  if ((yyvsp[0].c_value) == '+')
Packit 70b277
				    snprintf (genstr, genlen, "A%d:", -(yyvsp[-1].i_value));
Packit 70b277
				  else
Packit 70b277
				      snprintf (genstr, genlen, "M%d:", -(yyvsp[-1].i_value));
Packit 70b277
				}
Packit 70b277
			      else
Packit 70b277
				{
Packit 70b277
				  snprintf (genstr, genlen, "l%d:", (yyvsp[-1].i_value));
Packit 70b277
				  generate (genstr);
Packit 70b277
				  if ((yyvsp[0].c_value) == '+')
Packit 70b277
				    snprintf (genstr, genlen, "i%d:", (yyvsp[-1].i_value));
Packit 70b277
				  else
Packit 70b277
				    snprintf (genstr, genlen, "d%d:", (yyvsp[-1].i_value));
Packit 70b277
				}
Packit 70b277
			      generate (genstr);
Packit 70b277
			    }
Packit 70b277
#line 2403 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 98:
Packit 70b277
#line 727 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression in length()");
Packit 70b277
			      generate ("cL");
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			    }
Packit 70b277
#line 2414 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 99:
Packit 70b277
#line 734 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression in sqrt()");
Packit 70b277
			      generate ("cR");
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			    }
Packit 70b277
#line 2425 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 100:
Packit 70b277
#line 741 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror ("void expression in scale()");
Packit 70b277
			      generate ("cS");
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			    }
Packit 70b277
#line 2436 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 101:
Packit 70b277
#line 748 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      ct_warn ("read function");
Packit 70b277
			      generate ("cI");
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			    }
Packit 70b277
#line 2446 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 102:
Packit 70b277
#line 754 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      ct_warn ("random function");
Packit 70b277
			      generate ("cX");
Packit 70b277
			      (yyval.i_value) = EX_REG;
Packit 70b277
			    }
Packit 70b277
#line 2456 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 103:
Packit 70b277
#line 761 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = lookup((yyvsp[0].s_value),SIMPLE); }
Packit 70b277
#line 2462 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 104:
Packit 70b277
#line 763 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    {
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_VOID)
Packit 70b277
				yyerror("void expression as subscript");
Packit 70b277
			      if ((yyvsp[-1].i_value) & EX_COMP)
Packit 70b277
				ct_warn("comparison in subscript");
Packit 70b277
			      (yyval.i_value) = lookup((yyvsp[-3].s_value),ARRAY);
Packit 70b277
			    }
Packit 70b277
#line 2474 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 105:
Packit 70b277
#line 771 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 0; }
Packit 70b277
#line 2480 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 106:
Packit 70b277
#line 773 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 1; }
Packit 70b277
#line 2486 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 107:
Packit 70b277
#line 775 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 2; }
Packit 70b277
#line 2492 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 108:
Packit 70b277
#line 777 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 3;
Packit 70b277
			      ct_warn ("History variable");
Packit 70b277
			    }
Packit 70b277
#line 2500 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 109:
Packit 70b277
#line 781 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { (yyval.i_value) = 4;
Packit 70b277
			      ct_warn ("Last variable");
Packit 70b277
			    }
Packit 70b277
#line 2508 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 110:
Packit 70b277
#line 787 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { ct_warn ("End of line required"); }
Packit 70b277
#line 2514 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
  case 112:
Packit 70b277
#line 790 "../../bc/bc.y" /* yacc.c:1646  */
Packit 70b277
    { ct_warn ("Too many end of lines"); }
Packit 70b277
#line 2520 "bc.c" /* yacc.c:1646  */
Packit 70b277
    break;
Packit 70b277
Packit 70b277
Packit 70b277
#line 2524 "bc.c" /* yacc.c:1646  */
Packit 70b277
      default: break;
Packit 70b277
    }
Packit 70b277
  /* User semantic actions sometimes alter yychar, and that requires
Packit 70b277
     that yytoken be updated with the new translation.  We take the
Packit 70b277
     approach of translating immediately before every use of yytoken.
Packit 70b277
     One alternative is translating here after every semantic action,
Packit 70b277
     but that translation would be missed if the semantic action invokes
Packit 70b277
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
Packit 70b277
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
Packit 70b277
     incorrect destructor might then be invoked immediately.  In the
Packit 70b277
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
Packit 70b277
     to an incorrect destructor call or verbose syntax error message
Packit 70b277
     before the lookahead is translated.  */
Packit 70b277
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
Packit 70b277
Packit 70b277
  YYPOPSTACK (yylen);
Packit 70b277
  yylen = 0;
Packit 70b277
  YY_STACK_PRINT (yyss, yyssp);
Packit 70b277
Packit 70b277
  *++yyvsp = yyval;
Packit 70b277
Packit 70b277
  /* Now 'shift' the result of the reduction.  Determine what state
Packit 70b277
     that goes to, based on the state we popped back to and the rule
Packit 70b277
     number reduced by.  */
Packit 70b277
Packit 70b277
  yyn = yyr1[yyn];
Packit 70b277
Packit 70b277
  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
Packit 70b277
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
Packit 70b277
    yystate = yytable[yystate];
Packit 70b277
  else
Packit 70b277
    yystate = yydefgoto[yyn - YYNTOKENS];
Packit 70b277
Packit 70b277
  goto yynewstate;
Packit 70b277
Packit 70b277
Packit 70b277
/*--------------------------------------.
Packit 70b277
| yyerrlab -- here on detecting error.  |
Packit 70b277
`--------------------------------------*/
Packit 70b277
yyerrlab:
Packit 70b277
  /* Make sure we have latest lookahead translation.  See comments at
Packit 70b277
     user semantic actions for why this is necessary.  */
Packit 70b277
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
Packit 70b277
Packit 70b277
  /* If not already recovering from an error, report this error.  */
Packit 70b277
  if (!yyerrstatus)
Packit 70b277
    {
Packit 70b277
      ++yynerrs;
Packit 70b277
#if ! YYERROR_VERBOSE
Packit 70b277
      yyerror (YY_("syntax error"));
Packit 70b277
#else
Packit 70b277
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
Packit 70b277
                                        yyssp, yytoken)
Packit 70b277
      {
Packit 70b277
        char const *yymsgp = YY_("syntax error");
Packit 70b277
        int yysyntax_error_status;
Packit 70b277
        yysyntax_error_status = YYSYNTAX_ERROR;
Packit 70b277
        if (yysyntax_error_status == 0)
Packit 70b277
          yymsgp = yymsg;
Packit 70b277
        else if (yysyntax_error_status == 1)
Packit 70b277
          {
Packit 70b277
            if (yymsg != yymsgbuf)
Packit 70b277
              YYSTACK_FREE (yymsg);
Packit 70b277
            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
Packit 70b277
            if (!yymsg)
Packit 70b277
              {
Packit 70b277
                yymsg = yymsgbuf;
Packit 70b277
                yymsg_alloc = sizeof yymsgbuf;
Packit 70b277
                yysyntax_error_status = 2;
Packit 70b277
              }
Packit 70b277
            else
Packit 70b277
              {
Packit 70b277
                yysyntax_error_status = YYSYNTAX_ERROR;
Packit 70b277
                yymsgp = yymsg;
Packit 70b277
              }
Packit 70b277
          }
Packit 70b277
        yyerror (yymsgp);
Packit 70b277
        if (yysyntax_error_status == 2)
Packit 70b277
          goto yyexhaustedlab;
Packit 70b277
      }
Packit 70b277
# undef YYSYNTAX_ERROR
Packit 70b277
#endif
Packit 70b277
    }
Packit 70b277
Packit 70b277
Packit 70b277
Packit 70b277
  if (yyerrstatus == 3)
Packit 70b277
    {
Packit 70b277
      /* If just tried and failed to reuse lookahead token after an
Packit 70b277
         error, discard it.  */
Packit 70b277
Packit 70b277
      if (yychar <= YYEOF)
Packit 70b277
        {
Packit 70b277
          /* Return failure if at end of input.  */
Packit 70b277
          if (yychar == YYEOF)
Packit 70b277
            YYABORT;
Packit 70b277
        }
Packit 70b277
      else
Packit 70b277
        {
Packit 70b277
          yydestruct ("Error: discarding",
Packit 70b277
                      yytoken, &yylval);
Packit 70b277
          yychar = YYEMPTY;
Packit 70b277
        }
Packit 70b277
    }
Packit 70b277
Packit 70b277
  /* Else will try to reuse lookahead token after shifting the error
Packit 70b277
     token.  */
Packit 70b277
  goto yyerrlab1;
Packit 70b277
Packit 70b277
Packit 70b277
/*---------------------------------------------------.
Packit 70b277
| yyerrorlab -- error raised explicitly by YYERROR.  |
Packit 70b277
`---------------------------------------------------*/
Packit 70b277
yyerrorlab:
Packit 70b277
Packit 70b277
  /* Pacify compilers like GCC when the user code never invokes
Packit 70b277
     YYERROR and the label yyerrorlab therefore never appears in user
Packit 70b277
     code.  */
Packit 70b277
  if (/*CONSTCOND*/ 0)
Packit 70b277
     goto yyerrorlab;
Packit 70b277
Packit 70b277
  /* Do not reclaim the symbols of the rule whose action triggered
Packit 70b277
     this YYERROR.  */
Packit 70b277
  YYPOPSTACK (yylen);
Packit 70b277
  yylen = 0;
Packit 70b277
  YY_STACK_PRINT (yyss, yyssp);
Packit 70b277
  yystate = *yyssp;
Packit 70b277
  goto yyerrlab1;
Packit 70b277
Packit 70b277
Packit 70b277
/*-------------------------------------------------------------.
Packit 70b277
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
Packit 70b277
`-------------------------------------------------------------*/
Packit 70b277
yyerrlab1:
Packit 70b277
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
Packit 70b277
Packit 70b277
  for (;;)
Packit 70b277
    {
Packit 70b277
      yyn = yypact[yystate];
Packit 70b277
      if (!yypact_value_is_default (yyn))
Packit 70b277
        {
Packit 70b277
          yyn += YYTERROR;
Packit 70b277
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
Packit 70b277
            {
Packit 70b277
              yyn = yytable[yyn];
Packit 70b277
              if (0 < yyn)
Packit 70b277
                break;
Packit 70b277
            }
Packit 70b277
        }
Packit 70b277
Packit 70b277
      /* Pop the current state because it cannot handle the error token.  */
Packit 70b277
      if (yyssp == yyss)
Packit 70b277
        YYABORT;
Packit 70b277
Packit 70b277
Packit 70b277
      yydestruct ("Error: popping",
Packit 70b277
                  yystos[yystate], yyvsp);
Packit 70b277
      YYPOPSTACK (1);
Packit 70b277
      yystate = *yyssp;
Packit 70b277
      YY_STACK_PRINT (yyss, yyssp);
Packit 70b277
    }
Packit 70b277
Packit 70b277
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Packit 70b277
  *++yyvsp = yylval;
Packit 70b277
  YY_IGNORE_MAYBE_UNINITIALIZED_END
Packit 70b277
Packit 70b277
Packit 70b277
  /* Shift the error token.  */
Packit 70b277
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
Packit 70b277
Packit 70b277
  yystate = yyn;
Packit 70b277
  goto yynewstate;
Packit 70b277
Packit 70b277
Packit 70b277
/*-------------------------------------.
Packit 70b277
| yyacceptlab -- YYACCEPT comes here.  |
Packit 70b277
`-------------------------------------*/
Packit 70b277
yyacceptlab:
Packit 70b277
  yyresult = 0;
Packit 70b277
  goto yyreturn;
Packit 70b277
Packit 70b277
/*-----------------------------------.
Packit 70b277
| yyabortlab -- YYABORT comes here.  |
Packit 70b277
`-----------------------------------*/
Packit 70b277
yyabortlab:
Packit 70b277
  yyresult = 1;
Packit 70b277
  goto yyreturn;
Packit 70b277
Packit 70b277
#if !defined yyoverflow || YYERROR_VERBOSE
Packit 70b277
/*-------------------------------------------------.
Packit 70b277
| yyexhaustedlab -- memory exhaustion comes here.  |
Packit 70b277
`-------------------------------------------------*/
Packit 70b277
yyexhaustedlab:
Packit 70b277
  yyerror (YY_("memory exhausted"));
Packit 70b277
  yyresult = 2;
Packit 70b277
  /* Fall through.  */
Packit 70b277
#endif
Packit 70b277
Packit 70b277
yyreturn:
Packit 70b277
  if (yychar != YYEMPTY)
Packit 70b277
    {
Packit 70b277
      /* Make sure we have latest lookahead translation.  See comments at
Packit 70b277
         user semantic actions for why this is necessary.  */
Packit 70b277
      yytoken = YYTRANSLATE (yychar);
Packit 70b277
      yydestruct ("Cleanup: discarding lookahead",
Packit 70b277
                  yytoken, &yylval);
Packit 70b277
    }
Packit 70b277
  /* Do not reclaim the symbols of the rule whose action triggered
Packit 70b277
     this YYABORT or YYACCEPT.  */
Packit 70b277
  YYPOPSTACK (yylen);
Packit 70b277
  YY_STACK_PRINT (yyss, yyssp);
Packit 70b277
  while (yyssp != yyss)
Packit 70b277
    {
Packit 70b277
      yydestruct ("Cleanup: popping",
Packit 70b277
                  yystos[*yyssp], yyvsp);
Packit 70b277
      YYPOPSTACK (1);
Packit 70b277
    }
Packit 70b277
#ifndef yyoverflow
Packit 70b277
  if (yyss != yyssa)
Packit 70b277
    YYSTACK_FREE (yyss);
Packit 70b277
#endif
Packit 70b277
#if YYERROR_VERBOSE
Packit 70b277
  if (yymsg != yymsgbuf)
Packit 70b277
    YYSTACK_FREE (yymsg);
Packit 70b277
#endif
Packit 70b277
  return yyresult;
Packit 70b277
}
Packit 70b277
#line 793 "../../bc/bc.y" /* yacc.c:1906  */
Packit 70b277