#ifndef lint
static const char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
#endif

#ifdef _LIBC
#include "namespace.h"
#endif
#include <stdlib.h>
#include <string.h>

#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9

#define YYEMPTY        (-1)
#define yyclearin      (yychar = YYEMPTY)
#define yyerrok        (yyerrflag = 0)
#define YYRECOVERING() (yyerrflag != 0)

/* compatibility with bison */
#ifdef YYPARSE_PARAM
/* compatibility with FreeBSD */
# ifdef YYPARSE_PARAM_TYPE
#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
# else
#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
# endif
#else
# define YYPARSE_DECL() yyparse(void)
#endif

/* Pure parsers. */
#define YYPURE 0
#ifdef YYLEX_PARAM
# define YYLEX yylex(YYLEX_PARAM)
#else
# define YYLEX yylex()
#endif

#define YYPREFIX "yy"
#line 125 "gram.y"
#include "defs.h"
#include "p1defs.h"

static int nstars;			/* Number of labels in an
					   alternate return CALL */
static int datagripe;
static int ndim;
static int vartype;
int new_dcl;
static ftnint varleng;
static struct Dims dims[MAXDIM+1];
extern struct Labelblock **labarray;	/* Labels in an alternate
						   return CALL */
extern int maxlablist;

/* The next two variables are used to verify that each statement might be reached
   during runtime.   lastwasbranch   is tested only in the defintion of the
   stat:   nonterminal. */

int lastwasbranch = NO;
static int thiswasbranch = NO;
extern ftnint yystno;
extern flag intonly;
static chainp datastack;
extern long laststfcn, thisstno;
extern int can_include;	/* for netlib */
extern void endcheck Argdcl((void));
extern struct Primblock *primchk Argdcl((expptr));

#define ESNULL (Extsym *)0
#define NPNULL (Namep)0
#define LBNULL (struct Listblock *)0

 static void
pop_datastack(Void) {
	chainp d0 = datastack;
	if (d0->datap)
		curdtp = (chainp)d0->datap;
	datastack = d0->nextp;
	d0->nextp = 0;
	frchain(&d0);
	}

#line 172 "gram.y"
typedef union YYSTYPE	{
	int ival;
	ftnint lval;
	char *charpval;
	chainp chval;
	tagptr tagval;
	expptr expval;
	struct Labelblock *labval;
	struct Nameblock *namval;
	struct Eqvchain *eqvval;
	Extsym *extval;
	} YYSTYPE;
