#include <sys/cdefs.h>
#ifndef lint
#if 0
static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
#else
__IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
#endif
#endif
#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 125 "gram.in"
#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 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 171 "gram.in"
typedef union	{
	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 76 "y.tab.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
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,   57,   57,   57,   98,   22,   23,
   23,   97,   97,   97,   97,   97,   97,   97,   97,   97,
   97,   97,    3,   99,  100,  100,  100,  100,   72,   72,
   34,   24,   24,   45,   45,   13,   13,   27,   27,   58,
   77,   78,  101,  102,  102,  102,  102,  102,  102,  102,
  102,  102,  102,  102,  102,  102,  102,  103,  110,  110,
  110,  105,  112,  112,  112,  107,  107,  104,  104,  113,
  113,  114,  114,  114,  114,  114,  114,   14,  106,  108,
  109,  109,   28,   28,    5,    5,   29,   29,   29,   30,
   30,   30,   30,   30,   30,    4,    4,    4,    4,    4,
  111,
};
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,    7,
    4,    1,    2,    2,    6,    2,    2,    5,    3,    1,
    4,    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,    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,
};
short yydefred[] = {                                      1,
    0,    9,   10,    0,    0,    8,    0,  224,  240,   64,
  259,   18,  240,   61,  265,  139,   57,  240,   87,   59,
   63,  240,   58,  240,  240,  240,  261,  240,    0,  139,
  139,   47,   18,  240,  240,  240,  240,  240,  139,  263,
   55,  139,   60,  134,  264,  139,  236,  240,   18,  240,
   56,  240,  260,    0,   65,  237,   18,   62,  240,  202,
   66,    0,    0,   54,    0,  240,    0,    0,    3,    4,
    5,    0,    0,    0,    0,    0,    0,  199,    0,    0,
  215,  216,  243,    0,    0,    0,    0,    0,  240,  240,
    2,   36,    6,    0,    0,    0,    0,  214,   89,    0,
  206,    0,    7,  207,   20,   19,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  127,    0,    0,    0,    0,
  301,    0,    0,   74,  101,  102,    0,   99,    0,  301,
   18,  230,    0,  241,   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,  246,  247,    0,  191,    0,    0,
  192,  184,  244,    0,  248,  267,    0,    0,    0,    0,
    0,  301,  301,  223,    0,   22,   13,  231,    0,   70,
    0,    0,   85,    0,    0,    0,    0,   17,    0,   80,
   76,    0,  122,  225,    0,    0,    0,    0,  123,    0,
    0,   78,    0,    0,  301,    0,  189,    0,  279,    0,
    0,    0,  147,    0,  144,  221,  146,  148,    0,    0,
    0,  280,    0,  139,    0,    0,   91,  222,  219,    0,
    0,    0,  232,   73,    0,   77,   79,   81,   86,  124,
    0,    0,  170,    0,  278,  273,  274,    0,    0,    0,
  270,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  283,    0,  285,    0,    0,    0,  255,    0,    0,    0,
    0,  257,  258,  262,    0,  113,  106,   71,    0,  109,
    0,  107,    0,  210,  201,    0,  242,    0,   30,   35,
    0,   34,   32,   83,    0,   15,    0,  120,    0,    0,
    0,    0,  128,    0,    0,  103,    0,  282,  281,    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,  235,  220,    0,    0,    0,    0,    0,    0,    0,
    0,  276,  277,    0,    0,  269,    0,    0,    0,    0,
    0,    0,  268,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  213,    0,    0,    0,    0,   90,
    0,    0,    0,    0,   31,    0,   82,    0,    0,    0,
    0,    0,  208,  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,  233,   72,    0,  137,    0,    0,    0,    0,
  271,    0,  284,    0,    0,    0,    0,  293,    0,  295,
    0,  291,    0,  112,    0,  118,    0,  116,  114,    0,
  110,   91,    0,    0,    0,    0,  205,   33,   84,    0,
    0,  121,    0,    0,  125,    0,    0,  104,    0,   24,
    0,    0,    0,  242,   93,   97,    0,    0,    0,  172,
    0,    0,    0,    0,    0,    0,    0,    0,  115,    0,
    0,    0,  211,    0,  200,  227,    0,    0,  132,  130,
   28,   26,  185,   49,   69,   96,   95,  138,  173,  286,
  299,  300,  298,    0,  117,  108,   88,    0,    0,    0,
  217,
};
short yydgoto[] = {                                       1,
    4,  308,  185,  276,  271,   62,   63,   64,   65,  405,
  222,  341,   66,  258,  135,   93,  290,  291,  445,  357,
  358,  294,  295,  241,  198,  301,  474,  272,  277,  278,
  253,  151,  303,   67,  190,  223,  279,  225,  360,  169,
  217,  468,  438,  439,  243,  227,  228,  172,   68,  126,
  186,  187,  305,    5,   69,   70,   71,   94,   95,  321,
  414,  415,   72,   73,   74,   75,   76,   77,  127,   97,
  315,  133,  429,  287,  192,  350,  195,  393,  200,   99,
  193,  472,  442,  351,  128,  316,  386,  469,  387,  309,
  209,  210,  406,  211,  407,  148,   78,   79,   80,   81,
   82,   83,   84,  173,   85,   86,  179,   87,   88,   89,
  219,   90,  260,  261,
};
short yysindex[] = {                                      0,
    5,    0,    0,  978,   18,    0,   89,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   22,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  169,    0,    0,    0,    0,    0,    0,
    0,   -4,   -7,    0,   98,    0,  128,   93,    0,    0,
    0,  112,  164,  171,  186,  196,  203,    0, 1649,   22,
    0,    0,    0, 1435,  226, 1562,  226,  223,    0,    0,
    0,    0,    0,  314,   22,   22,  169,    0,    0,  186,
    0,  247,    0,    0,    0,    0,  259,  260,   22,   22,
  346,   22,  283,  285,  294,    0,   22,  304, 1572,   22,
    0, 1298,  370,    0,    0,    0,  307,    0,   22,    0,
    0,    0,   22,    0,    0,   22,    0, 1298,  721,   22,
  -34,   22,   22,  260,    0,    0,   22,    0,    0,    0,
  322,  329,    0,    0,    0,    0,    0,    0,    0,    0,
    0, 1424,    0,    0,    0,    0, 1586,    0,  471,    0,
    0,    0,    0, 1424,    0,    0,    0,  129,  332, 1327,
 1327,    0,    0,    0,  363,    0,    0,    0,  372,    0,
   22,  118,    0,   27,  346, 1298,  175,    0,   22,    0,
    0,  259,    0,    0,  186,  346, 1298, 1298,    0,  393,
 1037,    0,   22, 1586,    0,  471,    0,  414,    0, 1298,
 1298, 1298,    0, 1812,    0,    0,    0,    0,  361,  169,
  259,    0,   22,    0, 1384,  372,    0,    0,    0,  346,
    4, 1812,    0,    0,  186,    0,    0,    0,    0,    0,
  383, 1298,    0, 1298,    0,    0,    0, 1190, 1244,  166,
    0,  406, 1586, 1586, 1586, 1586, 1586, 1300,  146,  146,
    0,  416,    0,  146, 1327,  424,    0,  425, 1812,  430,
    0,    0,    0,    0,   22,    0,    0,    0,  118,    0,
  116,    0,  418,    0,    0,  423,    0, 1643,    0,    0,
  185,    0,    0,    0,  201,    0,  437,    0,  250, 1665,
 1687,  499,    0,  444,  268,    0, 1329,    0,    0,    9,
    0, 1709,  445,  620,  442, 1298, 1298, 1298, 1298, 1298,
 1298, 1298, 1298,    0,    0,    0,    0,    0,    0, 1298,
 1298,    0,    0,    0,  259,    0, 1241, 1812,   -7,  107,
 1596,    0,    0, 1276,   22,   22,  456,  463, 1812,  457,
 1812,    0,    0, 1812,    0,    0, 1424,  406,  406,  406,
  289,  396,    0,  464,  416,  146,  416,  465,  467, 1731,
  469, 1327, 1327, 1327,    0,  269, 1287,  480,  118,    0,
 1298, 1298,  186,  479,    0,   59,    0,   22,  346,  186,
  346,  346,    0,    0,  478,  276,    0, 1298,    0,   22,
    0,  492,    0,  286,    0,    0, 1298,  442,  442,  442,
  356,  620,  783, 1001, 1001,  402,  509,    0,  372,  487,
    0,    0, 1596,    0, 1298, 1470,    0,  494,    0,    0,
    0,    0,    0,    0,  508,    0,  513, 1298, 1298,  471,
    0,  146,    0, 1327, 1327,    0, 1327,    0,    0,    0,
    0,    0,    0,    0, 1287,    0, 1795,    0,    0,  118,
    0,    0, 1753,  518, 1812,   27,    0,    0,    0,  305,
 1298,    0,  520,  499,    0,  499, 1812,    0,  595,    0,
  596,  536,   -7,    0,    0,    0, 1596,   22, 1298,    0,
 1812,  537,  539,  -14,  542,  544,  555,  536,    0, 1287,
  571,  151,    0, 1298,    0,    0, 1812,  346,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0, 1812,    0,    0,    0, 1812,  575,  346,
    0,
};
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,  653,    0,    0,    0,    0,    0,    0,
    0,  370,  415,    0,  655,    0,  658,   38,    0,    0,
    0,  662,  663,  672,  172,  679,  688,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  691,    0,    0,
    0,    0,    0,    0,  693,    0,    0,    0,    0,   28,
    0,    0,    0,    0,    0,    0,  695,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,
    0,  696,    0,    0,    0,    0,  697,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  696,    0,  168,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  556,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  392,
    0,    0,    0,    0,    0,    0,  187,  698,  706,  707,
    0,    0,    0,    0,    0,    0,    0,    0,   44,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  695,    0,    0,  101,    0,    0,    0,    0,   25,
    0,    0,    0,    0,    0,   85,    0,  708,    0,    0,
    0,    0,    0,   97,    0,    0,    0,    0,    0,    0,
  695,    0,    0,    0,    0,   17,    0,    0,    0,    0,
    0,  311,    0,    0,  370,    0,    0,    0,    0,    0,
    0,  232,    0,    0,    0,    0,    0,    0,  639,    0,
    0,  434,    0,    0,    0,    0,    0,  639,    0,    0,
    0,  717,    0,    0,    0,  718,    0,  719,    0, 1149,
 1038,    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, 1775,   92,  763,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  695,    0,    0,   34,   32,    0,
    0,    0,    0,    0,    0,    0,    0,  646,  210,    0,
  724,    0,    0,  316,  234,    0,    0,  543,  664,  680,
  137,  136,    0,    0,  736,    0,  737,    0,    0,    0,
 1775,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   41,    0,    0,    0,    0,    0,    0, 1413,
    0,    0,    0,    0,  337,    0,    0,    0,    0,    0,
    0,  342,    0,    0,    0,    0,    0,  846,  869,  892,
  583,  288,  344,  261,  447,  486,  692,    0,   17,    0,
    0,    0,    0,    0,    0,    0,    0,  -22,    0,    0,
    0,    0,    0,    0,   51,    0,  740,    0,  647,  349,
    0,    0,    0,    0,    0, 1060,    0,    0, 1079,    0,
 1098,    0, 1127,    0,    0,    0,  367,    0,    0,    0,
    0,    0,    0,   69,   70,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  385,    0,    0,    0,
    0, 1829,   32,    0,    0,    0,    0,    0,  666,    0,
  387,    0,    0, 1536,    0,    0,    0,  816,    0,    0,
    0,    0,    0,    0,    0,    0,  747,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  367,    0,    0,    0,   71,    0,    0,
    0,
};
short yygindex[] = {                                      0,
    0, -110,    0, -231, -333,  540,    0,    0,    0,  266,
   31,    0,    0,    0, -332,    0, -342,  468,    0,    0,
    0, -227,  277,    0, -181,    0,    0,    8,  578,  477,
  321,  -29,  375,    0, -137,  421,  275, -151, -118, -109,
  227,  262, -408,  278,  419, -174,  -27,    0,    0,  -65,
  -20,  656,    0,    0,    0,    0,    0, 1500,  -11,    0,
    0,  291,    0,    0,    0,    0,    0,    0,    0,  -15,
    0,  -63,    0, -234,  649,  315,  659, -335,  648,    0,
  638,    0,  357,    0,  564,  388,    0,  334,    0,  401,
  660,    0,    0,    0,  318,    0,  726,    0,    0,    0,
    0,    0,    0,  452,    0,    0,    0,    0,    0,    0,
 -119,    0,    0,  441,
};
#define YYTABLESIZE 1925
short yytable[] = {                                     106,
  204,  349,  244,  226,  141,  281,  281,    3,  107,  216,
  232,  145,  431,   21,  108,  109,  432,  111,   91,  238,
  306,  110,  412,  116,  125,  126,  117,  496,  280,  280,
  118,  191,   67,  241,  242,  105,  194,  120,   38,  131,
  105,  229,  453,  378,  111,  129,  471,  242,  123,  344,
  124,  136,  259,  288,  229,   96,  171,  262,  171,  252,
   96,  392,  283,  284,  268,  106,  188,  189,  323,  209,
  238,  239,  105,  132,  134,  245,   96,  242,  353,  201,
  106,  354,  205,  413,  297,  301,   21,  212,  526,  202,
  106,  171,  159,   92,  111,  318,  319,  175,  111,  106,
  281,  226,  126,  234,  317,  159,  236,  242,  231,   67,
  189,  242,  246,  247,  167,  111,  167,  251,  453,  233,
  229,  111,  229,  381,  293,  229,  111,  471,  111,  352,
   67,  105,  242,  136,  171,  159,  193,  198,  229,  171,
  300,  307,  105,  209,  238,  239,  171,  238,  239,  167,
  458,  460,  462,  368,  369,  370,  371,  372,  525,  105,
  524,  189,  301,  428,  296,  159,  159,  302,  159,  159,
  140,  175,   42,  175,  229,  136,  440,  159,  159,  159,
  159,  355,  105,  314,  433,  229,  171,  266,  105,  142,
  159,  289,  167,  389,  493,  323,  137,  167,  390,  267,
  125,  139,  269,  106,  167,  434,  270,  281,  281,  281,
  193,  198,  345,  193,  198,  193,  193,  444,  346,  269,
  193,  198,  458,  460,  503,  462,  505,  506,  433,  507,
  459,  461,  463,  537,  268,  171,  171,  171,  171,  171,
  366,  143,  511,  367,  167,  229,  267,  268,  144,  299,
  230,  123,  230,  124,  340,  385,  300,  450,  440,  395,
    2,  156,  396,  132,  266,  492,  189,  189,  189,  189,
  189,  189,  340,  146,  156,  397,  374,  375,  398,  281,
  281,  377,  281,  323,  142,  147,  175,  142,  158,  267,
  482,  483,  267,  167,  167,  167,  167,  167,  267,  174,
  181,  158,  459,  461,  156,  508,  140,  268,  174,  340,
  170,  268,  177,  190,  190,  190,  190,  190,  190,  184,
  196,  437,  440,  441,  400,  189,  446,  401,  340,  476,
  502,  158,  197,  199,  156,  156,  481,  156,  156,  171,
  340,  340,  409,  464,  157,  410,  465,  267,  156,  156,
  485,  203,  340,  486,  340,  340,  206,  157,  207,  156,
  490,  158,  158,  491,  158,  158,  302,  208,  163,  164,
  263,  264,  265,  158,  158,  158,  158,  213,  340,  516,
  314,  436,  401,  229,  230,  234,  158,  157,  234,  340,
  275,  340,  245,  275,  340,  252,  224,  167,  267,  267,
  267,  267,  267,  437,  254,  441,  437,  539,  441,  274,
  340,  131,  224,  242,  131,   67,   27,  157,  157,   27,
  157,  157,  504,  272,  504,  504,  272,  504,   67,  541,
  157,  157,  157,  285,  197,  163,  164,  326,  327,  328,
  504,  119,  157,  342,  119,  286,  296,  155,  340,  340,
  340,  340,  340,  340,  340,  340,  340,  340,   67,  105,
  155,  143,  105,  436,  143,  356,  312,  437,  528,  441,
  298,  189,  189,  189,  189,  189,  189,  263,  264,  265,
  267,  310,  311,  326,  327,  328,  149,  320,   67,  265,
  155,  391,   67,  376,  322,  324,  325,  340,  392,  149,
  152,  382,  383,  340,  168,  340,  168,  384,  197,  348,
  399,  197,  404,  197,  197,  197,  197,  340,  197,  408,
  155,  155,  417,  155,  155,  328,  359,  436,  361,  149,
  447,  340,  364,  449,  155,  155,  175,  178,  180,  168,
  448,  452,  454,  194,  455,  155,  457,  340,  477,  380,
  163,  164,  263,  264,  265,  266,  169,  470,  484,  149,
  149,  494,  149,  149,  340,  149,  149,  489,  340,  169,
  149,  149,  149,  149,  149,  497,  149,  149,  149,  149,
  149,  149,  168,  160,  149,  498,  499,  168,  163,  164,
  326,  327,  328,  329,  168,  514,  160,  518,  273,  169,
  418,  419,  420,  421,  422,  423,  424,  425,  521,  412,
  523,  529,  292,  530,  426,  427,  531,  194,  532,  304,
  194,  322,  194,  194,  194,  194,  160,  194,  242,  533,
  169,  169,  169,  169,  168,  169,  169,  169,  169,  169,
  169,  169,  169,  169,  169,  536,  169,  169,  169,  169,
  169,  169,  540,   45,  169,   37,  160,  160,  218,  160,
  160,  467,   39,   40,  195,  473,  475,  160,  160,  160,
  160,  160,   41,  160,  160,  160,  160,  160,  160,   43,
  196,  160,  487,  168,  168,  168,  168,  168,   44,  273,
  273,  256,  154,   21,  273,   29,  174,   46,  249,  163,
  164,  326,  327,  328,  329,  154,  250,  254,   11,  292,
  334,  335,  336,  337,  338,  339,  272,  251,  288,  289,
  141,  174,  501,  224,  212,  153,  154,  155,  156,  157,
  158,  159,  160,  161,  105,  154,  253,  252,  195,  467,
  171,  195,  174,  195,  195,  195,  195,  228,  195,  519,
  313,  379,  515,  171,  196,  517,  388,  196,  282,  196,
  196,  196,  196,  153,  196,  154,  154,  500,  154,  154,
  478,  535,  443,  224,  527,  218,  153,  154,  154,  154,
  154,  522,  249,  171,  534,  237,  512,  168,  538,  495,
  154,  248,  235,  343,  220,  239,  273,  488,  509,  480,
  163,  164,  240,  520,  150,  250,  153,  451,    0,  292,
  221,    0,    0,    0,  171,  171,  171,  171,  479,  171,
  171,  171,  171,  171,  171,  171,  171,  171,  171,    0,
  171,  171,  171,  171,  171,  171,  153,  153,  171,  153,
  153,    0,  153,  153,  153,  153,  150,  153,  153,  153,
  153,  153,    0,  153,  153,  153,  153,  153,  153,  150,
    0,  153,  163,  164,  326,  327,  328,  329,  330,  151,
    0,    0,  273,  334,  335,  336,  337,  338,  339,    0,
    0,    0,  151,    0,    0,    0,    0,    0,    0,  150,
  292,    0,  152,  290,    0,  144,  144,  144,  144,  144,
  144,  144,  144,  144,  144,  152,  144,  144,  144,  144,
  144,  144,  151,    0,    0,    0,    0,    0,    0,  150,
  150,    0,  150,  150,    0,  150,  150,  150,  150,    0,
  150,  150,  150,  150,  150,  152,  150,  150,  150,  150,
  150,  150,  151,  151,  150,  151,  151,    0,  151,  151,
  151,  151,    0,  151,  151,  151,  151,  151,    0,  151,
  151,  151,  151,  151,  151,  152,  152,  151,  152,  152,
    0,  152,  152,  152,  152,    0,  152,  152,  152,  152,
  152,    6,  152,  152,  152,  152,  152,  152,    0,    0,
  152,    0,    0,    0,    0,    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,  296,   50,
   51,   52,   53,   54,   55,   56,   57,    0,    0,   58,
   59,    0,    0,    0,    0,    0,    0,   10,    0,    0,
  297,   14,    0,    0,   17,    0,    0,   20,   21,    0,
   23,    0,    0,    0,   60,    0,    0,   61,    0,  292,
  163,  164,  326,  327,  328,  329,  330,  331,   41,    0,
   43,  334,  335,  336,  337,  338,  339,    0,  294,   51,
    0,    0,    0,   55,    0,    0,    0,    0,   58,    0,
    0,    0,  146,    0,    0,  296,    0,  146,  146,  146,
  146,  146,  146,  146,  146,  146,  146,  290,  146,  146,
  146,  146,  146,  146,  145,    0,   61,  297,    0,  145,
  145,  145,  145,  145,  145,  145,  145,  145,  145,  287,
  145,  145,  145,  145,  145,  145,  292,    0,  144,  144,
  144,  144,  144,  144,  144,  144,  144,  144,    0,  144,
  144,  144,  144,  144,  144,  294,    0,  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,  290,    0,  144,  144,  144,  144,
  144,  144,  144,  144,  144,  144,    0,  144,  144,  144,
  144,  144,  144,    0,    0,    0,    0,    0,  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,    0,    0,    0,    0,
    0,    0,    0,  220,    0,    0,    0,    0,    0,  163,
  164,  362,    0,  363,    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,  153,  154,  155,  156,  157,  158,  159,  160,
  161,  105,    0,    0,  220,    0,    0,    0,  365,    0,
  163,  164,  430,  163,  164,  263,  264,  265,  266,    0,
  221,  153,  154,  155,  156,  157,  158,  159,  160,  161,
  105,    0,    0,    0,    0,    0,    0,    0,    0,  220,
    0,    0,    0,    0,    0,  163,  164,  240,    0,    0,
  220,    0,    0,    0,    0,  221,  163,  164,  466,    0,
    0,  220,    0,    0,  373,    0,  221,  163,  164,  163,
  164,  263,  264,  265,  266,    0,    0,  221,  153,  154,
  155,  156,  157,  158,  159,  160,  161,  105,    0,    0,
  275,    0,    0,  411,    0,    0,  163,  164,  163,  164,
  263,  264,  265,  266,    0,    0,  221,  229,  229,  229,
  229,  229,  229,  229,  229,  229,  229,    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,  347,    0,    0,
    0,    0,    0,  163,  164,    0,    0,    0,    0,    0,
    0,    0,    0,  221,  153,  154,  155,  156,  157,  158,
  159,  160,  161,  105,    0,    0,  229,    0,    0,    0,
    0,    0,  229,  229,    0,    0,    0,  214,    0,    0,
    0,    0,  229,  163,  164,  256,    0,  257,  162,    0,
    0,    0,   96,    0,  163,  164,  165,   98,  166,    0,
    0,  100,    0,  101,  102,  103,    0,  104,    0,    0,
    0,    0,    0,  111,  112,  113,  114,  115,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  119,    0,  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,  153,  154,  155,  156,
  157,  158,  159,  160,  161,  105,    0,    0,  182,  183,
  153,  154,  155,  156,  157,  158,  159,  160,  161,  105,
  153,  154,  155,  156,  157,  158,  159,  160,  161,  105,
  169,    0,    0,  169,    0,  169,  169,  169,  169,  169,
  169,  169,  169,  169,  169,    0,  169,  169,  169,  169,
  169,  169,    0,    0,    0,  162,    0,    0,    0,    0,
    0,  163,  164,  176,    0,  214,    0,    0,    0,    0,
    0,  163,  164,  215,    0,    0,    0,    0,    0,  214,
    0,    0,    0,    0,    0,  163,  164,    8,    9,  435,
   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,  394,  149,    0,
    0,   59,  163,  164,  326,  327,  328,  329,  330,  331,
  332,  333,    0,  334,  335,  336,  337,  338,  339,  402,
    0,    0,    0,    0,  163,  164,  326,  327,  328,  329,
  330,  331,  332,  333,    0,  334,  335,  336,  337,  338,
  339,  403,    0,    0,    0,    0,  163,  164,  326,  327,
  328,  329,  330,  331,  332,  333,    0,  334,  335,  336,
  337,  338,  339,  416,    0,    0,    0,    0,  163,  164,
  326,  327,  328,  329,  330,  331,  332,  333,    0,  334,
  335,  336,  337,  338,  339,  456,    0,    0,    0,    0,
  163,  164,  326,  327,  328,  329,  330,  331,  332,  333,
    0,  334,  335,  336,  337,  338,  339,  513,    0,    0,
    0,    0,  163,  164,  326,  327,  328,  329,  330,  331,
  332,  333,    0,  334,  335,  336,  337,  338,  339,  144,
    0,    0,    0,    0,  144,  144,  144,  144,  144,  144,
  144,  144,  144,  144,    0,  144,  144,  144,  144,  144,
  144,  510,    0,    0,  163,  164,  326,  327,  328,  329,
  330,  331,  332,  333,    0,  334,  335,  336,  337,  338,
  339,  163,  164,  326,  327,  328,  329,  330,  331,  332,
  333,    0,  334,  335,  336,  337,  338,  339,  144,  144,
  144,  144,  144,  144,  144,  144,  144,  144,    0,  144,
  144,  144,  144,  144,  144,
};
short yycheck[] = {                                      29,
  111,  236,  140,  122,   68,  180,  181,    3,   29,  119,
  130,   75,  348,    1,   30,   31,  349,    1,    1,  138,
  202,   33,   14,   39,   54,    1,   42,  436,  180,  181,
   46,   97,    1,    6,    1,   14,  100,   49,    1,   44,
   14,   14,  376,  275,    1,   57,  389,   14,   83,  231,
   85,    1,  162,  191,   14,   78,   84,  167,   86,   74,
   83,   76,  182,  183,  174,   95,   96,   97,  220,    1,
    1,    1,   14,   78,   82,  141,   99,   44,   75,  109,
  110,   78,  112,   75,  195,    1,   74,  117,  497,  110,
  120,  119,    1,    5,   78,  215,  216,    1,   82,  129,
  275,    1,   78,  133,  214,   14,  136,   74,  129,   78,
  140,   78,  142,  143,   84,   99,   86,  147,  452,  131,
   83,   78,   85,  275,   98,   98,   83,  470,   85,  240,
   99,   14,   99,   83,  162,   44,    1,    1,   98,  167,
   82,  205,   14,   75,   75,   75,  174,   78,   78,  119,
  382,  383,  384,  263,  264,  265,  266,  267,  494,   14,
  493,  191,   78,  345,  194,   74,   75,  197,   77,   78,
   78,   75,    1,   77,   74,   78,  351,   86,   87,   88,
   89,  245,   14,  213,   78,   14,  214,    1,   14,   78,
   99,   74,  162,   78,  429,  347,   99,  167,   83,  169,
  230,   74,   74,  233,  174,   99,   78,  382,  383,  384,
   75,   75,  233,   78,   78,   80,   81,  355,  234,   74,
   85,   85,  454,  455,  452,  457,  454,  455,   78,  457,
  382,  383,  384,   83,    1,  263,  264,  265,  266,  267,
   75,   78,  470,   78,  214,   74,  216,   14,   78,   75,
   83,   83,   85,   85,  224,  285,   82,  367,  433,   75,
  256,    1,   78,   78,   78,  417,   80,   81,   82,   83,
   84,   85,  242,   78,   14,   75,  269,  270,   78,  454,
  455,  274,  457,  435,   75,   83,   77,   78,    1,  259,
  401,  402,  262,  263,  264,  265,  266,  267,  268,   74,
   78,   14,  454,  455,   44,  457,   75,   74,   77,  279,
   84,   78,   86,   80,   81,   82,   83,   84,   85,    6,
   74,  351,  497,  351,   75,  355,  356,   78,  298,  393,
  449,   44,   74,   74,   74,   75,  400,   77,   78,  367,
  310,  311,   75,   75,    1,   78,   78,  317,   88,   89,
   75,    6,  322,   78,  324,  325,   74,   14,   74,   99,
   75,   74,   75,   78,   77,   78,  396,   74,   80,   81,
   82,   83,   84,   86,   87,   88,   89,   74,  348,   75,
  410,  351,   78,   14,   78,   75,   99,   44,   78,  359,
   75,  361,    1,   78,  364,   74,  122,  367,  368,  369,
  370,  371,  372,  433,   76,  433,  436,  518,  436,   78,
  380,   75,  138,  139,   78,    1,   75,   74,   75,   78,
   77,   78,  452,   75,  454,  455,   78,  457,   14,  540,
   87,   88,   89,   71,    1,   80,   81,   82,   83,   84,
  470,   75,   99,   83,   78,   74,  476,    1,  418,  419,
  420,  421,  422,  423,  424,  425,  426,  427,   44,   75,
   14,   75,   78,  433,   78,   83,   74,  497,  498,  497,
  196,   80,   81,   82,   83,   84,   85,   82,   83,   84,
  450,  207,  208,   82,   83,   84,    1,   74,   74,   84,
   44,   74,   78,   78,  220,  221,  222,  467,   76,   14,
   80,   78,   78,  473,   84,  475,   86,   78,   75,  235,
   74,   78,   14,   80,   81,   82,   83,  487,   85,   76,
   74,   75,   78,   77,   78,   84,  252,  497,  254,   44,
   75,  501,  258,   77,   88,   89,   85,   86,   87,  119,
   78,   78,   78,    1,   78,   99,   78,  517,   70,  275,
   80,   81,   82,   83,   84,   85,    1,   78,   81,   74,
   75,   75,   77,   78,  534,   80,   81,   76,  538,   14,
   85,   86,   87,   88,   89,   82,   91,   92,   93,   94,
   95,   96,  162,    1,   99,   78,   74,  167,   80,   81,
   82,   83,   84,   85,  174,   78,   14,   78,  178,   44,
  326,  327,  328,  329,  330,  331,  332,  333,   14,   14,
   75,   75,  192,   75,  340,  341,   75,   75,   75,  199,
   78,  347,   80,   81,   82,   83,   44,   85,  354,   75,
   75,   76,   77,   78,  214,   80,   81,   82,   83,   84,
   85,   86,   87,   88,   89,   75,   91,   92,   93,   94,
   95,   96,   78,    1,   99,    1,   74,   75,    1,   77,
   78,  387,    1,    1,    1,  391,  392,   85,   86,   87,
   88,   89,    1,   91,   92,   93,   94,   95,   96,    1,
    1,   99,  408,  263,  264,  265,  266,  267,    1,  269,
  270,    1,    1,    1,  274,    1,    1,    1,    1,   80,
   81,   82,   83,   84,   85,   14,    1,    1,    1,  289,
   91,   92,   93,   94,   95,   96,   78,    1,    1,    1,
   75,   75,  448,  449,    1,    5,    6,    7,    8,    9,
   10,   11,   12,   13,   14,   44,    1,    1,   75,  465,
    1,   78,   77,   80,   81,   82,   83,    1,   85,  484,
  211,  275,  476,   14,   75,  481,  289,   78,  181,   80,
   81,   82,   83,    1,   85,   74,   75,  447,   77,   78,
  396,  510,  354,  499,  497,  120,   14,   86,   87,   88,
   89,  491,  145,   44,  510,  137,  472,  367,  514,  433,
   99,  144,  134,  230,   74,   75,  376,  410,  465,  399,
   80,   81,   82,  486,   79,  146,   44,  367,   -1,  389,
   90,   -1,   -1,   -1,   75,   76,   77,   78,  398,   80,
   81,   82,   83,   84,   85,   86,   87,   88,   89,   -1,
   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,   14,
   -1,   99,   80,   81,   82,   83,   84,   85,   86,    1,
   -1,   -1,  452,   91,   92,   93,   94,   95,   96,   -1,
   -1,   -1,   14,   -1,   -1,   -1,   -1,   -1,   -1,   44,
  470,   -1,    1,   78,   -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,   82,   83,   -1,   85,   86,   87,   88,
   89,    4,   91,   92,   93,   94,   95,   96,   -1,   -1,
   99,   -1,   -1,   -1,   -1,   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,   -1,   72,
   73,   -1,   -1,   -1,   -1,   -1,   -1,   21,   -1,   -1,
    1,   25,   -1,   -1,   28,   -1,   -1,   31,   32,   -1,
   34,   -1,   -1,   -1,   97,   -1,   -1,  100,   -1,    1,
   80,   81,   82,   83,   84,   85,   86,   87,   52,   -1,
   54,   91,   92,   93,   94,   95,   96,   -1,    1,   63,
   -1,   -1,   -1,   67,   -1,   -1,   -1,   -1,   72,   -1,
   -1,   -1,   75,   -1,   -1,   78,   -1,   80,   81,   82,
   83,   84,   85,   86,   87,   88,   89,    1,   91,   92,
   93,   94,   95,   96,   75,   -1,  100,   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,   78,   -1,   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,   78,   -1,   80,   81,   82,   83,
   84,   85,   86,   87,   88,   89,   -1,   91,   92,   93,
   94,   95,   96,   -1,   -1,   -1,   -1,   -1,   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,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,   -1,   80,
   81,   82,   -1,   84,   -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,   -1,   74,   -1,   -1,   -1,   75,   -1,
   80,   81,   82,   80,   81,   82,   83,   84,   85,   -1,
   90,    5,    6,    7,    8,    9,   10,   11,   12,   13,
   14,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   74,
   -1,   -1,   -1,   -1,   -1,   80,   81,   82,   -1,   -1,
   74,   -1,   -1,   -1,   -1,   90,   80,   81,   82,   -1,
   -1,   74,   -1,   -1,   75,   -1,   90,   80,   81,   80,
   81,   82,   83,   84,   85,   -1,   -1,   90,    5,    6,
    7,    8,    9,   10,   11,   12,   13,   14,   -1,   -1,
   74,   -1,   -1,   75,   -1,   -1,   80,   81,   80,   81,
   82,   83,   84,   85,   -1,   -1,   90,    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,   74,   -1,   -1,
   -1,   -1,   -1,   80,   81,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   90,    5,    6,    7,    8,    9,   10,
   11,   12,   13,   14,   -1,   -1,   74,   -1,   -1,   -1,
   -1,   -1,   80,   81,   -1,   -1,   -1,   74,   -1,   -1,
   -1,   -1,   90,   80,   81,   82,   -1,   84,   74,   -1,
   -1,   -1,   13,   -1,   80,   81,   82,   18,   84,   -1,
   -1,   22,   -1,   24,   25,   26,   -1,   28,   -1,   -1,
   -1,   -1,   -1,   34,   35,   36,   37,   38,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   48,   -1,   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,    5,    6,    7,    8,
    9,   10,   11,   12,   13,   14,   -1,   -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,   78,   -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,   74,   -1,   -1,   -1,   -1,
   -1,   80,   81,   82,   -1,   -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,   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,   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,   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,
};
#define YYFINAL 1
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 100
#if YYDEBUG
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",
};
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 intonlyon label intonlyoff opt_comma dospecw",
"exec : SDO end_spec opt_comma dospecw",
"exec : SENDDO",
"exec : logif iffable",
"exec : logif STHEN",
"exec : SELSEIF end_spec SLPAR expr SRPAR STHEN",
"exec : SELSE end_spec",
"exec : SENDIF end_spec",
"logif : SLOGIF end_spec SLPAR expr SRPAR",
"dospec : name SEQUALS exprlist",
"dospecw : dospec",
"dospecw : SWHILE 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 : 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
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
int yyparse __P((void));
static int yygrowstack __P((void));
static int yygrowstack()
{
    int newsize, i;
    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;
    if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
        return -1;
    yyss = newss;
    yyssp = newss + i;
    if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
        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()
{
    int yym, yyn, yystate;
#if YYDEBUG
    char *yys;

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

    yynerrs = 0;
    yyerrflag = 0;
    yychar = (-1);

    if (yyss == NULL && yygrowstack()) goto yyoverflow;
    yyssp = yyss;
    yyvsp = yyvs;
    *yyssp = yystate = 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())
        {
            goto yyoverflow;
        }
        *++yyssp = yystate = yytable[yyn];
        *++yyvsp = yylval;
        yychar = (-1);
        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;
    goto yynewerror;
yynewerror:
    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())
                {
                    goto yyoverflow;
                }
                *++yyssp = yystate = 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 = (-1);
        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];
    yyval = yyvsp[1-yym];
    switch (yyn)
    {
case 3:
#line 219 "gram.in"
{
/* stat:   is the nonterminal for Fortran statements */

		  lastwasbranch = NO; }
break;
case 5:
#line 225 "gram.in"
{ /* 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 245 "gram.in"
{ if (can_include)
			doinclude( yyvsp[0].charpval );
		  else {
			fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval);
			done(1);
			}
		}
break;
case 7:
#line 253 "gram.in"
{ if (yyvsp[-2].labval)
			lastwasbranch = NO;
		  endproc(); /* lastwasbranch = NO; -- set in endproc() */
		}
break;
case 8:
#line 258 "gram.in"
{ unclassifiable();

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

		  flline(); }
break;
case 9:
#line 264 "gram.in"
{ flline();  needkwd = NO;  inioctl = NO;
		  yyerrok; yyclearin; }
break;
case 10:
#line 269 "gram.in"
{
		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 297 "gram.in"
{startproc(yyvsp[0].extval, CLMAIN); }
break;
case 12:
#line 299 "gram.in"
{	warn("ignoring arguments to main program");
			/* hashclear(); */
			startproc(yyvsp[-1].extval, CLMAIN); }
break;
case 13:
#line 303 "gram.in"
{ if(yyvsp[0].extval) NO66("named BLOCKDATA");
		  startproc(yyvsp[0].extval, CLBLOCK); }
break;
case 14:
#line 306 "gram.in"
{ entrypt(CLPROC, TYSUBR, (ftnint) 0,  yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 15:
#line 308 "gram.in"
{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 16:
#line 310 "gram.in"
{ entrypt(CLPROC, yyvsp[-4].ival, varleng, yyvsp[-1].extval, yyvsp[0].chval); }
break;
case 17:
#line 312 "gram.in"
{ 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 320 "gram.in"
{ newproc(); }
break;
case 19:
#line 324 "gram.in"
{ yyval.extval = newentry(yyvsp[0].namval, 1); }
break;
case 20:
#line 328 "gram.in"
{ yyval.namval = mkname(token); }
break;
case 21:
#line 331 "gram.in"
{ yyval.extval = NULL; }
break;
case 29:
#line 349 "gram.in"
{ yyval.chval = 0; }
break;
case 30:
#line 351 "gram.in"
{ NO66(" () argument list");
		  yyval.chval = 0; }
break;
case 31:
#line 354 "gram.in"
{yyval.chval = yyvsp[-1].chval; }
break;
case 32:
#line 358 "gram.in"
{ yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval,CHNULL) : CHNULL ); }
break;
case 33:
#line 360 "gram.in"
{ if(yyvsp[0].namval) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval, yyvsp[-2].chval); }
break;
case 34:
#line 364 "gram.in"
{ 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 369 "gram.in"
{ NO66("alternate 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 385 "gram.in"
{
		char *s;
		s = copyn(toklen+1, token);
		s[toklen] = '\0';
		yyval.charpval = s;
		}
break;
case 45:
#line 401 "gram.in"
{ NO66("SAVE statement");
		  saveall = YES; }
break;
case 46:
#line 404 "gram.in"
{ NO66("SAVE statement"); }
break;
case 47:
#line 406 "gram.in"
{ fmtstmt(thislabel); setfmt(thislabel); }
break;
case 48:
#line 408 "gram.in"
{ NO66("PARAMETER statement"); }
break;
case 49:
#line 412 "gram.in"
{ settype(yyvsp[-4].namval, yyvsp[-6].ival, yyvsp[0].lval);
		  if(ndim>0) setbound(yyvsp[-4].namval,ndim,dims);
		}
break;
case 50:
#line 416 "gram.in"
{ settype(yyvsp[-2].namval, yyvsp[-4].ival, yyvsp[0].lval);
		  if(ndim>0) setbound(yyvsp[-2].namval,ndim,dims);
		}
break;
case 51:
#line 420 "gram.in"
{ if (new_dcl == 2) {
			err("attempt to give DATA in type-declaration");
			new_dcl = 1;
			}
		}
break;
case 52:
#line 427 "gram.in"
{ new_dcl = 2; }
break;
case 53:
#line 430 "gram.in"
{ varleng = yyvsp[0].lval; }
break;
case 54:
#line 434 "gram.in"
{ 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 439 "gram.in"
{ yyval.ival = TYLONG; }
break;
case 56:
#line 440 "gram.in"
{ yyval.ival = tyreal; }
break;
case 57:
#line 441 "gram.in"
{ ++complex_seen; yyval.ival = tycomplex; }
break;
case 58:
#line 442 "gram.in"
{ yyval.ival = TYDREAL; }
break;
case 59:
#line 443 "gram.in"
{ ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; }
break;
case 60:
#line 444 "gram.in"
{ yyval.ival = TYLOGICAL; }
break;
case 61:
#line 445 "gram.in"
{ NO66("CHARACTER statement"); yyval.ival = TYCHAR; }
break;
case 62:
#line 446 "gram.in"
{ yyval.ival = TYUNKNOWN; }
break;
case 63:
#line 447 "gram.in"
{ yyval.ival = TYUNKNOWN; }
break;
case 64:
#line 448 "gram.in"
{ NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; }
break;
case 65:
#line 449 "gram.in"
{ NOEXT("STATIC statement"); yyval.ival = - STGBSS; }
break;
case 66:
#line 450 "gram.in"
{ yyval.ival = TYINT1; }
break;
case 67:
#line 454 "gram.in"
{ yyval.lval = varleng; }
break;
case 68:
#line 456 "gram.in"
{
		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 482 "gram.in"
{ NO66("length specification *(*)"); yyval.lval = -1; }
break;
case 70:
#line 486 "gram.in"
{ incomm( yyval.extval = comblock("") , yyvsp[0].namval ); }
break;
case 71:
#line 488 "gram.in"
{ yyval.extval = yyvsp[-1].extval;  incomm(yyvsp[-1].extval, yyvsp[0].namval); }
break;
case 72:
#line 490 "gram.in"
{ yyval.extval = yyvsp[-2].extval;  incomm(yyvsp[-2].extval, yyvsp[0].namval); }
break;
case 73:
#line 492 "gram.in"
{ incomm(yyvsp[-2].extval, yyvsp[0].namval); }
break;
case 74:
#line 496 "gram.in"
{ yyval.extval = comblock(""); }
break;
case 75:
#line 498 "gram.in"
{ yyval.extval = comblock(token); }
break;
case 76:
#line 502 "gram.in"
{ setext(yyvsp[0].namval); }
break;
case 77:
#line 504 "gram.in"
{ setext(yyvsp[0].namval); }
break;
case 78:
#line 508 "gram.in"
{ NO66("INTRINSIC statement"); setintr(yyvsp[0].namval); }
break;
case 79:
#line 510 "gram.in"
{ setintr(yyvsp[0].namval); }
break;
case 82:
#line 518 "gram.in"
{
		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 531 "gram.in"
{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
		}
break;
case 84:
#line 535 "gram.in"
{ yyval.eqvval=ALLOC(Eqvchain);
		  yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
		  yyval.eqvval->eqvnextp = yyvsp[-2].eqvval;
		}
break;
case 87:
#line 546 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}
		  if(parstate < INDATA)
			{
			enddcl();
			parstate = INDATA;
			datagripe = 1;
			}
		}
break;
case 88:
#line 561 "gram.in"
{ ftnint junk;
		  if(nextdata(&junk) != NULL)
			err("too few initializers");
		  frdata(yyvsp[-4].chval);
		  frrpl();
		}
break;
case 89:
#line 569 "gram.in"
{ frchain(&datastack); curdtp = 0; }
break;
case 90:
#line 571 "gram.in"
{ pop_datastack(); }
break;
case 91:
#line 573 "gram.in"
{ toomanyinit = NO; }
break;
case 94:
#line 578 "gram.in"
{ dataval(ENULL, yyvsp[0].expval); }
break;
case 95:
#line 580 "gram.in"
{ dataval(yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 97:
#line 585 "gram.in"
{ if( yyvsp[-1].ival==OPMINUS && ISCONST(yyvsp[0].expval) )
			consnegop((Constp)yyvsp[0].expval);
		  yyval.expval = yyvsp[0].expval;
		}
break;
case 101:
#line 597 "gram.in"
{ 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 611 "gram.in"
{ 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 618 "gram.in"
{ if(ndim>0) setbound(yyvsp[-1].namval, ndim, dims); }
break;
case 107:
#line 622 "gram.in"
{ 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))
			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 655 "gram.in"
{ 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 671 "gram.in"
{ if (!datastack)
			curdtp = 0;
		  datastack = mkchain((char *)curdtp, datastack);
		  curdtp = yyvsp[0].chval; curdtelt = 0;
		  }
break;
case 110:
#line 677 "gram.in"
{ yyval.chval = hookup(yyvsp[-2].chval, yyvsp[0].chval); }
break;
case 111:
#line 681 "gram.in"
{ ndim = 0; }
break;
case 113:
#line 685 "gram.in"
{ ndim = 0; }
break;
case 116:
#line 690 "gram.in"
{
		  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 700 "gram.in"
{
		  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 712 "gram.in"
{ yyval.expval = 0; }
break;
case 120:
#line 717 "gram.in"
{ nstars = 1; labarray[0] = yyvsp[0].labval; }
break;
case 121:
#line 719 "gram.in"
{ if(nstars < maxlablist)  labarray[nstars++] = yyvsp[0].labval; }
break;
case 122:
#line 723 "gram.in"
{ yyval.labval = execlab( convci(toklen, token) ); }
break;
case 123:
#line 727 "gram.in"
{ NO66("IMPLICIT statement"); }
break;
case 126:
#line 733 "gram.in"
{ if (vartype != TYUNKNOWN)
			dclerr("-- expected letter range",NPNULL);
		  setimpl(vartype, varleng, 'a', 'z'); }
break;
case 127:
#line 738 "gram.in"
{ needkwd = 1; }
break;
case 131:
#line 747 "gram.in"
{ setimpl(vartype, varleng, yyvsp[0].ival, yyvsp[0].ival); }
break;
case 132:
#line 749 "gram.in"
{ setimpl(vartype, varleng, yyvsp[-2].ival, yyvsp[0].ival); }
break;
case 133:
#line 753 "gram.in"
{ 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 767 "gram.in"
{
		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 781 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].namval, CHNULL); }
break;
case 138:
#line 783 "gram.in"
{ yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].namval, CHNULL)); }
break;
case 139:
#line 787 "gram.in"
{ 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 809 "gram.in"
{ yyval.chval = 0; }
break;
case 141:
#line 811 "gram.in"
{ yyval.chval = revchain(yyvsp[0].chval); }
break;
case 142:
#line 815 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 143:
#line 817 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
break;
case 145:
#line 822 "gram.in"
{ yyval.expval = yyvsp[-1].expval; if (yyval.expval->tag == TPRIM)
					yyval.expval->primblock.parenused = 1; }
break;
case 149:
#line 830 "gram.in"
{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 150:
#line 832 "gram.in"
{ yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 151:
#line 834 "gram.in"
{ yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 152:
#line 836 "gram.in"
{ yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 153:
#line 838 "gram.in"
{ if(yyvsp[-1].ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
		  else 	yyval.expval = yyvsp[0].expval;
		}
break;
case 154:
#line 843 "gram.in"
{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 155:
#line 845 "gram.in"
{ NO66(".EQV. operator");
		  yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval,yyvsp[0].expval); }
break;
case 156:
#line 848 "gram.in"
{ NO66(".NEQV. operator");
		  yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 157:
#line 851 "gram.in"
{ yyval.expval = mkexpr(OPOR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 158:
#line 853 "gram.in"
{ yyval.expval = mkexpr(OPAND, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 159:
#line 855 "gram.in"
{ yyval.expval = mkexpr(OPNOT, yyvsp[0].expval, ENULL); }
break;
case 160:
#line 857 "gram.in"
{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 161:
#line 861 "gram.in"
{ yyval.ival = OPPLUS; }
break;
case 162:
#line 862 "gram.in"
{ yyval.ival = OPMINUS; }
break;
case 163:
#line 865 "gram.in"
{ yyval.ival = OPEQ; }
break;
case 164:
#line 866 "gram.in"
{ yyval.ival = OPGT; }
break;
case 165:
#line 867 "gram.in"
{ yyval.ival = OPLT; }
break;
case 166:
#line 868 "gram.in"
{ yyval.ival = OPGE; }
break;
case 167:
#line 869 "gram.in"
{ yyval.ival = OPLE; }
break;
case 168:
#line 870 "gram.in"
{ yyval.ival = OPNE; }
break;
case 169:
#line 874 "gram.in"
{ yyval.expval = mkprim(yyvsp[0].namval, LBNULL, CHNULL); }
break;
case 170:
#line 876 "gram.in"
{ NO66("substring operator :");
		  yyval.expval = mkprim(yyvsp[-1].namval, LBNULL, yyvsp[0].chval); }
break;
case 171:
#line 879 "gram.in"
{ yyval.expval = mkprim(yyvsp[-3].namval, mklist(yyvsp[-1].chval), CHNULL); }
break;
case 172:
#line 881 "gram.in"
{ NO66("substring operator :");
		  yyval.expval = mkprim(yyvsp[-4].namval, mklist(yyvsp[-2].chval), yyvsp[0].chval); }
break;
case 173:
#line 886 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[-3].expval, mkchain((char *)yyvsp[-1].expval,CHNULL)); }
break;
case 174:
#line 890 "gram.in"
{ yyval.expval = 0; }
break;
case 176:
#line 895 "gram.in"
{ if(yyvsp[0].namval->vclass == CLPARAM)
			yyval.expval = (expptr) cpexpr(
				( (struct Paramblock *) (yyvsp[0].namval) ) -> paramval);
		}
break;
case 178:
#line 902 "gram.in"
{ yyval.expval = mklogcon(1); }
break;
case 179:
#line 903 "gram.in"
{ yyval.expval = mklogcon(0); }
break;
case 180:
#line 904 "gram.in"
{ yyval.expval = mkstrcon(toklen, token); }
break;
case 181:
#line 905 "gram.in"
 { yyval.expval = mkintcon( convci(toklen, token) ); }
break;
case 182:
#line 906 "gram.in"
 { yyval.expval = mkrealcon(tyreal, token); }
break;
case 183:
#line 907 "gram.in"
 { yyval.expval = mkrealcon(TYDREAL, token); }
break;
case 185:
#line 912 "gram.in"
{ yyval.expval = mkcxcon(yyvsp[-3].expval,yyvsp[-1].expval); }
break;
case 186:
#line 916 "gram.in"
{ NOEXT("hex constant");
		  yyval.expval = mkbitcon(4, toklen, token); }
break;
case 187:
#line 919 "gram.in"
{ NOEXT("octal constant");
		  yyval.expval = mkbitcon(3, toklen, token); }
break;
case 188:
#line 922 "gram.in"
{ NOEXT("binary constant");
		  yyval.expval = mkbitcon(1, toklen, token); }
break;
case 190:
#line 928 "gram.in"
{ yyval.expval = yyvsp[-1].expval; }
break;
case 193:
#line 934 "gram.in"
{ yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 194:
#line 936 "gram.in"
{ yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 195:
#line 938 "gram.in"
{ yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 196:
#line 940 "gram.in"
{ yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 197:
#line 942 "gram.in"
{ if(yyvsp[-1].ival == OPMINUS)
			yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
		  else	yyval.expval = yyvsp[0].expval;
		}
break;
case 198:
#line 947 "gram.in"
{ NO66("concatenation operator //");
		  yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 200:
#line 952 "gram.in"
{
		if(yyvsp[-3].labval->labdefined)
			execerr("no backward DO loops", CNULL);
		yyvsp[-3].labval->blklevel = blklevel+1;
		exdo(yyvsp[-3].labval->labelno, NPNULL, yyvsp[0].chval);
		}
break;
case 201:
#line 959 "gram.in"
{
		exdo((int)(ctls - ctlstack - 2), NPNULL, yyvsp[0].chval);
		NOEXT("DO without label");
		}
break;
case 202:
#line 964 "gram.in"
{ exenddo(NPNULL); }
break;
case 203:
#line 966 "gram.in"
{ exendif();  thiswasbranch = NO; }
break;
case 205:
#line 969 "gram.in"
{ exelif(yyvsp[-2].expval); lastwasbranch = NO; }
break;
case 206:
#line 971 "gram.in"
{ exelse(); lastwasbranch = NO; }
break;
case 207:
#line 973 "gram.in"
{ exendif(); lastwasbranch = NO; }
break;
case 208:
#line 977 "gram.in"
{ exif(yyvsp[-1].expval); }
break;
case 209:
#line 981 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[-2].namval, yyvsp[0].chval); }
break;
case 211:
#line 986 "gram.in"
{ yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval); }
break;
case 212:
#line 990 "gram.in"
{ exequals((struct Primblock *)yyvsp[-2].expval, yyvsp[0].expval); }
break;
case 213:
#line 992 "gram.in"
{ exassign(yyvsp[0].namval, yyvsp[-2].labval); }
break;
case 216:
#line 996 "gram.in"
{ inioctl = NO; }
break;
case 217:
#line 998 "gram.in"
{ exarif(yyvsp[-6].expval, yyvsp[-4].labval, yyvsp[-2].labval, yyvsp[0].labval);  thiswasbranch = YES; }
break;
case 218:
#line 1000 "gram.in"
{ excall(yyvsp[0].namval, LBNULL, 0, labarray); }
break;
case 219:
#line 1002 "gram.in"
{ excall(yyvsp[-2].namval, LBNULL, 0, labarray); }
break;
case 220:
#line 1004 "gram.in"
{ if(nstars < maxlablist)
			excall(yyvsp[-3].namval, mklist(revchain(yyvsp[-1].chval)), nstars, labarray);
		  else
			many("alternate returns", 'l', maxlablist);
		}
break;
case 221:
#line 1010 "gram.in"
{ exreturn(yyvsp[0].expval);  thiswasbranch = YES; }
break;
case 222:
#line 1012 "gram.in"
{ exstop(yyvsp[-2].ival, yyvsp[0].expval);  thiswasbranch = yyvsp[-2].ival; }
break;
case 223:
#line 1016 "gram.in"
{ yyval.labval = mklabel( convci(toklen, token) ); }
break;
case 224:
#line 1020 "gram.in"
{ if(parstate == OUTSIDE)
			{
			newproc();
			startproc(ESNULL, CLMAIN);
			}
		}
break;
case 225:
#line 1029 "gram.in"
{ exgoto(yyvsp[0].labval);  thiswasbranch = YES; }
break;
case 226:
#line 1031 "gram.in"
{ exasgoto(yyvsp[0].namval);  thiswasbranch = YES; }
break;
case 227:
#line 1033 "gram.in"
{ exasgoto(yyvsp[-4].namval);  thiswasbranch = YES; }
break;
case 228:
#line 1035 "gram.in"
{ if(nstars < maxlablist)
			putcmgo(putx(fixtype(yyvsp[0].expval)), nstars, labarray);
		  else
			many("labels in computed GOTO list", 'l', maxlablist);
		}
break;
case 231:
#line 1047 "gram.in"
{ nstars = 0; yyval.namval = yyvsp[0].namval; }
break;
case 232:
#line 1051 "gram.in"
{ yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval,CHNULL) : CHNULL; }
break;
case 233:
#line 1053 "gram.in"
{ yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval) : yyvsp[-2].chval; }
break;
case 235:
#line 1058 "gram.in"
{ if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; yyval.expval = 0; }
break;
case 236:
#line 1062 "gram.in"
{ yyval.ival = 0; }
break;
case 237:
#line 1064 "gram.in"
{ yyval.ival = 2; }
break;
case 238:
#line 1068 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 239:
#line 1070 "gram.in"
{ yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].expval,CHNULL) ); }
break;
case 240:
#line 1074 "gram.in"
{ 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 241:
#line 1087 "gram.in"
{ intonly = YES; }
break;
case 242:
#line 1091 "gram.in"
{ intonly = NO; }
break;
case 243:
#line 1096 "gram.in"
{ endio(); }
break;
case 245:
#line 1101 "gram.in"
{ ioclause(IOSUNIT, yyvsp[0].expval); endioctl(); }
break;
case 246:
#line 1103 "gram.in"
{ ioclause(IOSUNIT, ENULL); endioctl(); }
break;
case 247:
#line 1105 "gram.in"
{ ioclause(IOSUNIT, IOSTDERR); endioctl(); }
break;
case 249:
#line 1108 "gram.in"
{ doio(CHNULL); }
break;
case 250:
#line 1110 "gram.in"
{ doio(CHNULL); }
break;
case 251:
#line 1112 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 252:
#line 1114 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 253:
#line 1116 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 254:
#line 1118 "gram.in"
{ doio(CHNULL); }
break;
case 255:
#line 1120 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 256:
#line 1122 "gram.in"
{ doio(CHNULL); }
break;
case 257:
#line 1124 "gram.in"
{ doio(revchain(yyvsp[0].chval)); }
break;
case 259:
#line 1131 "gram.in"
{ iostmt = IOBACKSPACE; }
break;
case 260:
#line 1133 "gram.in"
{ iostmt = IOREWIND; }
break;
case 261:
#line 1135 "gram.in"
{ iostmt = IOENDFILE; }
break;
case 263:
#line 1142 "gram.in"
{ iostmt = IOINQUIRE; }
break;
case 264:
#line 1144 "gram.in"
{ iostmt = IOOPEN; }
break;
case 265:
#line 1146 "gram.in"
{ iostmt = IOCLOSE; }
break;
case 266:
#line 1150 "gram.in"
{
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, yyvsp[0].expval);
		endioctl();
		}
break;
case 267:
#line 1156 "gram.in"
{
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, ENULL);
		endioctl();
		}
break;
case 268:
#line 1164 "gram.in"
{
		  ioclause(IOSUNIT, yyvsp[-1].expval);
		  endioctl();
		}
break;
case 269:
#line 1169 "gram.in"
{ endioctl(); }
break;
case 272:
#line 1177 "gram.in"
{ ioclause(IOSPOSITIONAL, yyvsp[0].expval); }
break;
case 273:
#line 1179 "gram.in"
{ ioclause(IOSPOSITIONAL, ENULL); }
break;
case 274:
#line 1181 "gram.in"
{ ioclause(IOSPOSITIONAL, IOSTDERR); }
break;
case 275:
#line 1183 "gram.in"
{ ioclause(yyvsp[-1].ival, yyvsp[0].expval); }
break;
case 276:
#line 1185 "gram.in"
{ ioclause(yyvsp[-1].ival, ENULL); }
break;
case 277:
#line 1187 "gram.in"
{ ioclause(yyvsp[-1].ival, IOSTDERR); }
break;
case 278:
#line 1191 "gram.in"
{ yyval.ival = iocname(); }
break;
case 279:
#line 1195 "gram.in"
{ iostmt = IOREAD; }
break;
case 280:
#line 1199 "gram.in"
{ iostmt = IOWRITE; }
break;
case 281:
#line 1203 "gram.in"
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, yyvsp[-1].expval);
		endioctl();
		}
break;
case 282:
#line 1210 "gram.in"
{
		iostmt = IOWRITE;
		ioclause(IOSUNIT, ENULL);
		ioclause(IOSFMT, ENULL);
		endioctl();
		}
break;
case 283:
#line 1219 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
break;
case 284:
#line 1221 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
break;
case 285:
#line 1225 "gram.in"
{ yyval.tagval = (tagptr) yyvsp[0].expval; }
break;
case 286:
#line 1227 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval,revchain(yyvsp[-3].chval)); }
break;
case 287:
#line 1231 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
break;
case 288:
#line 1233 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
break;
case 290:
#line 1238 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
break;
case 291:
#line 1240 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
break;
case 292:
#line 1242 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
break;
case 293:
#line 1244 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
break;
case 294:
#line 1246 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
break;
case 295:
#line 1248 "gram.in"
{ yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
break;
case 296:
#line 1252 "gram.in"
{ yyval.tagval = (tagptr) yyvsp[0].expval; }
break;
case 297:
#line 1254 "gram.in"
{ yyval.tagval = (tagptr) yyvsp[-1].expval; }
break;
case 298:
#line 1256 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].expval, CHNULL) ); }
break;
case 299:
#line 1258 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].tagval, CHNULL) ); }
break;
case 300:
#line 1260 "gram.in"
{ yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, revchain(yyvsp[-3].chval)); }
break;
case 301:
#line 1264 "gram.in"
{ startioctl(); }
break;
#line 2616 "y.tab.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())
    {
        goto yyoverflow;
    }
    *++yyssp = yystate;
    *++yyvsp = yyval;
    goto yyloop;
yyoverflow:
    yyerror("yacc stack overflow");
yyabort:
    return (1);
yyaccept:
    return (0);
}