#line 98 "gram.c"
#define SEOS 1
#define SCOMMENT 2
#define SLABEL 3
#define SUNKNOWN 4
#define SHOLLERITH 5
#define SICON 6
#define SRCON 7
#define SDCON 8
#define SBITCON 9
#define SOCTCON 10
#define SHEXCON 11
#define STRUE 12
#define SFALSE 13
#define SNAME 14
#define SNAMEEQ 15
#define SFIELD 16
#define SSCALE 17
#define SINCLUDE 18
#define SLET 19
#define SASSIGN 20
#define SAUTOMATIC 21
#define SBACKSPACE 22
#define SBLOCK 23
#define SCALL 24
#define SCHARACTER 25
#define SCLOSE 26
#define SCOMMON 27
#define SCOMPLEX 28
#define SCONTINUE 29
#define SDATA 30
#define SDCOMPLEX 31
#define SDIMENSION 32
#define SDO 33
#define SDOUBLE 34
#define SELSE 35
#define SELSEIF 36
#define SEND 37
#define SENDFILE 38
#define SENDIF 39
#define SENTRY 40
#define SEQUIV 41
#define SEXTERNAL 42
#define SFORMAT 43
#define SFUNCTION 44
#define SGOTO 45
#define SASGOTO 46
#define SCOMPGOTO 47
#define SARITHIF 48
#define SLOGIF 49
#define SIMPLICIT 50
#define SINQUIRE 51
#define SINTEGER 52
#define SINTRINSIC 53
#define SLOGICAL 54
#define SNAMELIST 55
#define SOPEN 56
#define SPARAM 57
#define SPAUSE 58
#define SPRINT 59
#define SPROGRAM 60
#define SPUNCH 61
#define SREAD 62
#define SREAL 63
#define SRETURN 64
#define SREWIND 65
#define SSAVE 66
#define SSTATIC 67
#define SSTOP 68
#define SSUBROUTINE 69
#define STHEN 70
#define STO 71
#define SUNDEFINED 72
#define SWRITE 73
#define SLPAR 74
#define SRPAR 75
#define SEQUALS 76
#define SCOLON 77
#define SCOMMA 78
#define SCURRENCY 79
#define SPLUS 80
#define SMINUS 81
#define SSTAR 82
#define SSLASH 83
#define SPOWER 84
#define SCONCAT 85
#define SAND 86
#define SOR 87
#define SNEQV 88
#define SEQV 89
#define SNOT 90
#define SEQ 91
#define SLT 92
#define SGT 93
#define SLE 94
#define SGE 95
#define SNE 96
#define SENDDO 97
#define SWHILE 98
#define SSLASHD 99
#define SBYTE 100
#define YYERRCODE 256
static const short yylhs[] = {                           -1,
    0,    0,   54,   54,   54,   54,   54,   54,   54,    1,
   55,   55,   55,   55,   55,   55,   55,   59,   51,   32,
   52,   52,   60,   60,   61,   61,   62,   62,   25,   25,
   25,   26,   26,   33,   33,   16,   56,   56,   56,   56,
   56,   56,   56,   56,   56,   56,   56,   56,    9,    9,
    9,   73,    6,    7,    8,    8,    8,    8,    8,    8,
    8,    8,    8,    8,    8,    8,   15,   15,   15,   49,
   49,   49,   49,   50,   50,   63,   63,   64,   64,   65,
   65,   79,   53,   53,   66,   66,   80,   81,   75,   82,
   84,   76,   76,   83,   83,   44,   44,   44,   69,   69,
   85,   85,   71,   71,   86,   35,   17,   17,   18,   18,
   74,   74,   89,   87,   87,   88,   88,   42,   42,   90,
   90,    2,   67,   67,   91,   91,   94,   92,   93,   93,
   95,   95,   10,   68,   68,   96,   19,   19,   70,   20,
   20,   21,   21,   37,   37,   37,   38,   38,   38,   38,
   38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
   11,   11,   12,   12,   12,   12,   12,   12,   36,   36,
   36,   36,   31,   39,   39,   43,   43,   47,   47,   47,
   47,   47,   47,   47,   46,   48,   48,   48,   40,   40,
   41,   41,   41,   41,   41,   41,   41,   41,   57,   57,
   57,   57,   57,   57,   99,   57,   57,   57,   98,   22,
   23,  100,   23,   97,   97,   97,   97,   97,   97,   97,
   97,   97,   97,   97,    3,  101,  102,  102,  102,  102,
   72,   72,   34,   24,   24,   45,   45,   13,   13,   27,
   27,   58,   77,   78,  103,  104,  104,  104,  104,  104,
  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
  105,  112,  112,  112,  107,  114,  114,  114,  109,  109,
  106,  106,  115,  115,  116,  116,  116,  116,  116,  116,
   14,  108,  110,  111,  111,   28,   28,    5,    5,   29,
   29,   29,   30,   30,   30,   30,   30,   30,    4,    4,
    4,    4,    4,  113,
};
static const short yylen[] = {                            2,
    0,    3,    2,    2,    2,    3,    3,    2,    1,    1,
    3,    4,    3,    4,    4,    5,    3,    0,    1,    1,
    0,    1,    2,    3,    1,    3,    1,    3,    0,    2,
    3,    1,    3,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    2,    1,    5,    7,    5,
    5,    0,    2,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    0,    4,    6,    3,
    4,    5,    3,    1,    3,    3,    3,    3,    3,    3,
    3,    3,    1,    3,    3,    3,    0,    6,    0,    0,
    0,    2,    3,    1,    3,    1,    2,    1,    1,    3,
    1,    1,    1,    3,    3,    2,    1,    5,    1,    3,
    0,    3,    0,    2,    3,    1,    3,    1,    1,    1,
    3,    1,    3,    3,    4,    1,    0,    2,    1,    3,
    1,    3,    1,    1,    2,    4,    1,    3,    0,    0,
    1,    1,    3,    1,    3,    1,    1,    1,    3,    3,
    3,    3,    2,    3,    3,    3,    3,    3,    2,    3,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
    4,    5,    5,    0,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    5,    1,    1,    1,    1,    3,
    1,    1,    3,    3,    3,    3,    2,    3,    1,    5,
    4,    1,    2,    2,    0,    7,    2,    2,    5,    3,
    1,    0,    5,    4,    5,    2,    1,    1,   10,    1,
    3,    4,    3,    3,    1,    1,    3,    3,    7,    7,
    0,    1,    3,    1,    3,    1,    2,    1,    1,    1,
    3,    0,    0,    0,    1,    2,    2,    2,    2,    2,
    2,    2,    3,    4,    4,    2,    3,    4,    1,    3,
    3,    1,    1,    1,    3,    1,    1,    1,    1,    1,
    3,    3,    1,    3,    1,    1,    1,    2,    2,    2,
    1,    3,    3,    4,    4,    1,    3,    1,    5,    1,
    1,    1,    3,    3,    3,    3,    3,    3,    1,    3,
    5,    5,    5,    0,
};
static const short yydefred[] = {                         1,
    0,    9,   10,    0,    0,    8,    0,  226,  242,   64,
  262,   18,  242,   61,  268,  139,   57,  242,   87,   59,
   63,  242,   58,  242,  242,  242,  264,  242,    0,  139,
  139,   47,   18,  242,  242,  242,  242,  242,  139,  266,
   55,  139,   60,  134,  267,  139,  238,  242,   18,  242,
   56,  242,  263,    0,   65,  239,   18,   62,  242,  202,
   66,    0,    0,   54,    0,  242,    0,    0,    3,    4,
    5,    0,    0,    0,    0,    0,    0,  199,    0,    0,
  217,  218,  245,    0,    0,    0,    0,    0,  242,  242,
    2,   36,    6,    0,    0,    0,    0,  216,   89,    0,
  207,    0,    7,  208,   20,   19,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  127,    0,    0,    0,    0,
  304,    0,    0,   74,  101,  102,    0,   99,    0,  304,
   18,  232,    0,  243,   53,    0,   89,    0,    0,    0,
    0,    0,    0,    0,   89,  127,    0,  135,  204,  203,
    0,    0,  180,  181,  182,  183,  188,  187,  186,  178,
  179,    0,  161,  162,  248,  249,    0,  191,    0,    0,
  192,  184,  246,    0,  250,  270,    0,    0,    0,    0,
    0,  304,  304,  225,    0,   22,   13,  233,    0,   70,
    0,    0,   85,  122,    0,    0,  205,    0,   17,    0,
   80,   76,    0,  227,    0,    0,    0,    0,  123,    0,
    0,   78,    0,    0,  304,    0,  189,    0,  282,    0,
    0,    0,  147,    0,  144,  223,  146,  148,    0,    0,
    0,  283,    0,  139,    0,    0,   91,  224,  221,    0,
    0,    0,  234,   73,    0,   77,   79,   81,   86,  124,
    0,    0,  170,    0,  281,  276,  277,    0,    0,    0,
  273,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  286,    0,  288,    0,    0,    0,    0,  257,    0,    0,
    0,    0,  260,  261,  265,    0,  113,  106,   71,    0,
  109,    0,  107,    0,  212,  211,  201,    0,    0,   30,
   35,    0,   34,   32,   83,    0,   15,    0,  120,    0,
    0,    0,    0,  128,    0,    0,  103,    0,  285,  284,
    0,   12,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  163,  165,  164,  167,  166,  168,
    0,    0,   75,  100,   14,    0,   52,    0,    0,    0,
    0,    0,  237,  222,    0,    0,    0,    0,    0,    0,
    0,    0,  279,  280,    0,    0,  272,    0,    0,    0,
    0,    0,    0,  271,    0,    0,    0,    0,    0,    0,
    0,    0,  258,    0,    0,    0,  215,    0,    0,    0,
    0,   90,  200,    0,    0,    0,   31,    0,   82,    0,
    0,    0,    0,    0,  209,  133,    0,    0,  129,    0,
   48,    0,  190,    0,   23,    0,   25,  145,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
    0,    0,   68,   50,    0,   51,    0,    0,  176,    0,
   94,   98,  177,   92,  235,   72,    0,  137,    0,    0,
    0,    0,  274,    0,  287,    0,    0,    0,    0,  296,
    0,  298,    0,  294,    0,  112,    0,  118,    0,  116,
  114,    0,  110,   91,    0,    0,    0,    0,   33,   84,
    0,    0,  121,    0,    0,  125,    0,    0,  104,    0,
   24,    0,    0,    0,  244,   93,   97,    0,    0,    0,
  172,    0,    0,    0,    0,    0,    0,    0,    0,  115,
    0,    0,    0,    0,    0,  206,  229,    0,    0,  132,
  130,   28,   26,  185,   49,   69,   96,   95,  138,  173,
  289,  302,  303,  301,    0,  117,  108,   88,  213,    0,
    0,    0,  219,
};
static const short yydgoto[] = {                          1,
    4,  309,  185,  277,  271,   62,   63,   64,   65,  407,
  222,  342,   66,  258,  135,   93,  291,  292,  447,  358,
  359,  296,  297,  241,  199,  302,  476,  272,  278,  279,
  253,  151,  304,   67,  190,  223,  280,  225,  361,  169,
  217,  470,  440,  441,  243,  227,  228,  172,   68,  126,
  186,  187,  306,    5,   69,   70,   71,   94,   95,  322,
  416,  417,   72,   73,   74,   75,   76,   77,  127,   97,
  316,  133,  431,  288,  192,  351,  235,  433,  201,   99,
  193,  474,  444,  352,  128,  317,  388,  471,  389,  310,
  209,  210,  408,  211,  409,  148,   78,   79,  299,  394,
   80,   81,   82,   83,   84,  173,   85,   86,  179,   87,
   88,   89,  219,   90,  260,  261,
};
static const short yysindex[] = {                         0,
   -1,    0,    0, 1086,   25,    0,   47,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   34,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  171,    0,    0,    0,    0,    0,    0,
    0,  -25,   -8,    0,  -28,    0,    3,   78,    0,    0,
    0,   87,   88,  100,  110,  125,   -5,    0, 1714,   34,
    0,    0,    0, 1484,  165, 1627,  165,  193,    0,    0,
    0,    0,    0,  278,   34,   34,  171,    0,    0,  149,
    0,  227,    0,    0,    0,    0,  233,  239,   34,   34,
  308,   34,  251,  252,  272,    0,   34,  282, 1638,   34,
    0, 1354,  306,    0,    0,    0,  294,    0,   34,    0,
    0,    0,   34,    0,    0,   34,    0, 1354,  428,   34,
  -49,   34,   34,  239,    0,    0,   34,    0,    0,    0,
  300,  315,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 1473,    0,    0,    0,    0, 1651,    0,  397,    0,
    0,    0,    0, 1473,    0,    0,    0,  207,  333, 1310,
 1440,    0,    0,    0,  341,    0,    0,    0,  350,    0,
   34,  198,    0,    0,  110,   19,    0,  176,    0,   34,
    0,    0,  233,    0,  110,  308, 1354, 1354,    0,  387,
 1542,    0,   34, 1651,    0,  397,    0,  393,    0, 1354,
 1354, 1354,    0, 1808,    0,    0,    0,    0,  334,  171,
  233,    0,   34,    0, 1451,  350,    0,    0,    0,  308,
  195, 1808,    0,    0,  110,    0,    0,    0,    0,    0,
  373, 1354,    0, 1354,    0,    0,    0, 1299,  464,  244,
    0,  378, 1651, 1651, 1651, 1651, 1651,  488,  255,  255,
    0,  408,    0,  255, 1440, 1440,  416,    0,  417, 1808,
  421,    0,    0,    0,    0,   34,    0,    0,    0,  198,
    0,  104,    0,   19,    0,    0,    0,  399, 1354,    0,
    0,  246,    0,    0,    0,  270,    0,  426,    0,  288,
  822,  928,  491,    0,  437,  289,    0,  501,    0,    0,
    4,    0, 1118,  436, 1876,  432, 1354, 1354, 1354, 1354,
 1354, 1354, 1354, 1354,    0,    0,    0,    0,    0,    0,
 1354, 1354,    0,    0,    0,  233,    0, 1321, 1808,   -8,
   82, 1661,    0,    0, 1332,   34,   34,  442,  441, 1808,
  443, 1808,    0,    0, 1808,    0,    0, 1473,  378,  378,
  378,  539,  -22,    0,  445,  408,  255,  408,  446,  447,
 1601,  449,    0, 1440, 1440, 1440,    0,  310, 1343,  451,
  198,    0,    0,  457, 1354, 1708,    0,  186,    0,   34,
  308,  110,  308,  308,    0,    0,  440,  312,    0, 1354,
    0,   34,    0,  456,    0,  324,    0,    0, 1354,  432,
  432,  432,  600, 1876, 1859, 1842, 1842,  112,  563,    0,
  350,  458,    0,    0, 1661,    0, 1354,  761,    0,  453,
    0,    0,    0,    0,    0,    0,  459,    0,  462, 1354,
 1354,  397,    0,  255,    0, 1440, 1440,    0, 1440,    0,
    0,    0,    0,    0,    0,    0, 1343,    0, 1772,    0,
    0,  198,    0,    0, 1354,  463, 1808,  470,    0,    0,
  326, 1354,    0,  465,  491,    0,  491, 1808,    0,  538,
    0,  540,  478,   -8,    0,    0,    0, 1661,   34, 1354,
    0, 1808,  481,  482,  219,  485,  486,  490,  478,    0,
 1343,  492,  119, 1730, 1354,    0,    0, 1808,  308,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0, 1808,    0,    0,    0,    0, 1808,
  496,  308,    0,
};
static const short yyrindex[] = {                         0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  576,    0,    0,    0,    0,    0,    0,
    0,  564,  163,    0,  578,    0,  589,   62,    0,    0,
    0,  590,  592,  597,   27,  610,  611,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  613,    0,    0,
    0,    0,    0,    0,  614,    0,    0,    0,    0,   31,
    0,    0,    0,    0,    0,    0,  615,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   75,
    0,  624,    0,    0,    0,    0,  626,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  624,    0,  285,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  612,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  162,
    0,    0,    0,    0,    0,    0,  407,  627,  628,  632,
    0,    0,    0,    0,    0,    0,    0,    0,   43,    0,
    0,    0,    0,    0,   31,    0,    0,    0,    0,    0,
    0,    0,  615,    0,  160,    0,    0,    0,    0,   53,
    0,    0,    0,    0,    0,   64,    0,  633,    0,    0,
    0,    0,    0,   93,    0,    0,    0,    0,    0,    0,
  615,    0,    0,    0,    0,   21,    0,    0,    0,    0,
    0,  332,    0,    0,  564,    0,    0,    0,    0,    0,
    0,  396,    0,    0,    0,    0,    0,    0,  523,    0,
    0,  135,    0,    0,    0,    0,    0,  523,    0,    0,
    0,  640,    0,    0,    0,    0,  649,    0,  658,    0,
 1207,  958,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 1752,  586,  740,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  615,    0,    0,   45,    7,
    0,    0,    0,    0,    0,    0,    0,    0,  591,  231,
    0,  666,    0,    0,  338,  297,    0,    0,  514,  557,
  667,   63,   12,    0,    0,  668,    0,  669,    0,    0,
    0, 1752,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 1462,    0,    0,    0,    0,  343,    0,    0,    0,
    0,    0,    0,  344,    0,    0,    0,    0,    0,  763,
  852,  875,  266,  635,  175,  987, 1004,  898,  981,    0,
   21,    0,    0,    0,    0,    0,    0,    0,    0,  -41,
    0,    0,    0,    0,    0,    0,   15,    0,  717,    0,
  601,  348,    0,    0,    0,    0,    0, 1082,    0,    0,
 1146,    0, 1171,    0, 1190,    0,    0,    0,  354,    0,
    0,    0,    0,    0,    0,  108,  136,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  380,    0,    0,
    0,    0, 1825,    7,    0,    0,    0,    0,    0,  625,
    0,  382,    0,    0,  799,    0,    0,    0, 1791,    0,
    0,    0,    0,    0,    0,    0,    0,  676,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  354,    0,    0,    0,    0,  158,
    0,    0,    0,
};
static const short yygindex[] = {                         0,
    0,  -88,    0, -251, -308,  480,    0,    0,    0,  229,
   24,    0,    0,    0, -341,    0, -376,  425,    0,    0,
    0, -154,  422,    0, -192,    0,    0,    8, -174,  444,
  268,  -29,  322,    0, -134,  388,  276, -125, -121,  -92,
  420,  214, -159,  230,  374, -160,  -35,    0,    0,  -68,
  -24,  616,    0,    0,    0,    0,    0, 1565,  -19,    0,
    0,  238,    0,    0,    0,    0,    0,    0,    0,    1,
    0,  -65,    0, -232,  595,  259,    0,  240,  593,    0,
  594,    0,  303,    0,  510,  345,    0,  277,    0,  352,
  609,    0,    0,    0,  273,    0,  680,    0,    0,    0,
    0,    0,    0,    0,    0,  379,    0,    0,    0,    0,
    0,    0,  -58,    0,    0,  394,
};
#define YYTABLESIZE 1972
static const short yytable[] = {                        106,
  226,    3,  141,  350,  107,  244,  283,   67,  434,  145,
  307,  195,  193,  110,  473,  136,  238,  414,  131,  282,
  282,  111,  204,  379,  125,   91,  216,   42,  191,  120,
  108,  109,  105,  123,  196,  124,   96,  129,  345,  116,
  231,   96,  117,  111,  231,  244,  118,  105,  171,  136,
  171,   92,  132,  126,  281,  281,  289,   96,  244,  263,
  264,  265,   38,  198,  304,  106,  188,  189,  455,  259,
  137,  232,  245,  134,  262,   21,  139,  147,  415,  202,
  106,  268,  205,  171,   67,  203,  193,  212,  244,  193,
  106,  193,  193,  175,  324,  473,  193,  136,  111,  106,
  231,  383,  111,  234,  231,   67,  236,  167,  210,  167,
  189,  233,  246,  247,  282,  282,  295,  251,  244,  111,
  111,  318,  244,  284,  285,  111,  171,  111,  231,  294,
  126,  171,  460,  462,  464,  197,  240,  198,  171,  308,
  198,  304,  167,  244,  231,  455,  231,  198,   21,  382,
  281,  353,  525,  430,  194,  140,  319,  320,  241,  435,
  228,  189,  247,   67,  142,  143,  298,  175,  303,  175,
  369,  370,  371,  372,  373,  157,   67,  144,  171,  356,
  436,  391,  210,  315,  105,  167,  392,  132,  157,  105,
  167,  442,  267,  327,  328,  329,  435,  167,  494,  105,
  125,  538,  146,  106,  460,  462,   67,  464,  346,  197,
  240,  105,  197,  240,  197,  197,  197,  197,  157,  197,
  105,  446,  324,  282,  282,  282,  132,  171,  171,  171,
  171,  171,  241,  231,  347,  241,   67,  167,  174,  267,
   67,  189,  189,  189,  189,  189,  189,  341,  157,  157,
  300,  157,  157,  123,    2,  124,  387,  301,  461,  463,
  465,  157,  157,  157,  298,  341,  160,  301,  105,  354,
  181,  290,  355,  157,  442,  452,  375,  376,  497,  160,
  269,  378,  267,  184,  270,  267,  167,  167,  167,  167,
  167,  267,  252,  493,  395,  282,  282,  271,  282,  504,
  197,  506,  507,  341,  508,  142,  198,  175,  142,  160,
  271,  324,  200,  194,  483,  484,  443,  512,  367,  229,
  397,  368,  439,  398,  206,  207,  189,  448,  269,  503,
  461,  463,  171,  509,  341,  341,  482,  442,  527,  160,
  160,  267,  160,  160,  399,  208,  341,  400,  341,  341,
  160,  160,  160,  160,  160,  213,  160,  160,  160,  160,
  160,  160,  402,  411,  160,  403,  412,  232,  303,  232,
  271,  230,  341,  252,  271,  438,  190,  190,  190,  190,
  190,  190,  315,  341,  466,  341,  486,  467,  341,  487,
  254,  167,  267,  267,  267,  267,  267,  224,  491,  443,
  517,  492,  443,  403,  341,  439,  236,  269,  439,  236,
  274,  286,  278,  224,  242,  278,  343,  131,   27,  341,
  131,   27,  275,  287,  505,  275,  505,  505,  119,  505,
  541,  119,  153,  154,  155,  156,  157,  158,  159,  160,
  161,  105,  505,  341,  341,  341,  341,  341,  341,  341,
  341,  341,  341,  543,  105,  357,  143,  105,  438,  143,
  313,  265,  443,  175,  178,  180,  321,  152,  439,  529,
  140,  168,  174,  168,  395,  267,  163,  164,  263,  264,
  265,  266,  311,  312,  269,  377,  189,  189,  189,  189,
  189,  189,  341,  384,  385,  323,  325,  326,  386,  401,
  341,  220,  239,  170,  406,  177,  168,  163,  164,  240,
  349,  341,  410,  419,  194,  329,  449,  221,  450,  451,
  485,  438,  454,  456,  457,  341,  459,  360,  472,  362,
  475,  490,  495,  365,  498,  500,  499,  341,  366,  516,
  515,  341,  519,  163,  164,  263,  264,  265,  266,  168,
  381,  522,  524,  414,  168,  530,  531,  195,  341,  532,
  533,  168,  374,  341,  534,  273,  537,  163,  164,  263,
  264,  265,  266,  542,  396,  413,   45,  231,   37,  293,
  163,  164,  263,  264,  265,  266,  159,  305,  194,  220,
   39,  194,   40,  194,  194,  194,  194,   41,  194,  159,
  275,  168,  420,  421,  422,  423,  424,  425,  426,  427,
   43,   44,  169,  259,   21,   29,  428,  429,  163,  164,
  263,  264,  265,  323,  174,  169,   46,  251,  252,  159,
  242,  195,  256,   11,  195,  158,  195,  195,  195,  195,
  253,  195,  163,  164,  327,  328,  329,  330,  158,  291,
  168,  168,  168,  168,  168,  169,  273,  273,  292,  159,
  159,  273,  159,  159,  469,  141,  214,  196,  255,  254,
  477,  159,  159,  159,  159,  174,  230,  293,  158,  163,
  164,  327,  328,  329,  159,  488,  169,  169,  169,  169,
  314,  169,  169,  169,  169,  169,  169,  169,  169,  169,
  169,  174,  169,  169,  169,  169,  169,  169,  158,  158,
  169,  158,  158,  520,  390,  393,  501,  171,  380,  479,
  158,  158,  158,  158,  536,  502,  224,  528,  445,  523,
  171,  237,  513,  158,  526,  218,  248,  496,  249,  344,
  153,  196,  469,  510,  196,    0,  196,  196,  196,  196,
  514,  196,  481,  153,  250,  168,  489,  518,  150,  521,
  171,  453,    0,  150,  273,  153,  154,  155,  156,  157,
  158,  159,  160,  161,  105,  224,  150,    0,  293,    0,
    0,    0,    0,  153,    0,    0,  535,  480,    0,    0,
  540,  171,  171,  171,  171,    0,  171,  171,  171,  171,
  171,  171,  171,  171,  171,  171,  150,  171,  171,  171,
  171,  171,  171,  153,  153,  171,  153,  153,    0,  153,
  153,  153,  153,    0,  153,  153,  153,  153,  153,    0,
  153,  153,  153,  153,  153,  153,  150,  150,  153,  150,
  150,  273,  150,  150,  150,  150,    0,  150,  150,  150,
  150,  150,  151,  150,  150,  150,  150,  150,  150,  293,
    0,  150,    0,    0,    0,  151,    0,    0,    0,    0,
    0,    0,    0,  169,    0,  152,  169,    0,  169,  169,
  169,  169,  169,  169,  169,  169,  169,  169,  152,  169,
  169,  169,  169,  169,  169,  151,  404,    0,  149,    0,
    0,  163,  164,  327,  328,  329,  330,  331,  332,  333,
  334,  149,  335,  336,  337,  338,  339,  340,  152,    0,
    0,    0,    0,    0,    0,  151,  151,    0,  151,  151,
    0,  151,  151,  151,  151,    0,  151,  151,  151,  151,
  151,  149,  151,  151,  151,  151,  151,  151,  152,  152,
  151,  152,  152,    0,  152,  152,  152,  152,  299,  152,
  152,  152,  152,  152,    0,  152,  152,  152,  152,  152,
  152,  149,  149,  152,  149,  149,    0,  149,  149,    0,
    0,  154,  149,  149,  149,  149,  149,  156,  149,  149,
  149,  149,  149,  149,  154,    0,  149,    0,    0,    0,
  156,    0,  405,    0,  155,    0,    0,  163,  164,  327,
  328,  329,  330,  331,  332,  333,  334,  155,  335,  336,
  337,  338,  339,  340,  154,    0,    0,    0,    0,    0,
  156,    0,  146,    0,    0,  299,    0,  146,  146,  146,
  146,  146,  146,  146,  146,  146,  146,  155,  146,  146,
  146,  146,  146,  146,  154,  154,    0,  154,  154,    0,
  156,  156,    0,  156,  156,    0,  154,  154,  154,  154,
    0,    0,    0,    0,  156,  156,    0,  155,  155,  154,
  155,  155,  300,    0,    0,  156,    0,    0,    0,    6,
    0,  155,  155,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  155,    7,    8,    9,   10,   11,   12,   13,
   14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
   24,   25,   26,   27,   28,   29,   30,   31,   32,   33,
   34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
   44,   45,   46,   47,   48,   49,  295,   50,   51,   52,
   53,   54,   55,   56,   57,    0,  145,   58,   59,  300,
    0,  145,  145,  145,  145,  145,  145,  145,  145,  145,
  145,  297,  145,  145,  145,  145,  145,  145,    0,    0,
    0,    0,   60,    0,    0,   61,    0,    0,    0,    0,
  293,    0,  418,    0,    0,    0,    0,  163,  164,  327,
  328,  329,  330,  331,  332,  333,  334,  290,  335,  336,
  337,  338,  339,  340,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  295,    0,  144,  144,  144,  144,  144,
  144,  144,  144,  144,  144,    0,  144,  144,  144,  144,
  144,  144,    0,    0,    0,    0,    0,    0,  297,    0,
  144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
    0,  144,  144,  144,  144,  144,  144,  293,    0,  144,
  144,  144,  144,  144,  144,  144,  144,  144,  144,    0,
  144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
  144,  144,  144,  144,  144,  144,    0,  144,  144,  144,
  144,  144,  144,  153,  154,  155,  156,  157,  158,  159,
  160,  161,  105,    0,  153,  154,  155,  156,  157,  158,
  159,  160,  161,  105,    0,  153,  154,  155,  156,  157,
  158,  159,  160,  161,  105,    0,  153,  154,  155,  156,
  157,  158,  159,  160,  161,  105,    0,  153,  154,  155,
  156,  157,  158,  159,  160,  161,  105,    0,  153,  154,
  155,  156,  157,  158,  159,  160,  161,  105,    0,    0,
    0,    0,  220,    0,    0,    0,    0,    0,  163,  164,
  363,    0,  364,  275,    0,    0,    0,  276,  221,  163,
  164,    0,    0,    0,  220,    0,    0,    0,    0,  221,
  163,  164,  432,    0,    0,  220,    0,    0,    0,    0,
  221,  163,  164,  240,    0,    0,  220,    0,    0,    0,
    0,  221,  163,  164,  468,    0,    0,  220,    0,    0,
    0,    0,  221,  163,  164,    0,    0,    0,    0,    0,
    0,    0,    0,  221,  153,  154,  155,  156,  157,  158,
  159,  160,  161,  105,    0,  153,  154,  155,  156,  157,
  158,  159,  160,  161,  105,    0,  231,  231,  231,  231,
  231,  231,  231,  231,  231,  231,    0,  153,  154,  155,
  156,  157,  158,  159,  160,  161,  105,  255,  153,  154,
  155,  156,  157,  158,  159,  160,  161,  105,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  275,    0,    0,    0,    0,    0,  163,
  164,    0,    0,    0,  348,    0,    0,    0,    0,  221,
  163,  164,    0,    0,    0,  231,    0,    0,    0,    0,
  221,  231,  231,    0,    0,    0,  214,    0,    0,    0,
    0,  231,  163,  164,  256,    0,  257,  162,    0,    0,
    0,    0,   10,  163,  164,  165,   14,  166,    0,   17,
    0,    0,   20,   21,    0,   23,    0,   96,    0,    0,
    0,    0,   98,    0,    0,    0,  100,    0,  101,  102,
  103,    0,  104,   41,    0,   43,    0,    0,  111,  112,
  113,  114,  115,    0,   51,    0,    0,    0,   55,    0,
    0,    0,  119,   58,  121,    0,  122,    0,    0,    0,
    0,    0,    0,  130,    0,    0,    0,    0,    0,    0,
  138,  153,  154,  155,  156,  157,  158,  159,  160,  161,
  105,   61,  153,  154,  155,  156,  157,  158,  159,  160,
  161,  105,    0,  182,  183,  153,  154,  155,  156,  157,
  158,  159,  160,  161,  105,  153,  154,  155,  156,  157,
  158,  159,  160,  161,  105,  458,    0,    0,    0,    0,
  163,  164,  327,  328,  329,  330,  331,  332,  333,  334,
    0,  335,  336,  337,  338,  339,  340,    0,    0,    0,
  162,    0,    0,    0,    0,    0,  163,  164,  176,    0,
    0,  214,    0,    0,    0,    0,    0,  163,  164,  215,
    0,    0,    0,    0,  214,    0,    0,    0,    0,    0,
  163,  164,    8,    9,  437,   11,    0,   13,    0,   15,
  163,  164,   18,    0,    0,    0,    0,    0,    0,    0,
    0,   27,    0,    0,    0,    0,    0,    0,   34,   35,
   36,   37,    0,    0,   40,    0,    0,    0,    0,   45,
    0,   47,   48,    0,    0,   50,    0,   52,   53,    0,
    0,   56,  478,  149,    0,    0,   59,  163,  164,  327,
  328,  329,  330,  331,  332,  333,  334,    0,  335,  336,
  337,  338,  339,  340,  539,    0,    0,    0,    0,  163,
  164,  327,  328,  329,  330,  331,  332,  333,  334,    0,
  335,  336,  337,  338,  339,  340,  144,    0,    0,    0,
    0,  144,  144,  144,  144,  144,  144,  144,  144,  144,
  144,    0,  144,  144,  144,  144,  144,  144,  511,    0,
    0,  163,  164,  327,  328,  329,  330,  331,  332,  333,
  334,    0,  335,  336,  337,  338,  339,  340,  293,    0,
  144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
    0,  144,  144,  144,  144,  144,  144,  163,  164,  327,
  328,  329,  330,  331,  332,  333,  334,    0,  335,  336,
  337,  338,  339,  340,  144,  144,  144,  144,  144,  144,
  144,  144,  144,  144,    0,  144,  144,  144,  144,  144,
  144,  163,  164,  327,  328,  329,  330,  331,  332,    0,
    0,    0,  335,  336,  337,  338,  339,  340,  163,  164,
  327,  328,  329,  330,  331,    0,    0,    0,    0,  335,
  336,  337,  338,  339,  340,  163,  164,  327,  328,  329,
  330,    0,    0,    0,    0,    0,  335,  336,  337,  338,
  339,  340,
};
static const short yycheck[] = {                         29,
  122,    3,   68,  236,   29,  140,  181,    1,  350,   75,
  203,  100,    1,   33,  391,    1,  138,   14,   44,  180,
  181,    1,  111,  275,   54,    1,  119,    1,   97,   49,
   30,   31,   14,   83,  100,   85,   78,   57,  231,   39,
   14,   83,   42,    1,   14,    1,   46,   14,   84,   78,
   86,    5,   78,    1,  180,  181,  191,   99,   14,   82,
   83,   84,    1,    1,    1,   95,   96,   97,  377,  162,
   99,  130,  141,   82,  167,    1,   74,   83,   75,  109,
  110,  174,  112,  119,   78,  110,   75,  117,   44,   78,
  120,   80,   81,    1,  220,  472,   85,   83,   78,  129,
   74,  276,   82,  133,  129,   99,  136,   84,    1,   86,
  140,  131,  142,  143,  275,  276,   98,  147,   74,   99,
   78,  214,   78,  182,  183,   83,  162,   85,   98,  195,
   78,  167,  384,  385,  386,    1,    1,   75,  174,  205,
   78,   78,  119,   99,   83,  454,   85,   85,   74,  275,
  276,  240,  494,  346,    6,   78,  215,  216,    1,   78,
    1,  191,    1,    1,   78,   78,  196,   75,  198,   77,
  263,  264,  265,  266,  267,    1,   14,   78,  214,  245,
   99,   78,   75,  213,   14,  162,   83,   78,   14,   14,
  167,  352,  169,   82,   83,   84,   78,  174,  431,   14,
  230,   83,   78,  233,  456,  457,   44,  459,  233,   75,
   75,   14,   78,   78,   80,   81,   82,   83,   44,   85,
   14,  356,  348,  384,  385,  386,   78,  263,  264,  265,
  266,  267,   75,   74,  234,   78,   74,  214,   74,  216,
   78,   80,   81,   82,   83,   84,   85,  224,   74,   75,
   75,   77,   78,   83,  256,   85,  286,   82,  384,  385,
  386,   87,   88,   89,  294,  242,    1,   82,   14,   75,
   78,   74,   78,   99,  435,  368,  269,  270,  438,   14,
   74,  274,  259,    6,   78,  262,  263,  264,  265,  266,
  267,  268,   74,  419,   76,  456,  457,    1,  459,  454,
   74,  456,  457,  280,  459,   75,   74,   77,   78,   44,
   14,  437,   74,    6,  403,  404,  352,  472,   75,   14,
   75,   78,  352,   78,   74,   74,  356,  357,   74,  451,
  456,  457,  368,  459,  311,  312,  402,  498,  498,   74,
   75,  318,   77,   78,   75,   74,  323,   78,  325,  326,
   85,   86,   87,   88,   89,   74,   91,   92,   93,   94,
   95,   96,   75,   75,   99,   78,   78,   83,  398,   85,
   74,   78,  349,   74,   78,  352,   80,   81,   82,   83,
   84,   85,  412,  360,   75,  362,   75,   78,  365,   78,
   76,  368,  369,  370,  371,  372,  373,  122,   75,  435,
   75,   78,  438,   78,  381,  435,   75,    1,  438,   78,
   78,   71,   75,  138,  139,   78,   83,   75,   75,  396,
   78,   78,   75,   74,  454,   78,  456,  457,   75,  459,
  519,   78,    5,    6,    7,    8,    9,   10,   11,   12,
   13,   14,  472,  420,  421,  422,  423,  424,  425,  426,
  427,  428,  429,  542,   75,   83,   75,   78,  435,   78,
   74,   84,  498,   85,   86,   87,   74,   80,  498,  499,
   75,   84,   77,   86,   76,  452,   80,   81,   82,   83,
   84,   85,  207,  208,   78,   78,   80,   81,   82,   83,
   84,   85,  469,   78,   78,  220,  221,  222,   78,   74,
  477,   74,   75,   84,   14,   86,  119,   80,   81,   82,
  235,  488,   76,   78,    1,   84,   75,   90,   78,   77,
   81,  498,   78,   78,   78,  502,   78,  252,   78,  254,
   74,   76,   75,  258,   82,   74,   78,  514,   75,   70,
   78,  518,   78,   80,   81,   82,   83,   84,   85,  162,
  275,   14,   75,   14,  167,   75,   75,    1,  535,   75,
   75,  174,   75,  540,   75,  178,   75,   80,   81,   82,
   83,   84,   85,   78,  299,   75,    1,   14,    1,  192,
   80,   81,   82,   83,   84,   85,    1,  200,   75,    1,
    1,   78,    1,   80,   81,   82,   83,    1,   85,   14,
   78,  214,  327,  328,  329,  330,  331,  332,  333,  334,
    1,    1,    1,    1,    1,    1,  341,  342,   80,   81,
   82,   83,   84,  348,    1,   14,    1,    1,    1,   44,
  355,   75,    1,    1,   78,    1,   80,   81,   82,   83,
    1,   85,   80,   81,   82,   83,   84,   85,   14,    1,
  263,  264,  265,  266,  267,   44,  269,  270,    1,   74,
   75,  274,   77,   78,  389,   75,    1,    1,    1,    1,
  395,   86,   87,   88,   89,   75,    1,  290,   44,   80,
   81,   82,   83,   84,   99,  410,   75,   76,   77,   78,
  211,   80,   81,   82,   83,   84,   85,   86,   87,   88,
   89,   77,   91,   92,   93,   94,   95,   96,   74,   75,
   99,   77,   78,  485,  290,  294,  449,    1,  275,  398,
   86,   87,   88,   89,  511,  450,  451,  498,  355,  492,
   14,  137,  474,   99,  495,  120,  144,  435,  145,  230,
    1,   75,  467,  467,   78,   -1,   80,   81,   82,   83,
  475,   85,  401,   14,  146,  368,  412,  482,   79,  487,
   44,  368,   -1,    1,  377,    5,    6,    7,    8,    9,
   10,   11,   12,   13,   14,  500,   14,   -1,  391,   -1,
   -1,   -1,   -1,   44,   -1,   -1,  511,  400,   -1,   -1,
  515,   75,   76,   77,   78,   -1,   80,   81,   82,   83,
   84,   85,   86,   87,   88,   89,   44,   91,   92,   93,
   94,   95,   96,   74,   75,   99,   77,   78,   -1,   80,
   81,   82,   83,   -1,   85,   86,   87,   88,   89,   -1,
   91,   92,   93,   94,   95,   96,   74,   75,   99,   77,
   78,  454,   80,   81,   82,   83,   -1,   85,   86,   87,
   88,   89,    1,   91,   92,   93,   94,   95,   96,  472,
   -1,   99,   -1,   -1,   -1,   14,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   75,   -1,    1,   78,   -1,   80,   81,
   82,   83,   84,   85,   86,   87,   88,   89,   14,   91,
   92,   93,   94,   95,   96,   44,   75,   -1,    1,   -1,
   -1,   80,   81,   82,   83,   84,   85,   86,   87,   88,
   89,   14,   91,   92,   93,   94,   95,   96,   44,   -1,
   -1,   -1,   -1,   -1,   -1,   74,   75,   -1,   77,   78,
   -1,   80,   81,   82,   83,   -1,   85,   86,   87,   88,
   89,   44,   91,   92,   93,   94,   95,   96,   74,   75,
   99,   77,   78,   -1,   80,   81,   82,   83,    1,   85,
   86,   87,   88,   89,   -1,   91,   92,   93,   94,   95,
   96,   74,   75,   99,   77,   78,   -1,   80,   81,   -1,
   -1,    1,   85,   86,   87,   88,   89,    1,   91,   92,
   93,   94,   95,   96,   14,   -1,   99,   -1,   -1,   -1,
   14,   -1,   75,   -1,    1,   -1,   -1,   80,   81,   82,
   83,   84,   85,   86,   87,   88,   89,   14,   91,   92,
   93,   94,   95,   96,   44,   -1,   -1,   -1,   -1,   -1,
   44,   -1,   75,   -1,   -1,   78,   -1,   80,   81,   82,
   83,   84,   85,   86,   87,   88,   89,   44,   91,   92,
   93,   94,   95,   96,   74,   75,   -1,   77,   78,   -1,
   74,   75,   -1,   77,   78,   -1,   86,   87,   88,   89,
   -1,   -1,   -1,   -1,   88,   89,   -1,   74,   75,   99,
   77,   78,    1,   -1,   -1,   99,   -1,   -1,   -1,    4,
   -1,   88,   89,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   99,   18,   19,   20,   21,   22,   23,   24,
   25,   26,   27,   28,   29,   30,   31,   32,   33,   34,
   35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
   45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
   55,   56,   57,   58,   59,   60,    1,   62,   63,   64,
   65,   66,   67,   68,   69,   -1,   75,   72,   73,   78,
   -1,   80,   81,   82,   83,   84,   85,   86,   87,   88,
   89,    1,   91,   92,   93,   94,   95,   96,   -1,   -1,
   -1,   -1,   97,   -1,   -1,  100,   -1,   -1,   -1,   -1,
    1,   -1,   75,   -1,   -1,   -1,   -1,   80,   81,   82,
   83,   84,   85,   86,   87,   88,   89,    1,   91,   92,
   93,   94,   95,   96,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   78,   -1,   80,   81,   82,   83,   84,
   85,   86,   87,   88,   89,   -1,   91,   92,   93,   94,
   95,   96,   -1,   -1,   -1,   -1,   -1,   -1,   78,   -1,
   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
   -1,   91,   92,   93,   94,   95,   96,   78,   -1,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,   -1,
   91,   92,   93,   94,   95,   96,   80,   81,   82,   83,
   84,   85,   86,   87,   88,   89,   -1,   91,   92,   93,
   94,   95,   96,    5,    6,    7,    8,    9,   10,   11,
   12,   13,   14,   -1,    5,    6,    7,    8,    9,   10,
   11,   12,   13,   14,   -1,    5,    6,    7,    8,    9,
   10,   11,   12,   13,   14,   -1,    5,    6,    7,    8,
    9,   10,   11,   12,   13,   14,   -1,    5,    6,    7,
    8,    9,   10,   11,   12,   13,   14,   -1,    5,    6,
    7,    8,    9,   10,   11,   12,   13,   14,   -1,   -1,
   -1,   -1,   74,   -1,   -1,   -1,   -1,   -1,   80,   81,
   82,   -1,   84,   74,   -1,   -1,   -1,   78,   90,   80,
   81,   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,   90,
   80,   81,   82,   -1,   -1,   74,   -1,   -1,   -1,   -1,
   90,   80,   81,   82,   -1,   -1,   74,   -1,   -1,   -1,
   -1,   90,   80,   81,   82,   -1,   -1,   74,   -1,   -1,
   -1,   -1,   90,   80,   81,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   90,    5,    6,    7,    8,    9,   10,
   11,   12,   13,   14,   -1,    5,    6,    7,    8,    9,
   10,   11,   12,   13,   14,   -1,    5,    6,    7,    8,
    9,   10,   11,   12,   13,   14,   -1,    5,    6,    7,
    8,    9,   10,   11,   12,   13,   14,   15,    5,    6,
    7,    8,    9,   10,   11,   12,   13,   14,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,   -1,   80,
   81,   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,   90,
   80,   81,   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,
   90,   80,   81,   -1,   -1,   -1,   74,   -1,   -1,   -1,
   -1,   90,   80,   81,   82,   -1,   84,   74,   -1,   -1,
   -1,   -1,   21,   80,   81,   82,   25,   84,   -1,   28,
   -1,   -1,   31,   32,   -1,   34,   -1,   13,   -1,   -1,
   -1,   -1,   18,   -1,   -1,   -1,   22,   -1,   24,   25,
   26,   -1,   28,   52,   -1,   54,   -1,   -1,   34,   35,
   36,   37,   38,   -1,   63,   -1,   -1,   -1,   67,   -1,
   -1,   -1,   48,   72,   50,   -1,   52,   -1,   -1,   -1,
   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,
   66,    5,    6,    7,    8,    9,   10,   11,   12,   13,
   14,  100,    5,    6,    7,    8,    9,   10,   11,   12,
   13,   14,   -1,   89,   90,    5,    6,    7,    8,    9,
   10,   11,   12,   13,   14,    5,    6,    7,    8,    9,
   10,   11,   12,   13,   14,   75,   -1,   -1,   -1,   -1,
   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
   -1,   91,   92,   93,   94,   95,   96,   -1,   -1,   -1,
   74,   -1,   -1,   -1,   -1,   -1,   80,   81,   82,   -1,
   -1,   74,   -1,   -1,   -1,   -1,   -1,   80,   81,   82,
   -1,   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,   -1,
   80,   81,   19,   20,   74,   22,   -1,   24,   -1,   26,
   80,   81,   29,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   38,   -1,   -1,   -1,   -1,   -1,   -1,   45,   46,
   47,   48,   -1,   -1,   51,   -1,   -1,   -1,   -1,   56,
   -1,   58,   59,   -1,   -1,   62,   -1,   64,   65,   -1,
   -1,   68,   75,   70,   -1,   -1,   73,   80,   81,   82,
   83,   84,   85,   86,   87,   88,   89,   -1,   91,   92,
   93,   94,   95,   96,   75,   -1,   -1,   -1,   -1,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,   -1,
   91,   92,   93,   94,   95,   96,   75,   -1,   -1,   -1,
   -1,   80,   81,   82,   83,   84,   85,   86,   87,   88,
   89,   -1,   91,   92,   93,   94,   95,   96,   77,   -1,
   -1,   80,   81,   82,   83,   84,   85,   86,   87,   88,
   89,   -1,   91,   92,   93,   94,   95,   96,   78,   -1,
   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
   -1,   91,   92,   93,   94,   95,   96,   80,   81,   82,
   83,   84,   85,   86,   87,   88,   89,   -1,   91,   92,
   93,   94,   95,   96,   80,   81,   82,   83,   84,   85,
   86,   87,   88,   89,   -1,   91,   92,   93,   94,   95,
   96,   80,   81,   82,   83,   84,   85,   86,   87,   -1,
   -1,   -1,   91,   92,   93,   94,   95,   96,   80,   81,
   82,   83,   84,   85,   86,   -1,   -1,   -1,   -1,   91,
   92,   93,   94,   95,   96,   80,   81,   82,   83,   84,
   85,   -1,   -1,   -1,   -1,   -1,   91,   92,   93,   94,
   95,   96,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 100
#if YYDEBUG
static const char *yyname[] = {

"end-of-file","SEOS","SCOMMENT","SLABEL","SUNKNOWN","SHOLLERITH","SICON",
"SRCON","SDCON","SBITCON","SOCTCON","SHEXCON","STRUE","SFALSE","SNAME",
"SNAMEEQ","SFIELD","SSCALE","SINCLUDE","SLET","SASSIGN","SAUTOMATIC",
"SBACKSPACE","SBLOCK","SCALL","SCHARACTER","SCLOSE","SCOMMON","SCOMPLEX",
"SCONTINUE","SDATA","SDCOMPLEX","SDIMENSION","SDO","SDOUBLE","SELSE","SELSEIF",
"SEND","SENDFILE","SENDIF","SENTRY","SEQUIV","SEXTERNAL","SFORMAT","SFUNCTION",
"SGOTO","SASGOTO","SCOMPGOTO","SARITHIF","SLOGIF","SIMPLICIT","SINQUIRE",
"SINTEGER","SINTRINSIC","SLOGICAL","SNAMELIST","SOPEN","SPARAM","SPAUSE",
"SPRINT","SPROGRAM","SPUNCH","SREAD","SREAL","SRETURN","SREWIND","SSAVE",
"SSTATIC","SSTOP","SSUBROUTINE","STHEN","STO","SUNDEFINED","SWRITE","SLPAR",
"SRPAR","SEQUALS","SCOLON","SCOMMA","SCURRENCY","SPLUS","SMINUS","SSTAR",
"SSLASH","SPOWER","SCONCAT","SAND","SOR","SNEQV","SEQV","SNOT","SEQ","SLT",
"SGT","SLE","SGE","SNE","SENDDO","SWHILE","SSLASHD","SBYTE",
};
static const char *yyrule[] = {
"$accept : program",
"program :",
"program : program stat SEOS",
"stat : thislabel entry",
"stat : thislabel spec",
"stat : thislabel exec",
"stat : thislabel SINCLUDE filename",
"stat : thislabel SEND end_spec",
"stat : thislabel SUNKNOWN",
"stat : error",
"thislabel : SLABEL",
"entry : SPROGRAM new_proc progname",
"entry : SPROGRAM new_proc progname progarglist",
"entry : SBLOCK new_proc progname",
"entry : SSUBROUTINE new_proc entryname arglist",
"entry : SFUNCTION new_proc entryname arglist",
"entry : type SFUNCTION new_proc entryname arglist",
"entry : SENTRY entryname arglist",
"new_proc :",
"entryname : name",
"name : SNAME",
"progname :",
"progname : entryname",
"progarglist : SLPAR SRPAR",
"progarglist : SLPAR progargs SRPAR",
"progargs : progarg",
"progargs : progargs SCOMMA progarg",
"progarg : SNAME",
"progarg : SNAME SEQUALS SNAME",
"arglist :",
"arglist : SLPAR SRPAR",
"arglist : SLPAR args SRPAR",
"args : arg",
"args : args SCOMMA arg",
"arg : name",
"arg : SSTAR",
"filename : SHOLLERITH",
"spec : dcl",
"spec : common",
"spec : external",
"spec : intrinsic",
"spec : equivalence",
"spec : data",
"spec : implicit",
"spec : namelist",
"spec : SSAVE",
"spec : SSAVE savelist",
"spec : SFORMAT",
"spec : SPARAM in_dcl SLPAR paramlist SRPAR",
"dcl : type opt_comma name in_dcl new_dcl dims lengspec",
"dcl : dcl SCOMMA name dims lengspec",
"dcl : dcl SSLASHD datainit vallist SSLASHD",
"new_dcl :",
"type : typespec lengspec",
"typespec : typename",
"typename : SINTEGER",
"typename : SREAL",
"typename : SCOMPLEX",
"typename : SDOUBLE",
"typename : SDCOMPLEX",
"typename : SLOGICAL",
"typename : SCHARACTER",
"typename : SUNDEFINED",
"typename : SDIMENSION",
"typename : SAUTOMATIC",
"typename : SSTATIC",
"typename : SBYTE",
"lengspec :",
"lengspec : SSTAR intonlyon expr intonlyoff",
"lengspec : SSTAR intonlyon SLPAR SSTAR SRPAR intonlyoff",
"common : SCOMMON in_dcl var",
"common : SCOMMON in_dcl comblock var",
"common : common opt_comma comblock opt_comma var",
"common : common SCOMMA var",
"comblock : SCONCAT",
"comblock : SSLASH SNAME SSLASH",
"external : SEXTERNAL in_dcl name",
"external : external SCOMMA name",
"intrinsic : SINTRINSIC in_dcl name",
"intrinsic : intrinsic SCOMMA name",
"equivalence : SEQUIV in_dcl equivset",
"equivalence : equivalence SCOMMA equivset",
"equivset : SLPAR equivlist SRPAR",
"equivlist : lhs",
"equivlist : equivlist SCOMMA lhs",
"data : SDATA in_data datalist",
"data : data opt_comma datalist",
"in_data :",
"datalist : datainit datavarlist SSLASH datapop vallist SSLASH",
"datainit :",
"datapop :",
"$$1 :",
"vallist : $$1 val",
"vallist : vallist SCOMMA val",
"val : value",
"val : simple SSTAR value",
"value : simple",
"value : addop simple",
"value : complex_const",
"savelist : saveitem",
"savelist : savelist SCOMMA saveitem",
"saveitem : name",
"saveitem : comblock",
"paramlist : paramitem",
"paramlist : paramlist SCOMMA paramitem",
"paramitem : name SEQUALS expr",
"var : name dims",
"datavar : lhs",
"datavar : SLPAR datavarlist SCOMMA dospec SRPAR",
"datavarlist : datavar",
"datavarlist : datavarlist SCOMMA datavar",
"dims :",
"dims : SLPAR dimlist SRPAR",
"$$2 :",
"dimlist : $$2 dim",
"dimlist : dimlist SCOMMA dim",
"dim : ubound",
"dim : expr SCOLON ubound",
"ubound : SSTAR",
"ubound : expr",
"labellist : label",
"labellist : labellist SCOMMA label",
"label : SICON",
"implicit : SIMPLICIT in_dcl implist",
"implicit : implicit SCOMMA implist",
"implist : imptype SLPAR letgroups SRPAR",
"implist : imptype",
"$$3 :",
"imptype : $$3 type",
"letgroups : letgroup",
"letgroups : letgroups SCOMMA letgroup",
"letgroup : letter",
"letgroup : letter SMINUS letter",
"letter : SNAME",
"namelist : SNAMELIST",
"namelist : namelist namelistentry",
"namelistentry : SSLASH name SSLASH namelistlist",
"namelistlist : name",
"namelistlist : namelistlist SCOMMA name",
"in_dcl :",
"funarglist :",
"funarglist : funargs",
"funargs : expr",
"funargs : funargs SCOMMA expr",
"expr : uexpr",
"expr : SLPAR expr SRPAR",
"expr : complex_const",
"uexpr : lhs",
"uexpr : simple_const",
"uexpr : expr addop expr",
"uexpr : expr SSTAR expr",
"uexpr : expr SSLASH expr",
"uexpr : expr SPOWER expr",
"uexpr : addop expr",
"uexpr : expr relop expr",
"uexpr : expr SEQV expr",
"uexpr : expr SNEQV expr",
"uexpr : expr SOR expr",
"uexpr : expr SAND expr",
"uexpr : SNOT expr",
"uexpr : expr SCONCAT expr",
"addop : SPLUS",
"addop : SMINUS",
"relop : SEQ",
"relop : SGT",
"relop : SLT",
"relop : SGE",
"relop : SLE",
"relop : SNE",
"lhs : name",
"lhs : name substring",
"lhs : name SLPAR funarglist SRPAR",
"lhs : name SLPAR funarglist SRPAR substring",
"substring : SLPAR opt_expr SCOLON opt_expr SRPAR",
"opt_expr :",
"opt_expr : expr",
"simple : name",
"simple : simple_const",
"simple_const : STRUE",
"simple_const : SFALSE",
"simple_const : SHOLLERITH",
"simple_const : SICON",
"simple_const : SRCON",
"simple_const : SDCON",
"simple_const : bit_const",
"complex_const : SLPAR uexpr SCOMMA uexpr SRPAR",
"bit_const : SHEXCON",
"bit_const : SOCTCON",
"bit_const : SBITCON",
"fexpr : unpar_fexpr",
"fexpr : SLPAR fexpr SRPAR",
"unpar_fexpr : lhs",
"unpar_fexpr : simple_const",
"unpar_fexpr : fexpr addop fexpr",
"unpar_fexpr : fexpr SSTAR fexpr",
"unpar_fexpr : fexpr SSLASH fexpr",
"unpar_fexpr : fexpr SPOWER fexpr",
"unpar_fexpr : addop fexpr",
"unpar_fexpr : fexpr SCONCAT fexpr",
"exec : iffable",
"exec : SDO end_spec label opt_comma dospecw",
"exec : SDO end_spec opt_comma dospecw",
"exec : SENDDO",
"exec : logif iffable",
"exec : logif STHEN",
"$$4 :",
"exec : SELSEIF end_spec SLPAR $$4 expr SRPAR STHEN",
"exec : SELSE end_spec",
"exec : SENDIF end_spec",
"logif : SLOGIF end_spec SLPAR expr SRPAR",
"dospec : name SEQUALS exprlist",
"dospecw : dospec",
"$$5 :",
"dospecw : SWHILE $$5 SLPAR expr SRPAR",
"iffable : let lhs SEQUALS expr",
"iffable : SASSIGN end_spec assignlabel STO name",
"iffable : SCONTINUE end_spec",
"iffable : goto",
"iffable : io",
"iffable : SARITHIF end_spec SLPAR expr SRPAR label SCOMMA label SCOMMA label",
"iffable : call",
"iffable : call SLPAR SRPAR",
"iffable : call SLPAR callarglist SRPAR",
"iffable : SRETURN end_spec opt_expr",
"iffable : stop end_spec opt_expr",
"assignlabel : SICON",
"let : SLET",
"goto : SGOTO end_spec label",
"goto : SASGOTO end_spec name",
"goto : SASGOTO end_spec name opt_comma SLPAR labellist SRPAR",
"goto : SCOMPGOTO end_spec SLPAR labellist SRPAR opt_comma expr",
"opt_comma :",
"opt_comma : SCOMMA",
"call : SCALL end_spec name",
"callarglist : callarg",
"callarglist : callarglist SCOMMA callarg",
"callarg : expr",
"callarg : SSTAR label",
"stop : SPAUSE",
"stop : SSTOP",
"exprlist : expr",
"exprlist : exprlist SCOMMA expr",
"end_spec :",
"intonlyon :",
"intonlyoff :",
"io : io1",
"io1 : iofmove ioctl",
"io1 : iofmove unpar_fexpr",
"io1 : iofmove SSTAR",
"io1 : iofmove SPOWER",
"io1 : iofctl ioctl",
"io1 : read ioctl",
"io1 : read infmt",
"io1 : read ioctl inlist",
"io1 : read infmt SCOMMA inlist",
"io1 : read ioctl SCOMMA inlist",
"io1 : write ioctl",
"io1 : write ioctl outlist",
"io1 : write ioctl SCOMMA outlist",
"io1 : print",
"io1 : print SCOMMA outlist",
"iofmove : fmkwd end_spec in_ioctl",
"fmkwd : SBACKSPACE",
"fmkwd : SREWIND",
"fmkwd : SENDFILE",
"iofctl : ctlkwd end_spec in_ioctl",
"ctlkwd : SINQUIRE",
"ctlkwd : SOPEN",
"ctlkwd : SCLOSE",
"infmt : unpar_fexpr",
"infmt : SSTAR",
"ioctl : SLPAR fexpr SRPAR",
"ioctl : SLPAR ctllist SRPAR",
"ctllist : ioclause",
"ctllist : ctllist SCOMMA ioclause",
"ioclause : fexpr",
"ioclause : SSTAR",
"ioclause : SPOWER",
"ioclause : nameeq expr",
"ioclause : nameeq SSTAR",
"ioclause : nameeq SPOWER",
"nameeq : SNAMEEQ",
"read : SREAD end_spec in_ioctl",
"write : SWRITE end_spec in_ioctl",
"print : SPRINT end_spec fexpr in_ioctl",
"print : SPRINT end_spec SSTAR in_ioctl",
"inlist : inelt",
"inlist : inlist SCOMMA inelt",
"inelt : lhs",
"inelt : SLPAR inlist SCOMMA dospec SRPAR",
"outlist : uexpr",
"outlist : other",
"outlist : out2",
"out2 : uexpr SCOMMA uexpr",
"out2 : uexpr SCOMMA other",
"out2 : other SCOMMA uexpr",
"out2 : other SCOMMA other",
"out2 : out2 SCOMMA uexpr",
"out2 : out2 SCOMMA other",
"other : complex_const",
"other : SLPAR expr SRPAR",
"other : SLPAR uexpr SCOMMA dospec SRPAR",
"other : SLPAR other SCOMMA dospec SRPAR",
"other : SLPAR out2 SCOMMA dospec SRPAR",
"in_ioctl :",

};
#endif
#if YYDEBUG
#include <stdio.h>
#endif

extern int YYPARSE_DECL();
static int yygrowstack(short **, short **, short **,
    YYSTYPE **, YYSTYPE **, unsigned *);

/* define the initial stack-sizes */
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH  YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 500
#define YYMAXDEPTH  500
#endif
#endif

#define YYINITSTACKSIZE 500

int      yydebug;
int      yyerrflag;
    int      yynerrs;
    int      yychar;
    YYSTYPE  yylval;

/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(short **yyss, short **yyssp, short **yysslim,
    YYSTYPE **yyvs, YYSTYPE **yyvsp, unsigned *yystacksize)
{
    int i;
    unsigned newsize;
    short *newss;
    YYSTYPE *newvs;

    if ((newsize = *yystacksize) == 0)
        newsize = YYINITSTACKSIZE;
    else if (newsize >= YYMAXDEPTH)
        return -1;
    else if ((newsize *= 2) > YYMAXDEPTH)
        newsize = YYMAXDEPTH;

    i = *yyssp - *yyss;
    newss = (short *)realloc(*yyss, newsize * sizeof(*newss));
    if (newss == 0)
        return -1;

    *yyss  = newss;
    *yyssp = newss + i;
    newvs = (YYSTYPE *)realloc(*yyvs, newsize * sizeof(*newvs));
    if (newvs == 0)
        return -1;

    *yyvs = newvs;
    *yyvsp = newvs + i;
    *yystacksize = newsize;
    *yysslim = *yyss + newsize - 1;
    return 0;
}

#define YYABORT  goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR  goto yyerrlab

int
YYPARSE_DECL()
{
    int yym, yyn, yystate;

    YYSTYPE  yyval;
    /* variables for the parser stack */
    short   *yyssp;
    short   *yyss;
    short   *yysslim;
    YYSTYPE *yyvs;
    YYSTYPE *yyvsp;
    unsigned yystacksize;
#if YYDEBUG
    const char *yys;

    if ((yys = getenv("YYDEBUG")) != 0)
    {
        yyn = *yys;
        if (yyn >= '0' && yyn <= '9')
            yydebug = yyn - '0';
    }
#endif

    yynerrs = 0;
    yyerrflag = 0;
    yychar = YYEMPTY;
    yystate = 0;

    yystacksize = 0;
    yyvs = yyvsp = NULL;
    yyss = yyssp = NULL;
    if (yygrowstack(&yyss, &yyssp, &yysslim, &yyvs, &yyvsp, &yystacksize))
        goto yyoverflow;
    yystate = 0;
    *yyssp = 0;

yyloop:
    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    if (yychar < 0)
    {
        if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, reading %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
    }
    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: state %d, shifting to state %d\n",
                    YYPREFIX, yystate, yytable[yyn]);
#endif
        if (yyssp >= yysslim && yygrowstack(&yyss, &yyssp, &yysslim,
            &yyvs, &yyvsp, &yystacksize))
        {
            goto yyoverflow;
        }
        yystate = yytable[yyn];
        *++yyssp = yytable[yyn];
        *++yyvsp = yylval;
        yychar = YYEMPTY;
        if (yyerrflag > 0)  --yyerrflag;
        goto yyloop;
    }
    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
        yyn = yytable[yyn];
        goto yyreduce;
    }
    if (yyerrflag) goto yyinrecovery;

    yyerror("syntax error");

    goto yyerrlab;

yyerrlab:
    ++yynerrs;

yyinrecovery:
    if (yyerrflag < 3)
    {
        yyerrflag = 3;
        for (;;)
        {
            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: state %d, error recovery shifting\
 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
                if (yyssp >= yysslim && yygrowstack(&yyss, &yyssp,
                    &yysslim, &yyvs, &yyvsp, &yystacksize))
                {
                    goto yyoverflow;
                }
                yystate = yytable[yyn];
                *++yyssp = yytable[yyn];
                *++yyvsp = yylval;
                goto yyloop;
            }
            else
            {
#if YYDEBUG
                if (yydebug)
                    printf("%sdebug: error recovery discarding state %d\n",
                            YYPREFIX, *yyssp);
#endif
                if (yyssp <= yyss) goto yyabort;
                --yyssp;
                --yyvsp;
            }
        }
    }
    else
    {
        if (yychar == 0) goto yyabort;
#if YYDEBUG
        if (yydebug)
        {
            yys = 0;
            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
            if (!yys) yys = "illegal-symbol";
            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
                    YYPREFIX, yystate, yychar, yys);
        }
#endif
        yychar = YYEMPTY;
        goto yyloop;
    }

yyreduce:
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
                YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
    yym = yylen[yyn];
    if (yym)
        yyval = yyvsp[1-yym];
    else
        memset(&yyval, 0, sizeof yyval);
    switch (yyn)
    {
case 3:
#line 220 "gram.y"
	{
/* stat:   is the nonterminal for Fortran statements */

		  lastwasbranch = NO; }
break;
case 5:
#line 226 "gram.y"
	{ /* forbid further statement function definitions... */
		  if (parstate == INDATA && laststfcn != thisstno)
			parstate = INEXEC;
		  thisstno++;
		  if(yyvsp[-1].labval && (yyvsp[-1].labval->labelno==dorange))
			enddo(yyvsp[-1].labval->labelno);
		  if(lastwasbranch && thislabel==NULL)
			warn("statement cannot be reached");
		  lastwasbranch = thiswasbranch;
		  thiswasbranch = NO;
		  if(yyvsp[-1].labval)
			{
			if(yyvsp[-1].labval->labtype == LABFORMAT)
				err("label already that of a format");
			else
				yyvsp[-1].labval->labtype = LABEXEC;
			}
		  freetemps();
		}
break;
case 6:
#line 246 "gram.y"
	{ if (can_include)
			doinclude( yyvsp[0].charpval );
		  else {
			fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval);
			done(1);
			}
		}
break;
case 7:
#line 254 "gram.y"
	{ if (yyvsp[-2].labval)
			lastwasbranch = NO;
		  endcheck();
		  endproc(); /* lastwasbranch = NO; -- set in endproc() */
		}
break;
case 8:
#line 260 "gram.y"
	{ unclassifiable();

/* flline flushes the current line, ignoring the rest of the text there */

		  flline(); }
break;
case 9:
#line 266 "gram.y"
	{ flline();  needkwd = NO;  inioctl = NO;
		  yyerrok; yyclearin; }
break;
case 10:
#line 271 "gram.y"
	{
		if(yystno != 0)
			{
			yyval.labval = thislabel =  mklabel(yystno);
			if( ! headerdone ) {
				if (procclass == CLUNKNOWN)
					procclass = CLMAIN;
				puthead(CNULL, procclass);
				}
			if(thislabel->labdefined)
				execerr("label %s already defined",
					convic(thislabel->stateno) );
			else	{
				if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
				    && thislabel->labtype!=LABFORMAT)
					warn1("there is a branch to label %s from outside block",
					      convic( (ftnint) (thislabel->stateno) ) );
				thislabel->blklevel = blklevel;
				thislabel->labdefined = YES;
				if(thislabel->labtype != LABFORMAT)
					p1_label((long)(thislabel - labeltab));
				}
			}
		else    yyval.labval = thislabel = NULL;
		}
break;
case 11:
#line 299 "gram.y"
	{startproc(yyvsp[0].extval, CLMAIN); }
break;
case 12:
#line 301 "gram.y"
	{	warn("ignoring arguments to main program");
			/* hashclear(); */
			startproc(yyvsp[-1].extval, CLMAIN); }
break;
case 13:
#line 305 "gram.y"
	{ if(yyvsp[0].extval) NO66("named BLOCKDATA");
		  startproc(yyvsp[0].extval, CLBLOCK); }
break;
case 14:
#line 308 "gram.y"
	{ entrypt(CLPROC, TYSUBR, (ftnint) 0,  yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 15:
#line 310 "gram.y"
	{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 16:
#line 312 "gram.y"
	{ entrypt(CLPROC, yyvsp[-4].ival, varleng, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 17:
#line 314 "gram.y"
	{ if(parstate==OUTSIDE || procclass==CLMAIN
			|| procclass==CLBLOCK)
				execerr("misplaced entry statement", CNULL);
		  entrypt(CLENTRY, 0, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval);
		}
break;
case 18:
#line 322 "gram.y"
	{ newproc(); }
break;
case 19:
#line 326 "gram.y"
	{ yyval.extval = newentry(yyvsp[0].namval, 1); }
break;
case 20:
#line 330 "gram.y"
	{ yyval.namval = mkname(token); }
break;
case 21:
#line 333 "gram.y"
	{ yyval.extval = NULL; }
break;
case 29:
#line 351 "gram.y"
	{ yyval.chval = 0; }
break;
case 30:
#line 353 "gram.y"
	{ NO66(" () argument list");
		  yyval.chval = 0; }
break;
case 31:
#line 356 "gram.y"
	{yyval.chval = yyvsp[-1].chval; }
break;
case 32:
#line 360 "gram.y"
	{ yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval,CHNULL) : CHNULL ); }
break;
case 33:
#line 362 "gram.y"
	{ if(yyvsp[0].namval) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval, yyvsp[-2].chval); }
break;
case 34:
#line 366 "gram.y"
	{ if(yyvsp[0].namval->vstg!=STGUNKNOWN && yyvsp[0].namval->vstg!=STGARG)
			dclerr("name declared as argument after use", yyvsp[0].namval);
		  yyvsp[0].namval->vstg = STGARG;
		}
break;
case 35:
#line 371 "gram.y"
	{ NO66("altenate return argument");

/* substars   means that '*'ed formal parameters should be replaced.
   This is used to specify alternate return labels; in theory, only
   parameter slots which have '*' should accept the statement labels.
   This compiler chooses to ignore the '*'s in the formal declaration, and
   always return the proper value anyway.

   This variable is only referred to in   proc.c   */

		  yyval.namval = 0;  substars = YES; }
break;
case 36:
#line 387 "gram.y"
	{
		char *s;
		s = copyn(toklen+1, token);
		s[toklen] = '\0';
		yyval.charpval = s;
		}
break;
case 45:
#line 403 "gram.y"
	{ NO66("SAVE statement");
		  saveall = YES; }
break;
case 46:
#line 406 "gram.y"
	{ NO66("SAVE statement"); }
break;
case 47:
#line 408 "gram.y"
	{ fmtstmt(thislabel); setfmt(thislabel); }
break;
case 48:
#line 410 "gram.y"
	{ NO66("PARAMETER statement"); }
break;
case 49:
#line 414 "gram.y"
	{ settype(yyvsp[-4].namval, yyvsp[-6].ival, yyvsp[0].lval);
		  if(ndim>0) setbound(yyvsp[-4].namval,ndim,dims);
		}
break;
case 50:
#line 418 "gram.y"
	{ settype(yyvsp[-2].namval, yyvsp[-4].ival, yyvsp[0].lval);
		  if(ndim>0) setbound(yyvsp[-2].namval,ndim,dims);
		}
break;
case 51:
#line 422 "gram.y"
	{ if (new_dcl == 2) {
			err("attempt to give DATA in type-declaration");
			new_dcl = 1;
			}
		}
break;
case 52:
#line 429 "gram.y"
	{ new_dcl = 2; }
break;
case 53:
#line 432 "gram.y"
	{ varleng = yyvsp[0].lval; }
break;
case 54:
#line 436 "gram.y"
	{ varleng = (yyvsp[0].ival<0 || ONEOF(yyvsp[0].ival,M(TYLOGICAL)|M(TYLONG))
				? 0 : typesize[yyvsp[0].ival]);
		  vartype = yyvsp[0].ival; }
break;
case 55:
#line 441 "gram.y"
	{ yyval.ival = TYLONG; }
break;
case 56:
#line 442 "gram.y"
	{ yyval.ival = tyreal; }
break;
case 57:
#line 443 "gram.y"
	{ ++complex_seen; yyval.ival = tycomplex; }
break;
case 58:
#line 444 "gram.y"
	{ yyval.ival = TYDREAL; }
break;
case 59:
#line 445 "gram.y"
	{ ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; }
break;
case 60:
#line 446 "gram.y"
	{ yyval.ival = TYLOGICAL; }
break;
case 61:
#line 447 "gram.y"
	{ NO66("CHARACTER statement"); yyval.ival = TYCHAR; }
break;
case 62:
#line 448 "gram.y"
	{ yyval.ival = TYUNKNOWN; }
break;
case 63:
#line 449 "gram.y"
	{ yyval.ival = TYUNKNOWN; }
break;
case 64:
#line 450 "gram.y"
	{ NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; }
break;
case 65:
#line 451 "gram.y"
	{ NOEXT("STATIC statement"); yyval.ival = - STGBSS; }
break;
case 66:
#line 452 "gram.y"
	{ yyval.ival = TYINT1; }
break;
case 67:
#line 456 "gram.y"
	{ yyval.lval = varleng; }
break;
case 68:
#line 458 "gram.y"
	{
		expptr p;
		p = yyvsp[-1].expval;
		NO66("length specification *n");
		if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
			{
			yyval.lval = 0;
			dclerr("length must be a positive integer constant",
				NPNULL);
			}
		else {
			if (vartype == TYCHAR)
				yyval.lval = p->constblock.Const.ci;
			else switch((int)p->constblock.Const.ci) {
				case 1:	yyval.lval = 1; break;
				case 2: yyval.lval = typesize[TYSHORT];	break;
				case 4: yyval.lval = typesize[TYLONG];	break;
				case 8: yyval.lval = typesize[TYDREAL];	break;
				case 16: yyval.lval = typesize[TYDCOMPLEX]; break;
				default:
					dclerr("invalid length",NPNULL);
					yyval.lval = varleng;
				}
			}
		}
break;
case 69:
#line 484 "gram.y"
	{ NO66("length specification *(*)"); yyval.lval = -1; }
break;
case 70:
#line 488 "gram.y"
	{ incomm( yyval.extval = comblock("") , yyvsp[0].namval ); }
break;
case 71:
#line 490 "gram.y"
	{ yyval.extval = yyvsp[-1].extval;  incomm(yyvsp[-1].extval, yyvsp[0].namval); }
break;
case 72:
#line 492 "gram.y"
	{ yyval.extval = yyvsp[-2].extval;  incomm(yyvsp[-2].extval, yyvsp[0].namval); }
break;
case 73:
#line 494 "gram.y"
	{ incomm(yyvsp[-2].extval, yyvsp[0].namval); }
break;
case 74:
#line 498 "gram.y"
	{ yyval.extval = comblock(""); }
break;
case 75:
#line 500 "gram.y"
	{ yyval.extval = comblock(token); }
break;
case 76:
#line 504 "gram.y"
	{ setext(yyvsp[0].namval); }
break;
case 77:
#line 506 "gram.y"
	{ setext(yyvsp[0].namval); }
break;
case 78:
#line 510 "gram.y"
	{ NO66("INTRINSIC statement"); setintr(yyvsp[0].namval); }
break;
case 79:
#line 512 "gram.y"
	{ setintr(yyvsp[0].namval); }
break;
case 82:
#line 520 "gram.y"
	{
		struct Equivblock *p;
		if(nequiv >= maxequiv)
			many("equivalences", 'q', maxequiv);
		p  =  & eqvclass[nequiv++];
		p->eqvinit = NO;
		p->eqvbottom = 0;
		p->eqvtop = 0;
		p->equivs = yyvsp[-1].eqvval;
		}
break;
case 83:
#line 533 "gram.y"
	{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
		}
break;
case 84:
#line 537 "gram.y"
	{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
		  yyval.eqvval->eqvnextp = yyvsp[-2].eqvval;
		}
break;
case 87:
#line 548 "gram.y"
	{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}
		  if(parstate < INDATA)
			{
			enddcl();
			parstate = INDATA;
			datagripe = 1;
			}
		}
break;
case 88:
#line 563 "gram.y"
	{ ftnint junk;
		  if(nextdata(&junk) != NULL)
			err("too few initializers");
		  frdata(yyvsp[-4].chval);
		  frrpl();
		}
break;
case 89:
#line 571 "gram.y"
	{ frchain(&datastack); curdtp = 0; }
break;
case 90:
#line 573 "gram.y"
	{ pop_datastack(); }
break;
case 91:
#line 575 "gram.y"
	{ toomanyinit = NO; }
break;
case 94:
#line 580 "gram.y"
	{ dataval(ENULL, yyvsp[0].expval); }
break;
case 95:
#line 582 "gram.y"
	{ dataval(yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 97:
#line 587 "gram.y"
	{ if( yyvsp[-1].ival==OPMINUS && ISCONST(yyvsp[0].expval) )
			consnegop((Constp)yyvsp[0].expval);
		  yyval.expval = yyvsp[0].expval;
		}
break;
case 101:
#line 599 "gram.y"
	{ int k;
		  yyvsp[0].namval->vsave = YES;
		  k = yyvsp[0].namval->vstg;
		if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
			dclerr("can only save static variables", yyvsp[0].namval);
		}
break;
case 105:
#line 613 "gram.y"
	{ if(yyvsp[-2].namval->vclass == CLUNKNOWN)
			make_param((struct Paramblock *)yyvsp[-2].namval, yyvsp[0].expval);
		  else dclerr("cannot make into parameter", yyvsp[-2].namval);
		}
break;
case 106:
#line 620 "gram.y"
	{ if(ndim>0) setbound(yyvsp[-1].namval, ndim, dims); }
break;
case 107:
#line 624 "gram.y"
	{ Namep np;
		  struct Primblock *pp = (struct Primblock *)yyvsp[0].expval;
		  int tt = yyvsp[0].expval->tag;
		  if (tt != TPRIM) {
			if (tt == TCONST)
				err("parameter in data statement");
			else
				erri("tag %d in data statement",tt);
			yyval.chval = 0;
			err_lineno = lineno;
			break;
			}
		  np = pp -> namep;
		  vardcl(np);
		  if ((pp->fcharp || pp->lcharp)
		   && (np->vtype != TYCHAR || np->vdim && !pp->argsp))
			sserr(np);
		  if(np->vstg == STGCOMMON)
			extsymtab[np->vardesc.varno].extinit = YES;
		  else if(np->vstg==STGEQUIV)
			eqvclass[np->vardesc.varno].eqvinit = YES;
		  else if(np->vstg!=STGINIT && np->vstg!=STGBSS) {
			errstr(np->vstg == STGARG
				? "Dummy argument \"%.60s\" in data statement."
				: "Cannot give data to \"%.75s\"",
				np->fvarname);
			yyval.chval = 0;
			err_lineno = lineno;
			break;
			}
		  yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL);
		}
break;
case 108:
#line 657 "gram.y"
	{ chainp p; struct Impldoblock *q;
		pop_datastack();
		q = ALLOC(Impldoblock);
		q->tag = TIMPLDO;
		(q->varnp = (Namep) (yyvsp[-1].chval->datap))->vimpldovar = 1;
		p = yyvsp[-1].chval->nextp;
		if(p)  { q->implb = (expptr)(p->datap); p = p->nextp; }
		if(p)  { q->impub = (expptr)(p->datap); p = p->nextp; }
		if(p)  { q->impstep = (expptr)(p->datap); }
		frchain( & (yyvsp[-1].chval) );
		yyval.chval = mkchain((char *)q, CHNULL);
		q->datalist = hookup(yyvsp[-3].chval, yyval.chval);
		}
break;
case 109:
#line 673 "gram.y"
	{ if (!datastack)
			curdtp = 0;
		  datastack = mkchain((char *)curdtp, datastack);
		  curdtp = yyvsp[0].chval; curdtelt = 0;
		  }
break;
case 110:
#line 679 "gram.y"
	{ yyval.chval = hookup(yyvsp[-2].chval, yyvsp[0].chval); }
break;
case 111:
#line 683 "gram.y"
	{ ndim = 0; }
break;
case 113:
#line 687 "gram.y"
	{ ndim = 0; }
break;
case 116:
#line 692 "gram.y"
	{
		  if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = 0;
			  dims[ndim].ub = yyvsp[0].expval;
			}
		  ++ndim;
		}
break;
case 117:
#line 702 "gram.y"
	{
		  if(ndim == maxdim)
			err("too many dimensions");
		  else if(ndim < maxdim)
			{ dims[ndim].lb = yyvsp[-2].expval;
			  dims[ndim].ub = yyvsp[0].expval;
			}
		  ++ndim;
		}
break;
case 118:
#line 714 "gram.y"
	{ yyval.expval = 0; }
break;
case 120:
#line 719 "gram.y"
	{ nstars = 1; labarray[0] = yyvsp[0].labval; }
break;
case 121:
#line 721 "gram.y"
	{ if(nstars < maxlablist)  labarray[nstars++] = yyvsp[0].labval; }
break;
case 122:
#line 725 "gram.y"
	{ yyval.labval = execlab( convci(toklen, token) ); }
break;
case 123:
#line 729 "gram.y"
	{ NO66("IMPLICIT statement"); }
break;
case 126:
#line 735 "gram.y"
	{ if (vartype != TYUNKNOWN)
			dclerr("-- expected letter range",NPNULL);
		  setimpl(vartype, varleng, 'a', 'z'); }
break;
case 127:
#line 740 "gram.y"
	{ needkwd = 1; }
break;
case 131:
#line 749 "gram.y"
	{ setimpl(vartype, varleng, yyvsp[0].ival, yyvsp[0].ival); }
break;
case 132:
#line 751 "gram.y"
	{ setimpl(vartype, varleng, yyvsp[-2].ival, yyvsp[0].ival); }
break;
case 133:
#line 755 "gram.y"
	{ if(toklen!=1 || token[0]<'a' || token[0]>'z')
			{
			dclerr("implicit item must be single letter", NPNULL);
			yyval.ival = 0;
			}
		  else yyval.ival = token[0];
		}
break;
case 136:
#line 769 "gram.y"
	{
		if(yyvsp[-2].namval->vclass == CLUNKNOWN)
			{
			yyvsp[-2].namval->vclass = CLNAMELIST;
			yyvsp[-2].namval->vtype = TYINT;
			yyvsp[-2].namval->vstg = STGBSS;
			yyvsp[-2].namval->varxptr.namelist = yyvsp[0].chval;
			yyvsp[-2].namval->vardesc.varno = ++lastvarno;
			}
		else dclerr("cannot be a namelist name", yyvsp[-2].namval);
		}
break;
case 137:
#line 783 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].namval, CHNULL); }
break;
case 138:
#line 785 "gram.y"
	{ yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].namval, CHNULL)); }
break;
case 139:
#line 789 "gram.y"
	{ switch(parstate)
			{
			case OUTSIDE:	newproc();
					startproc(ESNULL, CLMAIN);
			case INSIDE:	parstate = INDCL;
			case INDCL:	break;

			case INDATA:
				if (datagripe) {
					errstr(
				"Statement order error: declaration after DATA",
						CNULL);
					datagripe = 0;
					}
				break;

			default:
				dclerr("declaration among executables", NPNULL);
			}
		}
break;
case 140:
#line 811 "gram.y"
	{ yyval.chval = 0; }
break;
case 141:
#line 813 "gram.y"
	{ yyval.chval = revchain(yyvsp[0].chval); }
break;
case 142:
#line 817 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 143:
#line 819 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
break;
case 145:
#line 824 "gram.y"
	{ yyval.expval = yyvsp[-1].expval; if (yyval.expval->tag == TPRIM)
					paren_used(&yyval.expval->primblock); }
break;
case 149:
#line 832 "gram.y"
	{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 150:
#line 834 "gram.y"
	{ yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 151:
#line 836 "gram.y"
	{ yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 152:
#line 838 "gram.y"
	{ yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 153:
#line 840 "gram.y"
	{ if(yyvsp[-1].ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
		  else {
			yyval.expval = yyvsp[0].expval;
			if (yyval.expval->tag == TPRIM)
				paren_used(&yyval.expval->primblock);
			}
		}
break;
case 154:
#line 849 "gram.y"
	{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 155:
#line 851 "gram.y"
	{ NO66(".EQV. operator");
		  yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval,yyvsp[0].expval); }
break;
case 156:
#line 854 "gram.y"
	{ NO66(".NEQV. operator");
		  yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 157:
#line 857 "gram.y"
	{ yyval.expval = mkexpr(OPOR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 158:
#line 859 "gram.y"
	{ yyval.expval = mkexpr(OPAND, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 159:
#line 861 "gram.y"
	{ yyval.expval = mkexpr(OPNOT, yyvsp[0].expval, ENULL); }
break;
case 160:
#line 863 "gram.y"
	{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 161:
#line 867 "gram.y"
	{ yyval.ival = OPPLUS; }
break;
case 162:
#line 868 "gram.y"
	{ yyval.ival = OPMINUS; }
break;
case 163:
#line 871 "gram.y"
	{ yyval.ival = OPEQ; }
break;
case 164:
#line 872 "gram.y"
	{ yyval.ival = OPGT; }
break;
case 165:
#line 873 "gram.y"
	{ yyval.ival = OPLT; }
break;
case 166:
#line 874 "gram.y"
	{ yyval.ival = OPGE; }
break;
case 167:
#line 875 "gram.y"
	{ yyval.ival = OPLE; }
break;
case 168:
#line 876 "gram.y"
	{ yyval.ival = OPNE; }
break;
case 169:
#line 880 "gram.y"
	{ yyval.expval = mkprim(yyvsp[0].namval, LBNULL, CHNULL); }
break;
case 170:
#line 882 "gram.y"
	{ NO66("substring operator :");
		  yyval.expval = mkprim(yyvsp[-1].namval, LBNULL, yyvsp[0].chval); }
break;
case 171:
#line 885 "gram.y"
	{ yyval.expval = mkprim(yyvsp[-3].namval, mklist(yyvsp[-1].chval), CHNULL); }
break;
case 172:
#line 887 "gram.y"
	{ NO66("substring operator :");
		  yyval.expval = mkprim(yyvsp[-4].namval, mklist(yyvsp[-2].chval), yyvsp[0].chval); }
break;
case 173:
#line 892 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[-3].expval, mkchain((char *)yyvsp[-1].expval,CHNULL)); }
break;
case 174:
#line 896 "gram.y"
	{ yyval.expval = 0; }
break;
case 176:
#line 901 "gram.y"
	{ if(yyvsp[0].namval->vclass == CLPARAM)
			yyval.expval = (expptr) cpexpr(
				( (struct Paramblock *) (yyvsp[0].namval) ) -> paramval);
		}
break;
case 178:
#line 908 "gram.y"
	{ yyval.expval = mklogcon(1); }
break;
case 179:
#line 909 "gram.y"
	{ yyval.expval = mklogcon(0); }
break;
case 180:
#line 910 "gram.y"
	{ yyval.expval = mkstrcon(toklen, token); }
break;
case 181:
#line 911 "gram.y"
	{ yyval.expval = mkintqcon(toklen, token); }
break;
case 182:
#line 912 "gram.y"
	{ yyval.expval = mkrealcon(tyreal, token); }
break;
case 183:
#line 913 "gram.y"
	{ yyval.expval = mkrealcon(TYDREAL, token); }
break;
case 185:
#line 918 "gram.y"
	{ yyval.expval = mkcxcon(yyvsp[-3].expval,yyvsp[-1].expval); }
break;
case 186:
#line 922 "gram.y"
	{ NOEXT("hex constant");
		  yyval.expval = mkbitcon(4, toklen, token); }
break;
case 187:
#line 925 "gram.y"
	{ NOEXT("octal constant");
		  yyval.expval = mkbitcon(3, toklen, token); }
break;
case 188:
#line 928 "gram.y"
	{ NOEXT("binary constant");
		  yyval.expval = mkbitcon(1, toklen, token); }
break;
case 190:
#line 934 "gram.y"
	{ yyval.expval = yyvsp[-1].expval; }
break;
case 193:
#line 940 "gram.y"
	{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 194:
#line 942 "gram.y"
	{ yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 195:
#line 944 "gram.y"
	{ yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 196:
#line 946 "gram.y"
	{ yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 197:
#line 948 "gram.y"
	{ if(yyvsp[-1].ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
		  else yyval.expval = yyvsp[0].expval;
		}
break;
case 198:
#line 953 "gram.y"
	{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 200:
#line 958 "gram.y"
	{
		if(yyvsp[-2].labval->labdefined)
			execerr("no backward DO loops", CNULL);
		yyvsp[-2].labval->blklevel = blklevel+1;
		exdo(yyvsp[-2].labval->labelno, NPNULL, yyvsp[0].chval);
		}
break;
case 201:
#line 965 "gram.y"
	{
		exdo((int)(ctls - ctlstack - 2), NPNULL, yyvsp[0].chval);
		NOEXT("DO without label");
		}
break;
case 202:
#line 970 "gram.y"
	{ exenddo(NPNULL); }
break;
case 203:
#line 972 "gram.y"
	{ exendif();  thiswasbranch = NO; }
break;
case 205:
#line 974 "gram.y"
	{westart(1);}
break;
case 206:
#line 975 "gram.y"
	{ exelif(yyvsp[-2].expval); lastwasbranch = NO; }
break;
case 207:
#line 977 "gram.y"
	{ exelse(); lastwasbranch = NO; }
break;
case 208:
#line 979 "gram.y"
	{ exendif(); lastwasbranch = NO; }
break;
case 209:
#line 983 "gram.y"
	{ exif(yyvsp[-1].expval); }
break;
case 210:
#line 987 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[-2].namval, yyvsp[0].chval); }
break;
case 212:
#line 991 "gram.y"
	{westart(0);}
break;
case 213:
#line 992 "gram.y"
	{ yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval); }
break;
case 214:
#line 996 "gram.y"
	{ exequals((struct Primblock *)yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 215:
#line 998 "gram.y"
	{ exassign(yyvsp[0].namval, yyvsp[-2].labval); }
break;
case 218:
#line 1002 "gram.y"
	{ inioctl = NO; }
break;
case 219:
#line 1004 "gram.y"
	{ exarif(yyvsp[-6].expval, yyvsp[-4].labval, yyvsp[-2].labval, yyvsp[0].labval);  thiswasbranch = YES; }
break;
case 220:
#line 1006 "gram.y"
	{ excall(yyvsp[0].namval, LBNULL, 0, labarray); }
break;
case 221:
#line 1008 "gram.y"
	{ excall(yyvsp[-2].namval, LBNULL, 0, labarray); }
break;
case 222:
#line 1010 "gram.y"
	{ if(nstars < maxlablist)
			excall(yyvsp[-3].namval, mklist(revchain(yyvsp[-1].chval)), nstars, labarray);
		  else
			many("alternate returns", 'l', maxlablist);
		}
break;
case 223:
#line 1016 "gram.y"
	{ exreturn(yyvsp[0].expval);  thiswasbranch = YES; }
break;
case 224:
#line 1018 "gram.y"
	{ exstop(yyvsp[-2].ival, yyvsp[0].expval);  thiswasbranch = yyvsp[-2].ival; }
break;
case 225:
#line 1022 "gram.y"
	{ yyval.labval = mklabel( convci(toklen, token) ); }
break;
case 226:
#line 1026 "gram.y"
	{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}
		}
break;
case 227:
#line 1035 "gram.y"
	{ exgoto(yyvsp[0].labval);  thiswasbranch = YES; }
break;
case 228:
#line 1037 "gram.y"
	{ exasgoto(yyvsp[0].namval);  thiswasbranch = YES; }
break;
case 229:
#line 1039 "gram.y"
	{ exasgoto(yyvsp[-4].namval);  thiswasbranch = YES; }
break;
case 230:
#line 1041 "gram.y"
	{ if(nstars < maxlablist)
			putcmgo(putx(fixtype(yyvsp[0].expval)), nstars, labarray);
		  else
			many("labels in computed GOTO list", 'l', maxlablist);
		}
break;
case 233:
#line 1053 "gram.y"
	{ nstars = 0; yyval.namval = yyvsp[0].namval; }
break;
case 234:
#line 1057 "gram.y"
	{ yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval,CHNULL) : CHNULL; }
break;
case 235:
#line 1059 "gram.y"
	{ yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval) : yyvsp[-2].chval; }
break;
case 237:
#line 1064 "gram.y"
	{ if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; yyval.expval = 0; }
break;
case 238:
#line 1068 "gram.y"
	{ yyval.ival = 0; }
break;
case 239:
#line 1070 "gram.y"
	{ yyval.ival = 2; }
break;
case 240:
#line 1074 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 241:
#line 1076 "gram.y"
	{ yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].expval,CHNULL) ); }
break;
case 242:
#line 1080 "gram.y"
	{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}

/* This next statement depends on the ordering of the state table encoding */

		  if(parstate < INDATA) enddcl();
		}
break;
case 243:
#line 1093 "gram.y"
	{ intonly = YES; }
break;
case 244:
#line 1097 "gram.y"
	{ intonly = NO; }
break;
case 245:
#line 1102 "gram.y"
	{ endio(); }
break;
case 247:
#line 1107 "gram.y"
	{ ioclause(IOSUNIT, yyvsp[0].expval); endioctl(); }
break;
case 248:
#line 1109 "gram.y"
	{ ioclause(IOSUNIT, ENULL); endioctl(); }
break;
case 249:
#line 1111 "gram.y"
	{ ioclause(IOSUNIT, IOSTDERR); endioctl(); }
break;
case 251:
#line 1114 "gram.y"
	{ doio(CHNULL); }
break;
case 252:
#line 1116 "gram.y"
	{ doio(CHNULL); }
break;
case 253:
#line 1118 "gram.y"
	{ doio(revchain(yyvsp[0].chval)); }
break;
case 254:
#line 1120 "gram.y"
	{ doio(revchain(yyvsp[0].chval)); }
break;
case 255:
#line 1122 "gram.y"
	{ doio(revchain(yyvsp[0].chval)); }
break;
case 256:
#line 1124 "gram.y"
	{ doio(CHNULL); }
break;
case 257:
#line 1126 "gram.y"
	{ doio(revchain(yyvsp[0].chval)); }
break;
case 258:
#line 1128 "gram.y"
	{ doio(revchain(yyvsp[0].chval)); }
break;
case 259:
#line 1130 "gram.y"
	{ doio(CHNULL); }
break;
case 260:
#line 1132 "gram.y"
	{ doio(revchain(yyvsp[0].chval)); }
break;
case 262:
#line 1139 "gram.y"
	{ iostmt = IOBACKSPACE; }
break;
case 263:
#line 1141 "gram.y"
	{ iostmt = IOREWIND; }
break;
case 264:
#line 1143 "gram.y"
	{ iostmt = IOENDFILE; }
break;
case 266:
#line 1150 "gram.y"
	{ iostmt = IOINQUIRE; }
break;
case 267:
#line 1152 "gram.y"
	{ iostmt = IOOPEN; }
break;
case 268:
#line 1154 "gram.y"
	{ iostmt = IOCLOSE; }
break;
case 269:
#line 1158 "gram.y"
	{
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, yyvsp[0].expval);
		endioctl();
		}
break;
case 270:
#line 1164 "gram.y"
	{
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, ENULL);
		endioctl();
		}
break;
case 271:
#line 1172 "gram.y"
	{
		  ioclause(IOSUNIT, yyvsp[-1].expval);
		  endioctl();
		}
break;
case 272:
#line 1177 "gram.y"
	{ endioctl(); }
break;
case 275:
#line 1185 "gram.y"
	{ ioclause(IOSPOSITIONAL, yyvsp[0].expval); }
break;
case 276:
#line 1187 "gram.y"
	{ ioclause(IOSPOSITIONAL, ENULL); }
break;
case 277:
#line 1189 "gram.y"
	{ ioclause(IOSPOSITIONAL, IOSTDERR); }
break;
case 278:
#line 1191 "gram.y"
	{ ioclause(yyvsp[-1].ival, yyvsp[0].expval); }
break;
case 279:
#line 1193 "gram.y"
	{ ioclause(yyvsp[-1].ival, ENULL); }
break;
case 280:
#line 1195 "gram.y"
	{ ioclause(yyvsp[-1].ival, IOSTDERR); }
break;
case 281:
#line 1199 "gram.y"
	{ yyval.ival = iocname(); }
break;
case 282:
#line 1203 "gram.y"
	{ iostmt = IOREAD; }
break;
case 283:
#line 1207 "gram.y"
	{ iostmt = IOWRITE; }
break;
case 284:
#line 1211 "gram.y"
	{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, yyvsp[-1].expval);
		endioctl();
		}
break;
case 285:
#line 1218 "gram.y"
	{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, ENULL);
		endioctl();
		}
break;
case 286:
#line 1227 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
break;
case 287:
#line 1229 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
break;
case 288:
#line 1233 "gram.y"
	{ yyval.tagval = (tagptr) yyvsp[0].expval; }
break;
case 289:
#line 1235 "gram.y"
	{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval,revchain(yyvsp[-3].chval)); }
break;
case 290:
#line 1239 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 291:
#line 1241 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
break;
case 293:
#line 1246 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
break;
case 294:
#line 1248 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
break;
case 295:
#line 1250 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
break;
case 296:
#line 1252 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
break;
case 297:
#line 1254 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
break;
case 298:
#line 1256 "gram.y"
	{ yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
break;
case 299:
#line 1260 "gram.y"
	{ yyval.tagval = (tagptr) yyvsp[0].expval; }
break;
case 300:
#line 1262 "gram.y"
	{ yyval.tagval = (tagptr) yyvsp[-1].expval; }
break;
case 301:
#line 1264 "gram.y"
	{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].expval, CHNULL) ); }
break;
case 302:
#line 1266 "gram.y"
	{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].tagval, CHNULL) ); }
break;
case 303:
#line 1268 "gram.y"
	{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, revchain(yyvsp[-3].chval)); }
break;
case 304:
#line 1272 "gram.y"
	{ startioctl(); }
break;
#line 2702 "gram.c"
    }
    yyssp -= yym;
    yystate = *yyssp;
    yyvsp -= yym;
    yym = yylhs[yyn];
    if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
        if (yydebug)
            printf("%sdebug: after reduction, shifting from state 0 to\
 state %d\n", YYPREFIX, YYFINAL);
#endif
        yystate = YYFINAL;
        *++yyssp = YYFINAL;
        *++yyvsp = yyval;
        if (yychar < 0)
        {
            if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
            if (yydebug)
            {
                yys = 0;
                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
                if (!yys) yys = "illegal-symbol";
                printf("%sdebug: state %d, reading %d (%s)\n",
                        YYPREFIX, YYFINAL, yychar, yys);
            }
#endif
        }
        if (yychar == 0) goto yyaccept;
        goto yyloop;
    }
    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn];
    else
        yystate = yydgoto[yym];
#if YYDEBUG
    if (yydebug)
        printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
    if (yyssp >= yysslim && yygrowstack(&yyss, &yyssp,
        &yysslim, &yyvs, &yyvsp, &yystacksize))
    {
        goto yyoverflow;
    }
    *++yyssp = (short) yystate;
    *++yyvsp = yyval;
    goto yyloop;

yyoverflow:
    yyerror("yacc stack overflow");

yyabort:
	 free(yyss);
	 free(yyvs);
    return (1);

yyaccept:
	 free(yyss);
	 free(yyvs);
    return (0);
}
