Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

gram.c

Go to the documentation of this file.
00001 #include <sys/cdefs.h>
00002 #ifndef lint
00003 #if 0
00004 static char yysccsid[] = "@(#)yaccpar   1.9 (Berkeley) 02/21/93";
00005 #else
00006 __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
00007 #endif
00008 #endif
00009 #include <stdlib.h>
00010 #define YYBYACC 1
00011 #define YYMAJOR 1
00012 #define YYMINOR 9
00013 #define YYLEX yylex()
00014 #define YYEMPTY -1
00015 #define yyclearin (yychar=(YYEMPTY))
00016 #define yyerrok (yyerrflag=0)
00017 #define YYRECOVERING (yyerrflag!=0)
00018 #define YYPREFIX "yy"
00019 #line 125 "gram.in"
00020 #include "defs.h"
00021 #include "p1defs.h"
00022 
00023 static int nstars;                      /* Number of labels in an
00024                                            alternate return CALL */
00025 static int datagripe;
00026 static int ndim;
00027 static int vartype;
00028 int new_dcl;
00029 static ftnint varleng;
00030 static struct Dims dims[MAXDIM+1];
00031 extern struct Labelblock **labarray;    /* Labels in an alternate
00032                                                    return CALL */
00033 extern int maxlablist;
00034 
00035 /* The next two variables are used to verify that each statement might be reached
00036    during runtime.   lastwasbranch   is tested only in the defintion of the
00037    stat:   nonterminal. */
00038 
00039 int lastwasbranch = NO;
00040 static int thiswasbranch = NO;
00041 extern ftnint yystno;
00042 extern flag intonly;
00043 static chainp datastack;
00044 extern long laststfcn, thisstno;
00045 extern int can_include; /* for netlib */
00046 extern struct Primblock *primchk Argdcl((expptr));
00047 
00048 #define ESNULL (Extsym *)0
00049 #define NPNULL (Namep)0
00050 #define LBNULL (struct Listblock *)0
00051 
00052  static void
00053 pop_datastack(Void) {
00054         chainp d0 = datastack;
00055         if (d0->datap)
00056                 curdtp = (chainp)d0->datap;
00057         datastack = d0->nextp;
00058         d0->nextp = 0;
00059         frchain(&d0);
00060         }
00061 
00062 #line 171 "gram.in"
00063 typedef union   {
00064         int ival;
00065         ftnint lval;
00066         char *charpval;
00067         chainp chval;
00068         tagptr tagval;
00069         expptr expval;
00070         struct Labelblock *labval;
00071         struct Nameblock *namval;
00072         struct Eqvchain *eqvval;
00073         Extsym *extval;
00074         } YYSTYPE;
00075 #line 76 "y.tab.c"
00076 #define SEOS 1
00077 #define SCOMMENT 2
00078 #define SLABEL 3
00079 #define SUNKNOWN 4
00080 #define SHOLLERITH 5
00081 #define SICON 6
00082 #define SRCON 7
00083 #define SDCON 8
00084 #define SBITCON 9
00085 #define SOCTCON 10
00086 #define SHEXCON 11
00087 #define STRUE 12
00088 #define SFALSE 13
00089 #define SNAME 14
00090 #define SNAMEEQ 15
00091 #define SFIELD 16
00092 #define SSCALE 17
00093 #define SINCLUDE 18
00094 #define SLET 19
00095 #define SASSIGN 20
00096 #define SAUTOMATIC 21
00097 #define SBACKSPACE 22
00098 #define SBLOCK 23
00099 #define SCALL 24
00100 #define SCHARACTER 25
00101 #define SCLOSE 26
00102 #define SCOMMON 27
00103 #define SCOMPLEX 28
00104 #define SCONTINUE 29
00105 #define SDATA 30
00106 #define SDCOMPLEX 31
00107 #define SDIMENSION 32
00108 #define SDO 33
00109 #define SDOUBLE 34
00110 #define SELSE 35
00111 #define SELSEIF 36
00112 #define SEND 37
00113 #define SENDFILE 38
00114 #define SENDIF 39
00115 #define SENTRY 40
00116 #define SEQUIV 41
00117 #define SEXTERNAL 42
00118 #define SFORMAT 43
00119 #define SFUNCTION 44
00120 #define SGOTO 45
00121 #define SASGOTO 46
00122 #define SCOMPGOTO 47
00123 #define SARITHIF 48
00124 #define SLOGIF 49
00125 #define SIMPLICIT 50
00126 #define SINQUIRE 51
00127 #define SINTEGER 52
00128 #define SINTRINSIC 53
00129 #define SLOGICAL 54
00130 #define SNAMELIST 55
00131 #define SOPEN 56
00132 #define SPARAM 57
00133 #define SPAUSE 58
00134 #define SPRINT 59
00135 #define SPROGRAM 60
00136 #define SPUNCH 61
00137 #define SREAD 62
00138 #define SREAL 63
00139 #define SRETURN 64
00140 #define SREWIND 65
00141 #define SSAVE 66
00142 #define SSTATIC 67
00143 #define SSTOP 68
00144 #define SSUBROUTINE 69
00145 #define STHEN 70
00146 #define STO 71
00147 #define SUNDEFINED 72
00148 #define SWRITE 73
00149 #define SLPAR 74
00150 #define SRPAR 75
00151 #define SEQUALS 76
00152 #define SCOLON 77
00153 #define SCOMMA 78
00154 #define SCURRENCY 79
00155 #define SPLUS 80
00156 #define SMINUS 81
00157 #define SSTAR 82
00158 #define SSLASH 83
00159 #define SPOWER 84
00160 #define SCONCAT 85
00161 #define SAND 86
00162 #define SOR 87
00163 #define SNEQV 88
00164 #define SEQV 89
00165 #define SNOT 90
00166 #define SEQ 91
00167 #define SLT 92
00168 #define SGT 93
00169 #define SLE 94
00170 #define SGE 95
00171 #define SNE 96
00172 #define SENDDO 97
00173 #define SWHILE 98
00174 #define SSLASHD 99
00175 #define SBYTE 100
00176 #define YYERRCODE 256
00177 short yylhs[] = {                                        -1,
00178     0,    0,   54,   54,   54,   54,   54,   54,   54,    1,
00179    55,   55,   55,   55,   55,   55,   55,   59,   51,   32,
00180    52,   52,   60,   60,   61,   61,   62,   62,   25,   25,
00181    25,   26,   26,   33,   33,   16,   56,   56,   56,   56,
00182    56,   56,   56,   56,   56,   56,   56,   56,    9,    9,
00183     9,   73,    6,    7,    8,    8,    8,    8,    8,    8,
00184     8,    8,    8,    8,    8,    8,   15,   15,   15,   49,
00185    49,   49,   49,   50,   50,   63,   63,   64,   64,   65,
00186    65,   79,   53,   53,   66,   66,   80,   81,   75,   82,
00187    84,   76,   76,   83,   83,   44,   44,   44,   69,   69,
00188    85,   85,   71,   71,   86,   35,   17,   17,   18,   18,
00189    74,   74,   89,   87,   87,   88,   88,   42,   42,   90,
00190    90,    2,   67,   67,   91,   91,   94,   92,   93,   93,
00191    95,   95,   10,   68,   68,   96,   19,   19,   70,   20,
00192    20,   21,   21,   37,   37,   37,   38,   38,   38,   38,
00193    38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
00194    11,   11,   12,   12,   12,   12,   12,   12,   36,   36,
00195    36,   36,   31,   39,   39,   43,   43,   47,   47,   47,
00196    47,   47,   47,   47,   46,   48,   48,   48,   40,   40,
00197    41,   41,   41,   41,   41,   41,   41,   41,   57,   57,
00198    57,   57,   57,   57,   57,   57,   57,   98,   22,   23,
00199    23,   97,   97,   97,   97,   97,   97,   97,   97,   97,
00200    97,   97,    3,   99,  100,  100,  100,  100,   72,   72,
00201    34,   24,   24,   45,   45,   13,   13,   27,   27,   58,
00202    77,   78,  101,  102,  102,  102,  102,  102,  102,  102,
00203   102,  102,  102,  102,  102,  102,  102,  103,  110,  110,
00204   110,  105,  112,  112,  112,  107,  107,  104,  104,  113,
00205   113,  114,  114,  114,  114,  114,  114,   14,  106,  108,
00206   109,  109,   28,   28,    5,    5,   29,   29,   29,   30,
00207    30,   30,   30,   30,   30,    4,    4,    4,    4,    4,
00208   111,
00209 };
00210 short yylen[] = {                                         2,
00211     0,    3,    2,    2,    2,    3,    3,    2,    1,    1,
00212     3,    4,    3,    4,    4,    5,    3,    0,    1,    1,
00213     0,    1,    2,    3,    1,    3,    1,    3,    0,    2,
00214     3,    1,    3,    1,    1,    1,    1,    1,    1,    1,
00215     1,    1,    1,    1,    1,    2,    1,    5,    7,    5,
00216     5,    0,    2,    1,    1,    1,    1,    1,    1,    1,
00217     1,    1,    1,    1,    1,    1,    0,    4,    6,    3,
00218     4,    5,    3,    1,    3,    3,    3,    3,    3,    3,
00219     3,    3,    1,    3,    3,    3,    0,    6,    0,    0,
00220     0,    2,    3,    1,    3,    1,    2,    1,    1,    3,
00221     1,    1,    1,    3,    3,    2,    1,    5,    1,    3,
00222     0,    3,    0,    2,    3,    1,    3,    1,    1,    1,
00223     3,    1,    3,    3,    4,    1,    0,    2,    1,    3,
00224     1,    3,    1,    1,    2,    4,    1,    3,    0,    0,
00225     1,    1,    3,    1,    3,    1,    1,    1,    3,    3,
00226     3,    3,    2,    3,    3,    3,    3,    3,    2,    3,
00227     1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
00228     4,    5,    5,    0,    1,    1,    1,    1,    1,    1,
00229     1,    1,    1,    1,    5,    1,    1,    1,    1,    3,
00230     1,    1,    3,    3,    3,    3,    2,    3,    1,    7,
00231     4,    1,    2,    2,    6,    2,    2,    5,    3,    1,
00232     4,    4,    5,    2,    1,    1,   10,    1,    3,    4,
00233     3,    3,    1,    1,    3,    3,    7,    7,    0,    1,
00234     3,    1,    3,    1,    2,    1,    1,    1,    3,    0,
00235     0,    0,    1,    2,    2,    2,    2,    2,    2,    2,
00236     3,    4,    4,    2,    3,    1,    3,    3,    1,    1,
00237     1,    3,    1,    1,    1,    1,    1,    3,    3,    1,
00238     3,    1,    1,    1,    2,    2,    2,    1,    3,    3,
00239     4,    4,    1,    3,    1,    5,    1,    1,    1,    3,
00240     3,    3,    3,    3,    3,    1,    3,    5,    5,    5,
00241     0,
00242 };
00243 short yydefred[] = {                                      1,
00244     0,    9,   10,    0,    0,    8,    0,  224,  240,   64,
00245   259,   18,  240,   61,  265,  139,   57,  240,   87,   59,
00246    63,  240,   58,  240,  240,  240,  261,  240,    0,  139,
00247   139,   47,   18,  240,  240,  240,  240,  240,  139,  263,
00248    55,  139,   60,  134,  264,  139,  236,  240,   18,  240,
00249    56,  240,  260,    0,   65,  237,   18,   62,  240,  202,
00250    66,    0,    0,   54,    0,  240,    0,    0,    3,    4,
00251     5,    0,    0,    0,    0,    0,    0,  199,    0,    0,
00252   215,  216,  243,    0,    0,    0,    0,    0,  240,  240,
00253     2,   36,    6,    0,    0,    0,    0,  214,   89,    0,
00254   206,    0,    7,  207,   20,   19,    0,    0,    0,    0,
00255     0,    0,    0,    0,    0,  127,    0,    0,    0,    0,
00256   301,    0,    0,   74,  101,  102,    0,   99,    0,  301,
00257    18,  230,    0,  241,   53,    0,   89,    0,    0,    0,
00258     0,    0,    0,    0,   89,  127,    0,  135,  204,  203,
00259     0,    0,  180,  181,  182,  183,  188,  187,  186,  178,
00260   179,    0,  161,  162,  246,  247,    0,  191,    0,    0,
00261   192,  184,  244,    0,  248,  267,    0,    0,    0,    0,
00262     0,  301,  301,  223,    0,   22,   13,  231,    0,   70,
00263     0,    0,   85,    0,    0,    0,    0,   17,    0,   80,
00264    76,    0,  122,  225,    0,    0,    0,    0,  123,    0,
00265     0,   78,    0,    0,  301,    0,  189,    0,  279,    0,
00266     0,    0,  147,    0,  144,  221,  146,  148,    0,    0,
00267     0,  280,    0,  139,    0,    0,   91,  222,  219,    0,
00268     0,    0,  232,   73,    0,   77,   79,   81,   86,  124,
00269     0,    0,  170,    0,  278,  273,  274,    0,    0,    0,
00270   270,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00271   283,    0,  285,    0,    0,    0,  255,    0,    0,    0,
00272     0,  257,  258,  262,    0,  113,  106,   71,    0,  109,
00273     0,  107,    0,  210,  201,    0,  242,    0,   30,   35,
00274     0,   34,   32,   83,    0,   15,    0,  120,    0,    0,
00275     0,    0,  128,    0,    0,  103,    0,  282,  281,    0,
00276    12,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00277     0,    0,    0,  163,  165,  164,  167,  166,  168,    0,
00278     0,   75,  100,   14,    0,   52,    0,    0,    0,    0,
00279     0,  235,  220,    0,    0,    0,    0,    0,    0,    0,
00280     0,  276,  277,    0,    0,  269,    0,    0,    0,    0,
00281     0,    0,  268,    0,    0,    0,    0,    0,    0,    0,
00282     0,    0,    0,    0,  213,    0,    0,    0,    0,   90,
00283     0,    0,    0,    0,   31,    0,   82,    0,    0,    0,
00284     0,    0,  208,  133,    0,    0,  129,    0,   48,    0,
00285   190,    0,   23,    0,   25,  145,    0,    0,    0,    0,
00286     0,    0,    0,    0,    0,    0,    0,   16,    0,    0,
00287    68,   50,    0,   51,    0,    0,  176,    0,   94,   98,
00288   177,   92,  233,   72,    0,  137,    0,    0,    0,    0,
00289   271,    0,  284,    0,    0,    0,    0,  293,    0,  295,
00290     0,  291,    0,  112,    0,  118,    0,  116,  114,    0,
00291   110,   91,    0,    0,    0,    0,  205,   33,   84,    0,
00292     0,  121,    0,    0,  125,    0,    0,  104,    0,   24,
00293     0,    0,    0,  242,   93,   97,    0,    0,    0,  172,
00294     0,    0,    0,    0,    0,    0,    0,    0,  115,    0,
00295     0,    0,  211,    0,  200,  227,    0,    0,  132,  130,
00296    28,   26,  185,   49,   69,   96,   95,  138,  173,  286,
00297   299,  300,  298,    0,  117,  108,   88,    0,    0,    0,
00298   217,
00299 };
00300 short yydgoto[] = {                                       1,
00301     4,  308,  185,  276,  271,   62,   63,   64,   65,  405,
00302   222,  341,   66,  258,  135,   93,  290,  291,  445,  357,
00303   358,  294,  295,  241,  198,  301,  474,  272,  277,  278,
00304   253,  151,  303,   67,  190,  223,  279,  225,  360,  169,
00305   217,  468,  438,  439,  243,  227,  228,  172,   68,  126,
00306   186,  187,  305,    5,   69,   70,   71,   94,   95,  321,
00307   414,  415,   72,   73,   74,   75,   76,   77,  127,   97,
00308   315,  133,  429,  287,  192,  350,  195,  393,  200,   99,
00309   193,  472,  442,  351,  128,  316,  386,  469,  387,  309,
00310   209,  210,  406,  211,  407,  148,   78,   79,   80,   81,
00311    82,   83,   84,  173,   85,   86,  179,   87,   88,   89,
00312   219,   90,  260,  261,
00313 };
00314 short yysindex[] = {                                      0,
00315     5,    0,    0,  978,   18,    0,   89,    0,    0,    0,
00316     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00317     0,    0,    0,    0,    0,    0,    0,    0,   22,    0,
00318     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00319     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00320     0,    0,    0,  169,    0,    0,    0,    0,    0,    0,
00321     0,   -4,   -7,    0,   98,    0,  128,   93,    0,    0,
00322     0,  112,  164,  171,  186,  196,  203,    0, 1649,   22,
00323     0,    0,    0, 1435,  226, 1562,  226,  223,    0,    0,
00324     0,    0,    0,  314,   22,   22,  169,    0,    0,  186,
00325     0,  247,    0,    0,    0,    0,  259,  260,   22,   22,
00326   346,   22,  283,  285,  294,    0,   22,  304, 1572,   22,
00327     0, 1298,  370,    0,    0,    0,  307,    0,   22,    0,
00328     0,    0,   22,    0,    0,   22,    0, 1298,  721,   22,
00329   -34,   22,   22,  260,    0,    0,   22,    0,    0,    0,
00330   322,  329,    0,    0,    0,    0,    0,    0,    0,    0,
00331     0, 1424,    0,    0,    0,    0, 1586,    0,  471,    0,
00332     0,    0,    0, 1424,    0,    0,    0,  129,  332, 1327,
00333  1327,    0,    0,    0,  363,    0,    0,    0,  372,    0,
00334    22,  118,    0,   27,  346, 1298,  175,    0,   22,    0,
00335     0,  259,    0,    0,  186,  346, 1298, 1298,    0,  393,
00336  1037,    0,   22, 1586,    0,  471,    0,  414,    0, 1298,
00337  1298, 1298,    0, 1812,    0,    0,    0,    0,  361,  169,
00338   259,    0,   22,    0, 1384,  372,    0,    0,    0,  346,
00339     4, 1812,    0,    0,  186,    0,    0,    0,    0,    0,
00340   383, 1298,    0, 1298,    0,    0,    0, 1190, 1244,  166,
00341     0,  406, 1586, 1586, 1586, 1586, 1586, 1300,  146,  146,
00342     0,  416,    0,  146, 1327,  424,    0,  425, 1812,  430,
00343     0,    0,    0,    0,   22,    0,    0,    0,  118,    0,
00344   116,    0,  418,    0,    0,  423,    0, 1643,    0,    0,
00345   185,    0,    0,    0,  201,    0,  437,    0,  250, 1665,
00346  1687,  499,    0,  444,  268,    0, 1329,    0,    0,    9,
00347     0, 1709,  445,  620,  442, 1298, 1298, 1298, 1298, 1298,
00348  1298, 1298, 1298,    0,    0,    0,    0,    0,    0, 1298,
00349  1298,    0,    0,    0,  259,    0, 1241, 1812,   -7,  107,
00350  1596,    0,    0, 1276,   22,   22,  456,  463, 1812,  457,
00351  1812,    0,    0, 1812,    0,    0, 1424,  406,  406,  406,
00352   289,  396,    0,  464,  416,  146,  416,  465,  467, 1731,
00353   469, 1327, 1327, 1327,    0,  269, 1287,  480,  118,    0,
00354  1298, 1298,  186,  479,    0,   59,    0,   22,  346,  186,
00355   346,  346,    0,    0,  478,  276,    0, 1298,    0,   22,
00356     0,  492,    0,  286,    0,    0, 1298,  442,  442,  442,
00357   356,  620,  783, 1001, 1001,  402,  509,    0,  372,  487,
00358     0,    0, 1596,    0, 1298, 1470,    0,  494,    0,    0,
00359     0,    0,    0,    0,  508,    0,  513, 1298, 1298,  471,
00360     0,  146,    0, 1327, 1327,    0, 1327,    0,    0,    0,
00361     0,    0,    0,    0, 1287,    0, 1795,    0,    0,  118,
00362     0,    0, 1753,  518, 1812,   27,    0,    0,    0,  305,
00363  1298,    0,  520,  499,    0,  499, 1812,    0,  595,    0,
00364   596,  536,   -7,    0,    0,    0, 1596,   22, 1298,    0,
00365  1812,  537,  539,  -14,  542,  544,  555,  536,    0, 1287,
00366   571,  151,    0, 1298,    0,    0, 1812,  346,    0,    0,
00367     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00368     0,    0,    0, 1812,    0,    0,    0, 1812,  575,  346,
00369     0,
00370 };
00371 short yyrindex[] = {                                      0,
00372     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00373     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00374     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00375     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00376     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00377     0,    0,    0,  653,    0,    0,    0,    0,    0,    0,
00378     0,  370,  415,    0,  655,    0,  658,   38,    0,    0,
00379     0,  662,  663,  672,  172,  679,  688,    0,    0,    0,
00380     0,    0,    0,    0,    0,    0,    0,  691,    0,    0,
00381     0,    0,    0,    0,  693,    0,    0,    0,    0,   28,
00382     0,    0,    0,    0,    0,    0,  695,    0,    0,    0,
00383     0,    0,    0,    0,    0,    0,    0,    0,    0,   13,
00384     0,  696,    0,    0,    0,    0,  697,    0,    0,    0,
00385     0,    0,    0,    0,    0,    0,    0,  696,    0,  168,
00386     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00387   556,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00388     0,    0,    0,    0,    0,    0,    0,    0,    0,  392,
00389     0,    0,    0,    0,    0,    0,  187,  698,  706,  707,
00390     0,    0,    0,    0,    0,    0,    0,    0,   44,    0,
00391     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00392     0,  695,    0,    0,  101,    0,    0,    0,    0,   25,
00393     0,    0,    0,    0,    0,   85,    0,  708,    0,    0,
00394     0,    0,    0,   97,    0,    0,    0,    0,    0,    0,
00395   695,    0,    0,    0,    0,   17,    0,    0,    0,    0,
00396     0,  311,    0,    0,  370,    0,    0,    0,    0,    0,
00397     0,  232,    0,    0,    0,    0,    0,    0,  639,    0,
00398     0,  434,    0,    0,    0,    0,    0,  639,    0,    0,
00399     0,  717,    0,    0,    0,  718,    0,  719,    0, 1149,
00400  1038,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00401     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00402     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00403     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00404     0,    0, 1775,   92,  763,    0,    0,    0,    0,    0,
00405     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00406     0,    0,    0,    0,  695,    0,    0,   34,   32,    0,
00407     0,    0,    0,    0,    0,    0,    0,  646,  210,    0,
00408   724,    0,    0,  316,  234,    0,    0,  543,  664,  680,
00409   137,  136,    0,    0,  736,    0,  737,    0,    0,    0,
00410  1775,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00411     0,    0,   41,    0,    0,    0,    0,    0,    0, 1413,
00412     0,    0,    0,    0,  337,    0,    0,    0,    0,    0,
00413     0,  342,    0,    0,    0,    0,    0,  846,  869,  892,
00414   583,  288,  344,  261,  447,  486,  692,    0,   17,    0,
00415     0,    0,    0,    0,    0,    0,    0,  -22,    0,    0,
00416     0,    0,    0,    0,   51,    0,  740,    0,  647,  349,
00417     0,    0,    0,    0,    0, 1060,    0,    0, 1079,    0,
00418  1098,    0, 1127,    0,    0,    0,  367,    0,    0,    0,
00419     0,    0,    0,   69,   70,    0,    0,    0,    0,    0,
00420     0,    0,    0,    0,    0,    0,  385,    0,    0,    0,
00421     0, 1829,   32,    0,    0,    0,    0,    0,  666,    0,
00422   387,    0,    0, 1536,    0,    0,    0,  816,    0,    0,
00423     0,    0,    0,    0,    0,    0,  747,    0,    0,    0,
00424     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00425     0,    0,    0,  367,    0,    0,    0,   71,    0,    0,
00426     0,
00427 };
00428 short yygindex[] = {                                      0,
00429     0, -110,    0, -231, -333,  540,    0,    0,    0,  266,
00430    31,    0,    0,    0, -332,    0, -342,  468,    0,    0,
00431     0, -227,  277,    0, -181,    0,    0,    8,  578,  477,
00432   321,  -29,  375,    0, -137,  421,  275, -151, -118, -109,
00433   227,  262, -408,  278,  419, -174,  -27,    0,    0,  -65,
00434   -20,  656,    0,    0,    0,    0,    0, 1500,  -11,    0,
00435     0,  291,    0,    0,    0,    0,    0,    0,    0,  -15,
00436     0,  -63,    0, -234,  649,  315,  659, -335,  648,    0,
00437   638,    0,  357,    0,  564,  388,    0,  334,    0,  401,
00438   660,    0,    0,    0,  318,    0,  726,    0,    0,    0,
00439     0,    0,    0,  452,    0,    0,    0,    0,    0,    0,
00440  -119,    0,    0,  441,
00441 };
00442 #define YYTABLESIZE 1925
00443 short yytable[] = {                                     106,
00444   204,  349,  244,  226,  141,  281,  281,    3,  107,  216,
00445   232,  145,  431,   21,  108,  109,  432,  111,   91,  238,
00446   306,  110,  412,  116,  125,  126,  117,  496,  280,  280,
00447   118,  191,   67,  241,  242,  105,  194,  120,   38,  131,
00448   105,  229,  453,  378,  111,  129,  471,  242,  123,  344,
00449   124,  136,  259,  288,  229,   96,  171,  262,  171,  252,
00450    96,  392,  283,  284,  268,  106,  188,  189,  323,  209,
00451   238,  239,  105,  132,  134,  245,   96,  242,  353,  201,
00452   106,  354,  205,  413,  297,  301,   21,  212,  526,  202,
00453   106,  171,  159,   92,  111,  318,  319,  175,  111,  106,
00454   281,  226,  126,  234,  317,  159,  236,  242,  231,   67,
00455   189,  242,  246,  247,  167,  111,  167,  251,  453,  233,
00456   229,  111,  229,  381,  293,  229,  111,  471,  111,  352,
00457    67,  105,  242,  136,  171,  159,  193,  198,  229,  171,
00458   300,  307,  105,  209,  238,  239,  171,  238,  239,  167,
00459   458,  460,  462,  368,  369,  370,  371,  372,  525,  105,
00460   524,  189,  301,  428,  296,  159,  159,  302,  159,  159,
00461   140,  175,   42,  175,  229,  136,  440,  159,  159,  159,
00462   159,  355,  105,  314,  433,  229,  171,  266,  105,  142,
00463   159,  289,  167,  389,  493,  323,  137,  167,  390,  267,
00464   125,  139,  269,  106,  167,  434,  270,  281,  281,  281,
00465   193,  198,  345,  193,  198,  193,  193,  444,  346,  269,
00466   193,  198,  458,  460,  503,  462,  505,  506,  433,  507,
00467   459,  461,  463,  537,  268,  171,  171,  171,  171,  171,
00468   366,  143,  511,  367,  167,  229,  267,  268,  144,  299,
00469   230,  123,  230,  124,  340,  385,  300,  450,  440,  395,
00470     2,  156,  396,  132,  266,  492,  189,  189,  189,  189,
00471   189,  189,  340,  146,  156,  397,  374,  375,  398,  281,
00472   281,  377,  281,  323,  142,  147,  175,  142,  158,  267,
00473   482,  483,  267,  167,  167,  167,  167,  167,  267,  174,
00474   181,  158,  459,  461,  156,  508,  140,  268,  174,  340,
00475   170,  268,  177,  190,  190,  190,  190,  190,  190,  184,
00476   196,  437,  440,  441,  400,  189,  446,  401,  340,  476,
00477   502,  158,  197,  199,  156,  156,  481,  156,  156,  171,
00478   340,  340,  409,  464,  157,  410,  465,  267,  156,  156,
00479   485,  203,  340,  486,  340,  340,  206,  157,  207,  156,
00480   490,  158,  158,  491,  158,  158,  302,  208,  163,  164,
00481   263,  264,  265,  158,  158,  158,  158,  213,  340,  516,
00482   314,  436,  401,  229,  230,  234,  158,  157,  234,  340,
00483   275,  340,  245,  275,  340,  252,  224,  167,  267,  267,
00484   267,  267,  267,  437,  254,  441,  437,  539,  441,  274,
00485   340,  131,  224,  242,  131,   67,   27,  157,  157,   27,
00486   157,  157,  504,  272,  504,  504,  272,  504,   67,  541,
00487   157,  157,  157,  285,  197,  163,  164,  326,  327,  328,
00488   504,  119,  157,  342,  119,  286,  296,  155,  340,  340,
00489   340,  340,  340,  340,  340,  340,  340,  340,   67,  105,
00490   155,  143,  105,  436,  143,  356,  312,  437,  528,  441,
00491   298,  189,  189,  189,  189,  189,  189,  263,  264,  265,
00492   267,  310,  311,  326,  327,  328,  149,  320,   67,  265,
00493   155,  391,   67,  376,  322,  324,  325,  340,  392,  149,
00494   152,  382,  383,  340,  168,  340,  168,  384,  197,  348,
00495   399,  197,  404,  197,  197,  197,  197,  340,  197,  408,
00496   155,  155,  417,  155,  155,  328,  359,  436,  361,  149,
00497   447,  340,  364,  449,  155,  155,  175,  178,  180,  168,
00498   448,  452,  454,  194,  455,  155,  457,  340,  477,  380,
00499   163,  164,  263,  264,  265,  266,  169,  470,  484,  149,
00500   149,  494,  149,  149,  340,  149,  149,  489,  340,  169,
00501   149,  149,  149,  149,  149,  497,  149,  149,  149,  149,
00502   149,  149,  168,  160,  149,  498,  499,  168,  163,  164,
00503   326,  327,  328,  329,  168,  514,  160,  518,  273,  169,
00504   418,  419,  420,  421,  422,  423,  424,  425,  521,  412,
00505   523,  529,  292,  530,  426,  427,  531,  194,  532,  304,
00506   194,  322,  194,  194,  194,  194,  160,  194,  242,  533,
00507   169,  169,  169,  169,  168,  169,  169,  169,  169,  169,
00508   169,  169,  169,  169,  169,  536,  169,  169,  169,  169,
00509   169,  169,  540,   45,  169,   37,  160,  160,  218,  160,
00510   160,  467,   39,   40,  195,  473,  475,  160,  160,  160,
00511   160,  160,   41,  160,  160,  160,  160,  160,  160,   43,
00512   196,  160,  487,  168,  168,  168,  168,  168,   44,  273,
00513   273,  256,  154,   21,  273,   29,  174,   46,  249,  163,
00514   164,  326,  327,  328,  329,  154,  250,  254,   11,  292,
00515   334,  335,  336,  337,  338,  339,  272,  251,  288,  289,
00516   141,  174,  501,  224,  212,  153,  154,  155,  156,  157,
00517   158,  159,  160,  161,  105,  154,  253,  252,  195,  467,
00518   171,  195,  174,  195,  195,  195,  195,  228,  195,  519,
00519   313,  379,  515,  171,  196,  517,  388,  196,  282,  196,
00520   196,  196,  196,  153,  196,  154,  154,  500,  154,  154,
00521   478,  535,  443,  224,  527,  218,  153,  154,  154,  154,
00522   154,  522,  249,  171,  534,  237,  512,  168,  538,  495,
00523   154,  248,  235,  343,  220,  239,  273,  488,  509,  480,
00524   163,  164,  240,  520,  150,  250,  153,  451,    0,  292,
00525   221,    0,    0,    0,  171,  171,  171,  171,  479,  171,
00526   171,  171,  171,  171,  171,  171,  171,  171,  171,    0,
00527   171,  171,  171,  171,  171,  171,  153,  153,  171,  153,
00528   153,    0,  153,  153,  153,  153,  150,  153,  153,  153,
00529   153,  153,    0,  153,  153,  153,  153,  153,  153,  150,
00530     0,  153,  163,  164,  326,  327,  328,  329,  330,  151,
00531     0,    0,  273,  334,  335,  336,  337,  338,  339,    0,
00532     0,    0,  151,    0,    0,    0,    0,    0,    0,  150,
00533   292,    0,  152,  290,    0,  144,  144,  144,  144,  144,
00534   144,  144,  144,  144,  144,  152,  144,  144,  144,  144,
00535   144,  144,  151,    0,    0,    0,    0,    0,    0,  150,
00536   150,    0,  150,  150,    0,  150,  150,  150,  150,    0,
00537   150,  150,  150,  150,  150,  152,  150,  150,  150,  150,
00538   150,  150,  151,  151,  150,  151,  151,    0,  151,  151,
00539   151,  151,    0,  151,  151,  151,  151,  151,    0,  151,
00540   151,  151,  151,  151,  151,  152,  152,  151,  152,  152,
00541     0,  152,  152,  152,  152,    0,  152,  152,  152,  152,
00542   152,    6,  152,  152,  152,  152,  152,  152,    0,    0,
00543   152,    0,    0,    0,    0,    7,    8,    9,   10,   11,
00544    12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
00545    22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
00546    32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
00547    42,   43,   44,   45,   46,   47,   48,   49,  296,   50,
00548    51,   52,   53,   54,   55,   56,   57,    0,    0,   58,
00549    59,    0,    0,    0,    0,    0,    0,   10,    0,    0,
00550   297,   14,    0,    0,   17,    0,    0,   20,   21,    0,
00551    23,    0,    0,    0,   60,    0,    0,   61,    0,  292,
00552   163,  164,  326,  327,  328,  329,  330,  331,   41,    0,
00553    43,  334,  335,  336,  337,  338,  339,    0,  294,   51,
00554     0,    0,    0,   55,    0,    0,    0,    0,   58,    0,
00555     0,    0,  146,    0,    0,  296,    0,  146,  146,  146,
00556   146,  146,  146,  146,  146,  146,  146,  290,  146,  146,
00557   146,  146,  146,  146,  145,    0,   61,  297,    0,  145,
00558   145,  145,  145,  145,  145,  145,  145,  145,  145,  287,
00559   145,  145,  145,  145,  145,  145,  292,    0,  144,  144,
00560   144,  144,  144,  144,  144,  144,  144,  144,    0,  144,
00561   144,  144,  144,  144,  144,  294,    0,  144,  144,  144,
00562   144,  144,  144,  144,  144,  144,  144,    0,  144,  144,
00563   144,  144,  144,  144,  153,  154,  155,  156,  157,  158,
00564   159,  160,  161,  105,  290,    0,  144,  144,  144,  144,
00565   144,  144,  144,  144,  144,  144,    0,  144,  144,  144,
00566   144,  144,  144,    0,    0,    0,    0,    0,  144,  144,
00567   144,  144,  144,  144,  144,  144,  144,  144,    0,  144,
00568   144,  144,  144,  144,  144,  153,  154,  155,  156,  157,
00569   158,  159,  160,  161,  105,    0,    0,    0,    0,    0,
00570     0,    0,    0,  220,    0,    0,    0,    0,    0,  163,
00571   164,  362,    0,  363,    0,    0,    0,    0,    0,  221,
00572   153,  154,  155,  156,  157,  158,  159,  160,  161,  105,
00573     0,  153,  154,  155,  156,  157,  158,  159,  160,  161,
00574   105,    0,  153,  154,  155,  156,  157,  158,  159,  160,
00575   161,  105,    0,    0,  220,    0,    0,    0,  365,    0,
00576   163,  164,  430,  163,  164,  263,  264,  265,  266,    0,
00577   221,  153,  154,  155,  156,  157,  158,  159,  160,  161,
00578   105,    0,    0,    0,    0,    0,    0,    0,    0,  220,
00579     0,    0,    0,    0,    0,  163,  164,  240,    0,    0,
00580   220,    0,    0,    0,    0,  221,  163,  164,  466,    0,
00581     0,  220,    0,    0,  373,    0,  221,  163,  164,  163,
00582   164,  263,  264,  265,  266,    0,    0,  221,  153,  154,
00583   155,  156,  157,  158,  159,  160,  161,  105,    0,    0,
00584   275,    0,    0,  411,    0,    0,  163,  164,  163,  164,
00585   263,  264,  265,  266,    0,    0,  221,  229,  229,  229,
00586   229,  229,  229,  229,  229,  229,  229,    0,  153,  154,
00587   155,  156,  157,  158,  159,  160,  161,  105,  255,  153,
00588   154,  155,  156,  157,  158,  159,  160,  161,  105,    0,
00589     0,    0,    0,    0,    0,    0,    0,  347,    0,    0,
00590     0,    0,    0,  163,  164,    0,    0,    0,    0,    0,
00591     0,    0,    0,  221,  153,  154,  155,  156,  157,  158,
00592   159,  160,  161,  105,    0,    0,  229,    0,    0,    0,
00593     0,    0,  229,  229,    0,    0,    0,  214,    0,    0,
00594     0,    0,  229,  163,  164,  256,    0,  257,  162,    0,
00595     0,    0,   96,    0,  163,  164,  165,   98,  166,    0,
00596     0,  100,    0,  101,  102,  103,    0,  104,    0,    0,
00597     0,    0,    0,  111,  112,  113,  114,  115,    0,    0,
00598     0,    0,    0,    0,    0,    0,    0,  119,    0,  121,
00599     0,  122,    0,    0,    0,    0,    0,    0,  130,    0,
00600     0,    0,    0,    0,    0,  138,  153,  154,  155,  156,
00601   157,  158,  159,  160,  161,  105,  153,  154,  155,  156,
00602   157,  158,  159,  160,  161,  105,    0,    0,  182,  183,
00603   153,  154,  155,  156,  157,  158,  159,  160,  161,  105,
00604   153,  154,  155,  156,  157,  158,  159,  160,  161,  105,
00605   169,    0,    0,  169,    0,  169,  169,  169,  169,  169,
00606   169,  169,  169,  169,  169,    0,  169,  169,  169,  169,
00607   169,  169,    0,    0,    0,  162,    0,    0,    0,    0,
00608     0,  163,  164,  176,    0,  214,    0,    0,    0,    0,
00609     0,  163,  164,  215,    0,    0,    0,    0,    0,  214,
00610     0,    0,    0,    0,    0,  163,  164,    8,    9,  435,
00611    11,    0,   13,    0,   15,  163,  164,   18,    0,    0,
00612     0,    0,    0,    0,    0,    0,   27,    0,    0,    0,
00613     0,    0,    0,   34,   35,   36,   37,    0,    0,   40,
00614     0,    0,    0,    0,   45,    0,   47,   48,    0,    0,
00615    50,    0,   52,   53,    0,    0,   56,  394,  149,    0,
00616     0,   59,  163,  164,  326,  327,  328,  329,  330,  331,
00617   332,  333,    0,  334,  335,  336,  337,  338,  339,  402,
00618     0,    0,    0,    0,  163,  164,  326,  327,  328,  329,
00619   330,  331,  332,  333,    0,  334,  335,  336,  337,  338,
00620   339,  403,    0,    0,    0,    0,  163,  164,  326,  327,
00621   328,  329,  330,  331,  332,  333,    0,  334,  335,  336,
00622   337,  338,  339,  416,    0,    0,    0,    0,  163,  164,
00623   326,  327,  328,  329,  330,  331,  332,  333,    0,  334,
00624   335,  336,  337,  338,  339,  456,    0,    0,    0,    0,
00625   163,  164,  326,  327,  328,  329,  330,  331,  332,  333,
00626     0,  334,  335,  336,  337,  338,  339,  513,    0,    0,
00627     0,    0,  163,  164,  326,  327,  328,  329,  330,  331,
00628   332,  333,    0,  334,  335,  336,  337,  338,  339,  144,
00629     0,    0,    0,    0,  144,  144,  144,  144,  144,  144,
00630   144,  144,  144,  144,    0,  144,  144,  144,  144,  144,
00631   144,  510,    0,    0,  163,  164,  326,  327,  328,  329,
00632   330,  331,  332,  333,    0,  334,  335,  336,  337,  338,
00633   339,  163,  164,  326,  327,  328,  329,  330,  331,  332,
00634   333,    0,  334,  335,  336,  337,  338,  339,  144,  144,
00635   144,  144,  144,  144,  144,  144,  144,  144,    0,  144,
00636   144,  144,  144,  144,  144,
00637 };
00638 short yycheck[] = {                                      29,
00639   111,  236,  140,  122,   68,  180,  181,    3,   29,  119,
00640   130,   75,  348,    1,   30,   31,  349,    1,    1,  138,
00641   202,   33,   14,   39,   54,    1,   42,  436,  180,  181,
00642    46,   97,    1,    6,    1,   14,  100,   49,    1,   44,
00643    14,   14,  376,  275,    1,   57,  389,   14,   83,  231,
00644    85,    1,  162,  191,   14,   78,   84,  167,   86,   74,
00645    83,   76,  182,  183,  174,   95,   96,   97,  220,    1,
00646     1,    1,   14,   78,   82,  141,   99,   44,   75,  109,
00647   110,   78,  112,   75,  195,    1,   74,  117,  497,  110,
00648   120,  119,    1,    5,   78,  215,  216,    1,   82,  129,
00649   275,    1,   78,  133,  214,   14,  136,   74,  129,   78,
00650   140,   78,  142,  143,   84,   99,   86,  147,  452,  131,
00651    83,   78,   85,  275,   98,   98,   83,  470,   85,  240,
00652    99,   14,   99,   83,  162,   44,    1,    1,   98,  167,
00653    82,  205,   14,   75,   75,   75,  174,   78,   78,  119,
00654   382,  383,  384,  263,  264,  265,  266,  267,  494,   14,
00655   493,  191,   78,  345,  194,   74,   75,  197,   77,   78,
00656    78,   75,    1,   77,   74,   78,  351,   86,   87,   88,
00657    89,  245,   14,  213,   78,   14,  214,    1,   14,   78,
00658    99,   74,  162,   78,  429,  347,   99,  167,   83,  169,
00659   230,   74,   74,  233,  174,   99,   78,  382,  383,  384,
00660    75,   75,  233,   78,   78,   80,   81,  355,  234,   74,
00661    85,   85,  454,  455,  452,  457,  454,  455,   78,  457,
00662   382,  383,  384,   83,    1,  263,  264,  265,  266,  267,
00663    75,   78,  470,   78,  214,   74,  216,   14,   78,   75,
00664    83,   83,   85,   85,  224,  285,   82,  367,  433,   75,
00665   256,    1,   78,   78,   78,  417,   80,   81,   82,   83,
00666    84,   85,  242,   78,   14,   75,  269,  270,   78,  454,
00667   455,  274,  457,  435,   75,   83,   77,   78,    1,  259,
00668   401,  402,  262,  263,  264,  265,  266,  267,  268,   74,
00669    78,   14,  454,  455,   44,  457,   75,   74,   77,  279,
00670    84,   78,   86,   80,   81,   82,   83,   84,   85,    6,
00671    74,  351,  497,  351,   75,  355,  356,   78,  298,  393,
00672   449,   44,   74,   74,   74,   75,  400,   77,   78,  367,
00673   310,  311,   75,   75,    1,   78,   78,  317,   88,   89,
00674    75,    6,  322,   78,  324,  325,   74,   14,   74,   99,
00675    75,   74,   75,   78,   77,   78,  396,   74,   80,   81,
00676    82,   83,   84,   86,   87,   88,   89,   74,  348,   75,
00677   410,  351,   78,   14,   78,   75,   99,   44,   78,  359,
00678    75,  361,    1,   78,  364,   74,  122,  367,  368,  369,
00679   370,  371,  372,  433,   76,  433,  436,  518,  436,   78,
00680   380,   75,  138,  139,   78,    1,   75,   74,   75,   78,
00681    77,   78,  452,   75,  454,  455,   78,  457,   14,  540,
00682    87,   88,   89,   71,    1,   80,   81,   82,   83,   84,
00683   470,   75,   99,   83,   78,   74,  476,    1,  418,  419,
00684   420,  421,  422,  423,  424,  425,  426,  427,   44,   75,
00685    14,   75,   78,  433,   78,   83,   74,  497,  498,  497,
00686   196,   80,   81,   82,   83,   84,   85,   82,   83,   84,
00687   450,  207,  208,   82,   83,   84,    1,   74,   74,   84,
00688    44,   74,   78,   78,  220,  221,  222,  467,   76,   14,
00689    80,   78,   78,  473,   84,  475,   86,   78,   75,  235,
00690    74,   78,   14,   80,   81,   82,   83,  487,   85,   76,
00691    74,   75,   78,   77,   78,   84,  252,  497,  254,   44,
00692    75,  501,  258,   77,   88,   89,   85,   86,   87,  119,
00693    78,   78,   78,    1,   78,   99,   78,  517,   70,  275,
00694    80,   81,   82,   83,   84,   85,    1,   78,   81,   74,
00695    75,   75,   77,   78,  534,   80,   81,   76,  538,   14,
00696    85,   86,   87,   88,   89,   82,   91,   92,   93,   94,
00697    95,   96,  162,    1,   99,   78,   74,  167,   80,   81,
00698    82,   83,   84,   85,  174,   78,   14,   78,  178,   44,
00699   326,  327,  328,  329,  330,  331,  332,  333,   14,   14,
00700    75,   75,  192,   75,  340,  341,   75,   75,   75,  199,
00701    78,  347,   80,   81,   82,   83,   44,   85,  354,   75,
00702    75,   76,   77,   78,  214,   80,   81,   82,   83,   84,
00703    85,   86,   87,   88,   89,   75,   91,   92,   93,   94,
00704    95,   96,   78,    1,   99,    1,   74,   75,    1,   77,
00705    78,  387,    1,    1,    1,  391,  392,   85,   86,   87,
00706    88,   89,    1,   91,   92,   93,   94,   95,   96,    1,
00707     1,   99,  408,  263,  264,  265,  266,  267,    1,  269,
00708   270,    1,    1,    1,  274,    1,    1,    1,    1,   80,
00709    81,   82,   83,   84,   85,   14,    1,    1,    1,  289,
00710    91,   92,   93,   94,   95,   96,   78,    1,    1,    1,
00711    75,   75,  448,  449,    1,    5,    6,    7,    8,    9,
00712    10,   11,   12,   13,   14,   44,    1,    1,   75,  465,
00713     1,   78,   77,   80,   81,   82,   83,    1,   85,  484,
00714   211,  275,  476,   14,   75,  481,  289,   78,  181,   80,
00715    81,   82,   83,    1,   85,   74,   75,  447,   77,   78,
00716   396,  510,  354,  499,  497,  120,   14,   86,   87,   88,
00717    89,  491,  145,   44,  510,  137,  472,  367,  514,  433,
00718    99,  144,  134,  230,   74,   75,  376,  410,  465,  399,
00719    80,   81,   82,  486,   79,  146,   44,  367,   -1,  389,
00720    90,   -1,   -1,   -1,   75,   76,   77,   78,  398,   80,
00721    81,   82,   83,   84,   85,   86,   87,   88,   89,   -1,
00722    91,   92,   93,   94,   95,   96,   74,   75,   99,   77,
00723    78,   -1,   80,   81,   82,   83,    1,   85,   86,   87,
00724    88,   89,   -1,   91,   92,   93,   94,   95,   96,   14,
00725    -1,   99,   80,   81,   82,   83,   84,   85,   86,    1,
00726    -1,   -1,  452,   91,   92,   93,   94,   95,   96,   -1,
00727    -1,   -1,   14,   -1,   -1,   -1,   -1,   -1,   -1,   44,
00728   470,   -1,    1,   78,   -1,   80,   81,   82,   83,   84,
00729    85,   86,   87,   88,   89,   14,   91,   92,   93,   94,
00730    95,   96,   44,   -1,   -1,   -1,   -1,   -1,   -1,   74,
00731    75,   -1,   77,   78,   -1,   80,   81,   82,   83,   -1,
00732    85,   86,   87,   88,   89,   44,   91,   92,   93,   94,
00733    95,   96,   74,   75,   99,   77,   78,   -1,   80,   81,
00734    82,   83,   -1,   85,   86,   87,   88,   89,   -1,   91,
00735    92,   93,   94,   95,   96,   74,   75,   99,   77,   78,
00736    -1,   80,   81,   82,   83,   -1,   85,   86,   87,   88,
00737    89,    4,   91,   92,   93,   94,   95,   96,   -1,   -1,
00738    99,   -1,   -1,   -1,   -1,   18,   19,   20,   21,   22,
00739    23,   24,   25,   26,   27,   28,   29,   30,   31,   32,
00740    33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
00741    43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
00742    53,   54,   55,   56,   57,   58,   59,   60,    1,   62,
00743    63,   64,   65,   66,   67,   68,   69,   -1,   -1,   72,
00744    73,   -1,   -1,   -1,   -1,   -1,   -1,   21,   -1,   -1,
00745     1,   25,   -1,   -1,   28,   -1,   -1,   31,   32,   -1,
00746    34,   -1,   -1,   -1,   97,   -1,   -1,  100,   -1,    1,
00747    80,   81,   82,   83,   84,   85,   86,   87,   52,   -1,
00748    54,   91,   92,   93,   94,   95,   96,   -1,    1,   63,
00749    -1,   -1,   -1,   67,   -1,   -1,   -1,   -1,   72,   -1,
00750    -1,   -1,   75,   -1,   -1,   78,   -1,   80,   81,   82,
00751    83,   84,   85,   86,   87,   88,   89,    1,   91,   92,
00752    93,   94,   95,   96,   75,   -1,  100,   78,   -1,   80,
00753    81,   82,   83,   84,   85,   86,   87,   88,   89,    1,
00754    91,   92,   93,   94,   95,   96,   78,   -1,   80,   81,
00755    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
00756    92,   93,   94,   95,   96,   78,   -1,   80,   81,   82,
00757    83,   84,   85,   86,   87,   88,   89,   -1,   91,   92,
00758    93,   94,   95,   96,    5,    6,    7,    8,    9,   10,
00759    11,   12,   13,   14,   78,   -1,   80,   81,   82,   83,
00760    84,   85,   86,   87,   88,   89,   -1,   91,   92,   93,
00761    94,   95,   96,   -1,   -1,   -1,   -1,   -1,   80,   81,
00762    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
00763    92,   93,   94,   95,   96,    5,    6,    7,    8,    9,
00764    10,   11,   12,   13,   14,   -1,   -1,   -1,   -1,   -1,
00765    -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,   -1,   80,
00766    81,   82,   -1,   84,   -1,   -1,   -1,   -1,   -1,   90,
00767     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
00768    -1,    5,    6,    7,    8,    9,   10,   11,   12,   13,
00769    14,   -1,    5,    6,    7,    8,    9,   10,   11,   12,
00770    13,   14,   -1,   -1,   74,   -1,   -1,   -1,   75,   -1,
00771    80,   81,   82,   80,   81,   82,   83,   84,   85,   -1,
00772    90,    5,    6,    7,    8,    9,   10,   11,   12,   13,
00773    14,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   74,
00774    -1,   -1,   -1,   -1,   -1,   80,   81,   82,   -1,   -1,
00775    74,   -1,   -1,   -1,   -1,   90,   80,   81,   82,   -1,
00776    -1,   74,   -1,   -1,   75,   -1,   90,   80,   81,   80,
00777    81,   82,   83,   84,   85,   -1,   -1,   90,    5,    6,
00778     7,    8,    9,   10,   11,   12,   13,   14,   -1,   -1,
00779    74,   -1,   -1,   75,   -1,   -1,   80,   81,   80,   81,
00780    82,   83,   84,   85,   -1,   -1,   90,    5,    6,    7,
00781     8,    9,   10,   11,   12,   13,   14,   -1,    5,    6,
00782     7,    8,    9,   10,   11,   12,   13,   14,   15,    5,
00783     6,    7,    8,    9,   10,   11,   12,   13,   14,   -1,
00784    -1,   -1,   -1,   -1,   -1,   -1,   -1,   74,   -1,   -1,
00785    -1,   -1,   -1,   80,   81,   -1,   -1,   -1,   -1,   -1,
00786    -1,   -1,   -1,   90,    5,    6,    7,    8,    9,   10,
00787    11,   12,   13,   14,   -1,   -1,   74,   -1,   -1,   -1,
00788    -1,   -1,   80,   81,   -1,   -1,   -1,   74,   -1,   -1,
00789    -1,   -1,   90,   80,   81,   82,   -1,   84,   74,   -1,
00790    -1,   -1,   13,   -1,   80,   81,   82,   18,   84,   -1,
00791    -1,   22,   -1,   24,   25,   26,   -1,   28,   -1,   -1,
00792    -1,   -1,   -1,   34,   35,   36,   37,   38,   -1,   -1,
00793    -1,   -1,   -1,   -1,   -1,   -1,   -1,   48,   -1,   50,
00794    -1,   52,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
00795    -1,   -1,   -1,   -1,   -1,   66,    5,    6,    7,    8,
00796     9,   10,   11,   12,   13,   14,    5,    6,    7,    8,
00797     9,   10,   11,   12,   13,   14,   -1,   -1,   89,   90,
00798     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
00799     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
00800    75,   -1,   -1,   78,   -1,   80,   81,   82,   83,   84,
00801    85,   86,   87,   88,   89,   -1,   91,   92,   93,   94,
00802    95,   96,   -1,   -1,   -1,   74,   -1,   -1,   -1,   -1,
00803    -1,   80,   81,   82,   -1,   74,   -1,   -1,   -1,   -1,
00804    -1,   80,   81,   82,   -1,   -1,   -1,   -1,   -1,   74,
00805    -1,   -1,   -1,   -1,   -1,   80,   81,   19,   20,   74,
00806    22,   -1,   24,   -1,   26,   80,   81,   29,   -1,   -1,
00807    -1,   -1,   -1,   -1,   -1,   -1,   38,   -1,   -1,   -1,
00808    -1,   -1,   -1,   45,   46,   47,   48,   -1,   -1,   51,
00809    -1,   -1,   -1,   -1,   56,   -1,   58,   59,   -1,   -1,
00810    62,   -1,   64,   65,   -1,   -1,   68,   75,   70,   -1,
00811    -1,   73,   80,   81,   82,   83,   84,   85,   86,   87,
00812    88,   89,   -1,   91,   92,   93,   94,   95,   96,   75,
00813    -1,   -1,   -1,   -1,   80,   81,   82,   83,   84,   85,
00814    86,   87,   88,   89,   -1,   91,   92,   93,   94,   95,
00815    96,   75,   -1,   -1,   -1,   -1,   80,   81,   82,   83,
00816    84,   85,   86,   87,   88,   89,   -1,   91,   92,   93,
00817    94,   95,   96,   75,   -1,   -1,   -1,   -1,   80,   81,
00818    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
00819    92,   93,   94,   95,   96,   75,   -1,   -1,   -1,   -1,
00820    80,   81,   82,   83,   84,   85,   86,   87,   88,   89,
00821    -1,   91,   92,   93,   94,   95,   96,   75,   -1,   -1,
00822    -1,   -1,   80,   81,   82,   83,   84,   85,   86,   87,
00823    88,   89,   -1,   91,   92,   93,   94,   95,   96,   75,
00824    -1,   -1,   -1,   -1,   80,   81,   82,   83,   84,   85,
00825    86,   87,   88,   89,   -1,   91,   92,   93,   94,   95,
00826    96,   77,   -1,   -1,   80,   81,   82,   83,   84,   85,
00827    86,   87,   88,   89,   -1,   91,   92,   93,   94,   95,
00828    96,   80,   81,   82,   83,   84,   85,   86,   87,   88,
00829    89,   -1,   91,   92,   93,   94,   95,   96,   80,   81,
00830    82,   83,   84,   85,   86,   87,   88,   89,   -1,   91,
00831    92,   93,   94,   95,   96,
00832 };
00833 #define YYFINAL 1
00834 #ifndef YYDEBUG
00835 #define YYDEBUG 0
00836 #endif
00837 #define YYMAXTOKEN 100
00838 #if YYDEBUG
00839 char *yyname[] = {
00840 "end-of-file","SEOS","SCOMMENT","SLABEL","SUNKNOWN","SHOLLERITH","SICON",
00841 "SRCON","SDCON","SBITCON","SOCTCON","SHEXCON","STRUE","SFALSE","SNAME",
00842 "SNAMEEQ","SFIELD","SSCALE","SINCLUDE","SLET","SASSIGN","SAUTOMATIC",
00843 "SBACKSPACE","SBLOCK","SCALL","SCHARACTER","SCLOSE","SCOMMON","SCOMPLEX",
00844 "SCONTINUE","SDATA","SDCOMPLEX","SDIMENSION","SDO","SDOUBLE","SELSE","SELSEIF",
00845 "SEND","SENDFILE","SENDIF","SENTRY","SEQUIV","SEXTERNAL","SFORMAT","SFUNCTION",
00846 "SGOTO","SASGOTO","SCOMPGOTO","SARITHIF","SLOGIF","SIMPLICIT","SINQUIRE",
00847 "SINTEGER","SINTRINSIC","SLOGICAL","SNAMELIST","SOPEN","SPARAM","SPAUSE",
00848 "SPRINT","SPROGRAM","SPUNCH","SREAD","SREAL","SRETURN","SREWIND","SSAVE",
00849 "SSTATIC","SSTOP","SSUBROUTINE","STHEN","STO","SUNDEFINED","SWRITE","SLPAR",
00850 "SRPAR","SEQUALS","SCOLON","SCOMMA","SCURRENCY","SPLUS","SMINUS","SSTAR",
00851 "SSLASH","SPOWER","SCONCAT","SAND","SOR","SNEQV","SEQV","SNOT","SEQ","SLT",
00852 "SGT","SLE","SGE","SNE","SENDDO","SWHILE","SSLASHD","SBYTE",
00853 };
00854 char *yyrule[] = {
00855 "$accept : program",
00856 "program :",
00857 "program : program stat SEOS",
00858 "stat : thislabel entry",
00859 "stat : thislabel spec",
00860 "stat : thislabel exec",
00861 "stat : thislabel SINCLUDE filename",
00862 "stat : thislabel SEND end_spec",
00863 "stat : thislabel SUNKNOWN",
00864 "stat : error",
00865 "thislabel : SLABEL",
00866 "entry : SPROGRAM new_proc progname",
00867 "entry : SPROGRAM new_proc progname progarglist",
00868 "entry : SBLOCK new_proc progname",
00869 "entry : SSUBROUTINE new_proc entryname arglist",
00870 "entry : SFUNCTION new_proc entryname arglist",
00871 "entry : type SFUNCTION new_proc entryname arglist",
00872 "entry : SENTRY entryname arglist",
00873 "new_proc :",
00874 "entryname : name",
00875 "name : SNAME",
00876 "progname :",
00877 "progname : entryname",
00878 "progarglist : SLPAR SRPAR",
00879 "progarglist : SLPAR progargs SRPAR",
00880 "progargs : progarg",
00881 "progargs : progargs SCOMMA progarg",
00882 "progarg : SNAME",
00883 "progarg : SNAME SEQUALS SNAME",
00884 "arglist :",
00885 "arglist : SLPAR SRPAR",
00886 "arglist : SLPAR args SRPAR",
00887 "args : arg",
00888 "args : args SCOMMA arg",
00889 "arg : name",
00890 "arg : SSTAR",
00891 "filename : SHOLLERITH",
00892 "spec : dcl",
00893 "spec : common",
00894 "spec : external",
00895 "spec : intrinsic",
00896 "spec : equivalence",
00897 "spec : data",
00898 "spec : implicit",
00899 "spec : namelist",
00900 "spec : SSAVE",
00901 "spec : SSAVE savelist",
00902 "spec : SFORMAT",
00903 "spec : SPARAM in_dcl SLPAR paramlist SRPAR",
00904 "dcl : type opt_comma name in_dcl new_dcl dims lengspec",
00905 "dcl : dcl SCOMMA name dims lengspec",
00906 "dcl : dcl SSLASHD datainit vallist SSLASHD",
00907 "new_dcl :",
00908 "type : typespec lengspec",
00909 "typespec : typename",
00910 "typename : SINTEGER",
00911 "typename : SREAL",
00912 "typename : SCOMPLEX",
00913 "typename : SDOUBLE",
00914 "typename : SDCOMPLEX",
00915 "typename : SLOGICAL",
00916 "typename : SCHARACTER",
00917 "typename : SUNDEFINED",
00918 "typename : SDIMENSION",
00919 "typename : SAUTOMATIC",
00920 "typename : SSTATIC",
00921 "typename : SBYTE",
00922 "lengspec :",
00923 "lengspec : SSTAR intonlyon expr intonlyoff",
00924 "lengspec : SSTAR intonlyon SLPAR SSTAR SRPAR intonlyoff",
00925 "common : SCOMMON in_dcl var",
00926 "common : SCOMMON in_dcl comblock var",
00927 "common : common opt_comma comblock opt_comma var",
00928 "common : common SCOMMA var",
00929 "comblock : SCONCAT",
00930 "comblock : SSLASH SNAME SSLASH",
00931 "external : SEXTERNAL in_dcl name",
00932 "external : external SCOMMA name",
00933 "intrinsic : SINTRINSIC in_dcl name",
00934 "intrinsic : intrinsic SCOMMA name",
00935 "equivalence : SEQUIV in_dcl equivset",
00936 "equivalence : equivalence SCOMMA equivset",
00937 "equivset : SLPAR equivlist SRPAR",
00938 "equivlist : lhs",
00939 "equivlist : equivlist SCOMMA lhs",
00940 "data : SDATA in_data datalist",
00941 "data : data opt_comma datalist",
00942 "in_data :",
00943 "datalist : datainit datavarlist SSLASH datapop vallist SSLASH",
00944 "datainit :",
00945 "datapop :",
00946 "$$1 :",
00947 "vallist : $$1 val",
00948 "vallist : vallist SCOMMA val",
00949 "val : value",
00950 "val : simple SSTAR value",
00951 "value : simple",
00952 "value : addop simple",
00953 "value : complex_const",
00954 "savelist : saveitem",
00955 "savelist : savelist SCOMMA saveitem",
00956 "saveitem : name",
00957 "saveitem : comblock",
00958 "paramlist : paramitem",
00959 "paramlist : paramlist SCOMMA paramitem",
00960 "paramitem : name SEQUALS expr",
00961 "var : name dims",
00962 "datavar : lhs",
00963 "datavar : SLPAR datavarlist SCOMMA dospec SRPAR",
00964 "datavarlist : datavar",
00965 "datavarlist : datavarlist SCOMMA datavar",
00966 "dims :",
00967 "dims : SLPAR dimlist SRPAR",
00968 "$$2 :",
00969 "dimlist : $$2 dim",
00970 "dimlist : dimlist SCOMMA dim",
00971 "dim : ubound",
00972 "dim : expr SCOLON ubound",
00973 "ubound : SSTAR",
00974 "ubound : expr",
00975 "labellist : label",
00976 "labellist : labellist SCOMMA label",
00977 "label : SICON",
00978 "implicit : SIMPLICIT in_dcl implist",
00979 "implicit : implicit SCOMMA implist",
00980 "implist : imptype SLPAR letgroups SRPAR",
00981 "implist : imptype",
00982 "$$3 :",
00983 "imptype : $$3 type",
00984 "letgroups : letgroup",
00985 "letgroups : letgroups SCOMMA letgroup",
00986 "letgroup : letter",
00987 "letgroup : letter SMINUS letter",
00988 "letter : SNAME",
00989 "namelist : SNAMELIST",
00990 "namelist : namelist namelistentry",
00991 "namelistentry : SSLASH name SSLASH namelistlist",
00992 "namelistlist : name",
00993 "namelistlist : namelistlist SCOMMA name",
00994 "in_dcl :",
00995 "funarglist :",
00996 "funarglist : funargs",
00997 "funargs : expr",
00998 "funargs : funargs SCOMMA expr",
00999 "expr : uexpr",
01000 "expr : SLPAR expr SRPAR",
01001 "expr : complex_const",
01002 "uexpr : lhs",
01003 "uexpr : simple_const",
01004 "uexpr : expr addop expr",
01005 "uexpr : expr SSTAR expr",
01006 "uexpr : expr SSLASH expr",
01007 "uexpr : expr SPOWER expr",
01008 "uexpr : addop expr",
01009 "uexpr : expr relop expr",
01010 "uexpr : expr SEQV expr",
01011 "uexpr : expr SNEQV expr",
01012 "uexpr : expr SOR expr",
01013 "uexpr : expr SAND expr",
01014 "uexpr : SNOT expr",
01015 "uexpr : expr SCONCAT expr",
01016 "addop : SPLUS",
01017 "addop : SMINUS",
01018 "relop : SEQ",
01019 "relop : SGT",
01020 "relop : SLT",
01021 "relop : SGE",
01022 "relop : SLE",
01023 "relop : SNE",
01024 "lhs : name",
01025 "lhs : name substring",
01026 "lhs : name SLPAR funarglist SRPAR",
01027 "lhs : name SLPAR funarglist SRPAR substring",
01028 "substring : SLPAR opt_expr SCOLON opt_expr SRPAR",
01029 "opt_expr :",
01030 "opt_expr : expr",
01031 "simple : name",
01032 "simple : simple_const",
01033 "simple_const : STRUE",
01034 "simple_const : SFALSE",
01035 "simple_const : SHOLLERITH",
01036 "simple_const : SICON",
01037 "simple_const : SRCON",
01038 "simple_const : SDCON",
01039 "simple_const : bit_const",
01040 "complex_const : SLPAR uexpr SCOMMA uexpr SRPAR",
01041 "bit_const : SHEXCON",
01042 "bit_const : SOCTCON",
01043 "bit_const : SBITCON",
01044 "fexpr : unpar_fexpr",
01045 "fexpr : SLPAR fexpr SRPAR",
01046 "unpar_fexpr : lhs",
01047 "unpar_fexpr : simple_const",
01048 "unpar_fexpr : fexpr addop fexpr",
01049 "unpar_fexpr : fexpr SSTAR fexpr",
01050 "unpar_fexpr : fexpr SSLASH fexpr",
01051 "unpar_fexpr : fexpr SPOWER fexpr",
01052 "unpar_fexpr : addop fexpr",
01053 "unpar_fexpr : fexpr SCONCAT fexpr",
01054 "exec : iffable",
01055 "exec : SDO end_spec intonlyon label intonlyoff opt_comma dospecw",
01056 "exec : SDO end_spec opt_comma dospecw",
01057 "exec : SENDDO",
01058 "exec : logif iffable",
01059 "exec : logif STHEN",
01060 "exec : SELSEIF end_spec SLPAR expr SRPAR STHEN",
01061 "exec : SELSE end_spec",
01062 "exec : SENDIF end_spec",
01063 "logif : SLOGIF end_spec SLPAR expr SRPAR",
01064 "dospec : name SEQUALS exprlist",
01065 "dospecw : dospec",
01066 "dospecw : SWHILE SLPAR expr SRPAR",
01067 "iffable : let lhs SEQUALS expr",
01068 "iffable : SASSIGN end_spec assignlabel STO name",
01069 "iffable : SCONTINUE end_spec",
01070 "iffable : goto",
01071 "iffable : io",
01072 "iffable : SARITHIF end_spec SLPAR expr SRPAR label SCOMMA label SCOMMA label",
01073 "iffable : call",
01074 "iffable : call SLPAR SRPAR",
01075 "iffable : call SLPAR callarglist SRPAR",
01076 "iffable : SRETURN end_spec opt_expr",
01077 "iffable : stop end_spec opt_expr",
01078 "assignlabel : SICON",
01079 "let : SLET",
01080 "goto : SGOTO end_spec label",
01081 "goto : SASGOTO end_spec name",
01082 "goto : SASGOTO end_spec name opt_comma SLPAR labellist SRPAR",
01083 "goto : SCOMPGOTO end_spec SLPAR labellist SRPAR opt_comma expr",
01084 "opt_comma :",
01085 "opt_comma : SCOMMA",
01086 "call : SCALL end_spec name",
01087 "callarglist : callarg",
01088 "callarglist : callarglist SCOMMA callarg",
01089 "callarg : expr",
01090 "callarg : SSTAR label",
01091 "stop : SPAUSE",
01092 "stop : SSTOP",
01093 "exprlist : expr",
01094 "exprlist : exprlist SCOMMA expr",
01095 "end_spec :",
01096 "intonlyon :",
01097 "intonlyoff :",
01098 "io : io1",
01099 "io1 : iofmove ioctl",
01100 "io1 : iofmove unpar_fexpr",
01101 "io1 : iofmove SSTAR",
01102 "io1 : iofmove SPOWER",
01103 "io1 : iofctl ioctl",
01104 "io1 : read ioctl",
01105 "io1 : read infmt",
01106 "io1 : read ioctl inlist",
01107 "io1 : read infmt SCOMMA inlist",
01108 "io1 : read ioctl SCOMMA inlist",
01109 "io1 : write ioctl",
01110 "io1 : write ioctl outlist",
01111 "io1 : print",
01112 "io1 : print SCOMMA outlist",
01113 "iofmove : fmkwd end_spec in_ioctl",
01114 "fmkwd : SBACKSPACE",
01115 "fmkwd : SREWIND",
01116 "fmkwd : SENDFILE",
01117 "iofctl : ctlkwd end_spec in_ioctl",
01118 "ctlkwd : SINQUIRE",
01119 "ctlkwd : SOPEN",
01120 "ctlkwd : SCLOSE",
01121 "infmt : unpar_fexpr",
01122 "infmt : SSTAR",
01123 "ioctl : SLPAR fexpr SRPAR",
01124 "ioctl : SLPAR ctllist SRPAR",
01125 "ctllist : ioclause",
01126 "ctllist : ctllist SCOMMA ioclause",
01127 "ioclause : fexpr",
01128 "ioclause : SSTAR",
01129 "ioclause : SPOWER",
01130 "ioclause : nameeq expr",
01131 "ioclause : nameeq SSTAR",
01132 "ioclause : nameeq SPOWER",
01133 "nameeq : SNAMEEQ",
01134 "read : SREAD end_spec in_ioctl",
01135 "write : SWRITE end_spec in_ioctl",
01136 "print : SPRINT end_spec fexpr in_ioctl",
01137 "print : SPRINT end_spec SSTAR in_ioctl",
01138 "inlist : inelt",
01139 "inlist : inlist SCOMMA inelt",
01140 "inelt : lhs",
01141 "inelt : SLPAR inlist SCOMMA dospec SRPAR",
01142 "outlist : uexpr",
01143 "outlist : other",
01144 "outlist : out2",
01145 "out2 : uexpr SCOMMA uexpr",
01146 "out2 : uexpr SCOMMA other",
01147 "out2 : other SCOMMA uexpr",
01148 "out2 : other SCOMMA other",
01149 "out2 : out2 SCOMMA uexpr",
01150 "out2 : out2 SCOMMA other",
01151 "other : complex_const",
01152 "other : SLPAR expr SRPAR",
01153 "other : SLPAR uexpr SCOMMA dospec SRPAR",
01154 "other : SLPAR other SCOMMA dospec SRPAR",
01155 "other : SLPAR out2 SCOMMA dospec SRPAR",
01156 "in_ioctl :",
01157 };
01158 #endif
01159 #ifdef YYSTACKSIZE
01160 #undef YYMAXDEPTH
01161 #define YYMAXDEPTH YYSTACKSIZE
01162 #else
01163 #ifdef YYMAXDEPTH
01164 #define YYSTACKSIZE YYMAXDEPTH
01165 #else
01166 #define YYSTACKSIZE 10000
01167 #define YYMAXDEPTH 10000
01168 #endif
01169 #endif
01170 #define YYINITSTACKSIZE 200
01171 int yydebug;
01172 int yynerrs;
01173 int yyerrflag;
01174 int yychar;
01175 short *yyssp;
01176 YYSTYPE *yyvsp;
01177 YYSTYPE yyval;
01178 YYSTYPE yylval;
01179 short *yyss;
01180 short *yysslim;
01181 YYSTYPE *yyvs;
01182 int yystacksize;
01183 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
01184 int yyparse __P((void));
01185 static int yygrowstack __P((void));
01186 static int yygrowstack()
01187 {
01188     int newsize, i;
01189     short *newss;
01190     YYSTYPE *newvs;
01191 
01192     if ((newsize = yystacksize) == 0)
01193         newsize = YYINITSTACKSIZE;
01194     else if (newsize >= YYMAXDEPTH)
01195         return -1;
01196     else if ((newsize *= 2) > YYMAXDEPTH)
01197         newsize = YYMAXDEPTH;
01198     i = yyssp - yyss;
01199     if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
01200         return -1;
01201     yyss = newss;
01202     yyssp = newss + i;
01203     if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
01204         return -1;
01205     yyvs = newvs;
01206     yyvsp = newvs + i;
01207     yystacksize = newsize;
01208     yysslim = yyss + newsize - 1;
01209     return 0;
01210 }
01211 
01212 #define YYABORT goto yyabort
01213 #define YYREJECT goto yyabort
01214 #define YYACCEPT goto yyaccept
01215 #define YYERROR goto yyerrlab
01216 int
01217 yyparse()
01218 {
01219     int yym, yyn, yystate;
01220 #if YYDEBUG
01221     char *yys;
01222 
01223     if ((yys = getenv("YYDEBUG")) != NULL)
01224     {
01225         yyn = *yys;
01226         if (yyn >= '0' && yyn <= '9')
01227             yydebug = yyn - '0';
01228     }
01229 #endif
01230 
01231     yynerrs = 0;
01232     yyerrflag = 0;
01233     yychar = (-1);
01234 
01235     if (yyss == NULL && yygrowstack()) goto yyoverflow;
01236     yyssp = yyss;
01237     yyvsp = yyvs;
01238     *yyssp = yystate = 0;
01239 
01240 yyloop:
01241     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
01242     if (yychar < 0)
01243     {
01244         if ((yychar = yylex()) < 0) yychar = 0;
01245 #if YYDEBUG
01246         if (yydebug)
01247         {
01248             yys = 0;
01249             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
01250             if (!yys) yys = "illegal-symbol";
01251             printf("%sdebug: state %d, reading %d (%s)\n",
01252                     YYPREFIX, yystate, yychar, yys);
01253         }
01254 #endif
01255     }
01256     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
01257             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
01258     {
01259 #if YYDEBUG
01260         if (yydebug)
01261             printf("%sdebug: state %d, shifting to state %d\n",
01262                     YYPREFIX, yystate, yytable[yyn]);
01263 #endif
01264         if (yyssp >= yysslim && yygrowstack())
01265         {
01266             goto yyoverflow;
01267         }
01268         *++yyssp = yystate = yytable[yyn];
01269         *++yyvsp = yylval;
01270         yychar = (-1);
01271         if (yyerrflag > 0)  --yyerrflag;
01272         goto yyloop;
01273     }
01274     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
01275             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
01276     {
01277         yyn = yytable[yyn];
01278         goto yyreduce;
01279     }
01280     if (yyerrflag) goto yyinrecovery;
01281     goto yynewerror;
01282 yynewerror:
01283     yyerror("syntax error");
01284     goto yyerrlab;
01285 yyerrlab:
01286     ++yynerrs;
01287 yyinrecovery:
01288     if (yyerrflag < 3)
01289     {
01290         yyerrflag = 3;
01291         for (;;)
01292         {
01293             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
01294                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
01295             {
01296 #if YYDEBUG
01297                 if (yydebug)
01298                     printf("%sdebug: state %d, error recovery shifting\
01299  to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
01300 #endif
01301                 if (yyssp >= yysslim && yygrowstack())
01302                 {
01303                     goto yyoverflow;
01304                 }
01305                 *++yyssp = yystate = yytable[yyn];
01306                 *++yyvsp = yylval;
01307                 goto yyloop;
01308             }
01309             else
01310             {
01311 #if YYDEBUG
01312                 if (yydebug)
01313                     printf("%sdebug: error recovery discarding state %d\n",
01314                             YYPREFIX, *yyssp);
01315 #endif
01316                 if (yyssp <= yyss) goto yyabort;
01317                 --yyssp;
01318                 --yyvsp;
01319             }
01320         }
01321     }
01322     else
01323     {
01324         if (yychar == 0) goto yyabort;
01325 #if YYDEBUG
01326         if (yydebug)
01327         {
01328             yys = 0;
01329             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
01330             if (!yys) yys = "illegal-symbol";
01331             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
01332                     YYPREFIX, yystate, yychar, yys);
01333         }
01334 #endif
01335         yychar = (-1);
01336         goto yyloop;
01337     }
01338 yyreduce:
01339 #if YYDEBUG
01340     if (yydebug)
01341         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
01342                 YYPREFIX, yystate, yyn, yyrule[yyn]);
01343 #endif
01344     yym = yylen[yyn];
01345     yyval = yyvsp[1-yym];
01346     switch (yyn)
01347     {
01348 case 3:
01349 #line 219 "gram.in"
01350 {
01351 /* stat:   is the nonterminal for Fortran statements */
01352 
01353                   lastwasbranch = NO; }
01354 break;
01355 case 5:
01356 #line 225 "gram.in"
01357 { /* forbid further statement function definitions... */
01358                   if (parstate == INDATA && laststfcn != thisstno)
01359                         parstate = INEXEC;
01360                   thisstno++;
01361                   if(yyvsp[-1].labval && (yyvsp[-1].labval->labelno==dorange))
01362                         enddo(yyvsp[-1].labval->labelno);
01363                   if(lastwasbranch && thislabel==NULL)
01364                         warn("statement cannot be reached");
01365                   lastwasbranch = thiswasbranch;
01366                   thiswasbranch = NO;
01367                   if(yyvsp[-1].labval)
01368                         {
01369                         if(yyvsp[-1].labval->labtype == LABFORMAT)
01370                                 err("label already that of a format");
01371                         else
01372                                 yyvsp[-1].labval->labtype = LABEXEC;
01373                         }
01374                   freetemps();
01375                 }
01376 break;
01377 case 6:
01378 #line 245 "gram.in"
01379 { if (can_include)
01380                         doinclude( yyvsp[0].charpval );
01381                   else {
01382                         fprintf(diagfile, "Cannot open file %s\n", yyvsp[0].charpval);
01383                         done(1);
01384                         }
01385                 }
01386 break;
01387 case 7:
01388 #line 253 "gram.in"
01389 { if (yyvsp[-2].labval)
01390                         lastwasbranch = NO;
01391                   endproc(); /* lastwasbranch = NO; -- set in endproc() */
01392                 }
01393 break;
01394 case 8:
01395 #line 258 "gram.in"
01396 { unclassifiable();
01397 
01398 /* flline flushes the current line, ignoring the rest of the text there */
01399 
01400                   flline(); }
01401 break;
01402 case 9:
01403 #line 264 "gram.in"
01404 { flline();  needkwd = NO;  inioctl = NO;
01405                   yyerrok; yyclearin; }
01406 break;
01407 case 10:
01408 #line 269 "gram.in"
01409 {
01410                 if(yystno != 0)
01411                         {
01412                         yyval.labval = thislabel =  mklabel(yystno);
01413                         if( ! headerdone ) {
01414                                 if (procclass == CLUNKNOWN)
01415                                         procclass = CLMAIN;
01416                                 puthead(CNULL, procclass);
01417                                 }
01418                         if(thislabel->labdefined)
01419                                 execerr("label %s already defined",
01420                                         convic(thislabel->stateno) );
01421                         else    {
01422                                 if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel
01423                                     && thislabel->labtype!=LABFORMAT)
01424                                         warn1("there is a branch to label %s from outside block",
01425                                               convic( (ftnint) (thislabel->stateno) ) );
01426                                 thislabel->blklevel = blklevel;
01427                                 thislabel->labdefined = YES;
01428                                 if(thislabel->labtype != LABFORMAT)
01429                                         p1_label((long)(thislabel - labeltab));
01430                                 }
01431                         }
01432                 else    yyval.labval = thislabel = NULL;
01433                 }
01434 break;
01435 case 11:
01436 #line 297 "gram.in"
01437 {startproc(yyvsp[0].extval, CLMAIN); }
01438 break;
01439 case 12:
01440 #line 299 "gram.in"
01441 {       warn("ignoring arguments to main program");
01442                         /* hashclear(); */
01443                         startproc(yyvsp[-1].extval, CLMAIN); }
01444 break;
01445 case 13:
01446 #line 303 "gram.in"
01447 { if(yyvsp[0].extval) NO66("named BLOCKDATA");
01448                   startproc(yyvsp[0].extval, CLBLOCK); }
01449 break;
01450 case 14:
01451 #line 306 "gram.in"
01452 { entrypt(CLPROC, TYSUBR, (ftnint) 0,  yyvsp[-1].extval, yyvsp[0].chval); }
01453 break;
01454 case 15:
01455 #line 308 "gram.in"
01456 { entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval); }
01457 break;
01458 case 16:
01459 #line 310 "gram.in"
01460 { entrypt(CLPROC, yyvsp[-4].ival, varleng, yyvsp[-1].extval, yyvsp[0].chval); }
01461 break;
01462 case 17:
01463 #line 312 "gram.in"
01464 { if(parstate==OUTSIDE || procclass==CLMAIN
01465                         || procclass==CLBLOCK)
01466                                 execerr("misplaced entry statement", CNULL);
01467                   entrypt(CLENTRY, 0, (ftnint) 0, yyvsp[-1].extval, yyvsp[0].chval);
01468                 }
01469 break;
01470 case 18:
01471 #line 320 "gram.in"
01472 { newproc(); }
01473 break;
01474 case 19:
01475 #line 324 "gram.in"
01476 { yyval.extval = newentry(yyvsp[0].namval, 1); }
01477 break;
01478 case 20:
01479 #line 328 "gram.in"
01480 { yyval.namval = mkname(token); }
01481 break;
01482 case 21:
01483 #line 331 "gram.in"
01484 { yyval.extval = NULL; }
01485 break;
01486 case 29:
01487 #line 349 "gram.in"
01488 { yyval.chval = 0; }
01489 break;
01490 case 30:
01491 #line 351 "gram.in"
01492 { NO66(" () argument list");
01493                   yyval.chval = 0; }
01494 break;
01495 case 31:
01496 #line 354 "gram.in"
01497 {yyval.chval = yyvsp[-1].chval; }
01498 break;
01499 case 32:
01500 #line 358 "gram.in"
01501 { yyval.chval = (yyvsp[0].namval ? mkchain((char *)yyvsp[0].namval,CHNULL) : CHNULL ); }
01502 break;
01503 case 33:
01504 #line 360 "gram.in"
01505 { if(yyvsp[0].namval) yyvsp[-2].chval = yyval.chval = mkchain((char *)yyvsp[0].namval, yyvsp[-2].chval); }
01506 break;
01507 case 34:
01508 #line 364 "gram.in"
01509 { if(yyvsp[0].namval->vstg!=STGUNKNOWN && yyvsp[0].namval->vstg!=STGARG)
01510                         dclerr("name declared as argument after use", yyvsp[0].namval);
01511                   yyvsp[0].namval->vstg = STGARG;
01512                 }
01513 break;
01514 case 35:
01515 #line 369 "gram.in"
01516 { NO66("altenate return argument");
01517 
01518 /* substars   means that '*'ed formal parameters should be replaced.
01519    This is used to specify alternate return labels; in theory, only
01520    parameter slots which have '*' should accept the statement labels.
01521    This compiler chooses to ignore the '*'s in the formal declaration, and
01522    always return the proper value anyway.
01523 
01524    This variable is only referred to in   proc.c   */
01525 
01526                   yyval.namval = 0;  substars = YES; }
01527 break;
01528 case 36:
01529 #line 385 "gram.in"
01530 {
01531                 char *s;
01532                 s = copyn(toklen+1, token);
01533                 s[toklen] = '\0';
01534                 yyval.charpval = s;
01535                 }
01536 break;
01537 case 45:
01538 #line 401 "gram.in"
01539 { NO66("SAVE statement");
01540                   saveall = YES; }
01541 break;
01542 case 46:
01543 #line 404 "gram.in"
01544 { NO66("SAVE statement"); }
01545 break;
01546 case 47:
01547 #line 406 "gram.in"
01548 { fmtstmt(thislabel); setfmt(thislabel); }
01549 break;
01550 case 48:
01551 #line 408 "gram.in"
01552 { NO66("PARAMETER statement"); }
01553 break;
01554 case 49:
01555 #line 412 "gram.in"
01556 { settype(yyvsp[-4].namval, yyvsp[-6].ival, yyvsp[0].lval);
01557                   if(ndim>0) setbound(yyvsp[-4].namval,ndim,dims);
01558                 }
01559 break;
01560 case 50:
01561 #line 416 "gram.in"
01562 { settype(yyvsp[-2].namval, yyvsp[-4].ival, yyvsp[0].lval);
01563                   if(ndim>0) setbound(yyvsp[-2].namval,ndim,dims);
01564                 }
01565 break;
01566 case 51:
01567 #line 420 "gram.in"
01568 { if (new_dcl == 2) {
01569                         err("attempt to give DATA in type-declaration");
01570                         new_dcl = 1;
01571                         }
01572                 }
01573 break;
01574 case 52:
01575 #line 427 "gram.in"
01576 { new_dcl = 2; }
01577 break;
01578 case 53:
01579 #line 430 "gram.in"
01580 { varleng = yyvsp[0].lval; }
01581 break;
01582 case 54:
01583 #line 434 "gram.in"
01584 { varleng = (yyvsp[0].ival<0 || ONEOF(yyvsp[0].ival,M(TYLOGICAL)|M(TYLONG))
01585                                 ? 0 : typesize[yyvsp[0].ival]);
01586                   vartype = yyvsp[0].ival; }
01587 break;
01588 case 55:
01589 #line 439 "gram.in"
01590 { yyval.ival = TYLONG; }
01591 break;
01592 case 56:
01593 #line 440 "gram.in"
01594 { yyval.ival = tyreal; }
01595 break;
01596 case 57:
01597 #line 441 "gram.in"
01598 { ++complex_seen; yyval.ival = tycomplex; }
01599 break;
01600 case 58:
01601 #line 442 "gram.in"
01602 { yyval.ival = TYDREAL; }
01603 break;
01604 case 59:
01605 #line 443 "gram.in"
01606 { ++dcomplex_seen; NOEXT("DOUBLE COMPLEX statement"); yyval.ival = TYDCOMPLEX; }
01607 break;
01608 case 60:
01609 #line 444 "gram.in"
01610 { yyval.ival = TYLOGICAL; }
01611 break;
01612 case 61:
01613 #line 445 "gram.in"
01614 { NO66("CHARACTER statement"); yyval.ival = TYCHAR; }
01615 break;
01616 case 62:
01617 #line 446 "gram.in"
01618 { yyval.ival = TYUNKNOWN; }
01619 break;
01620 case 63:
01621 #line 447 "gram.in"
01622 { yyval.ival = TYUNKNOWN; }
01623 break;
01624 case 64:
01625 #line 448 "gram.in"
01626 { NOEXT("AUTOMATIC statement"); yyval.ival = - STGAUTO; }
01627 break;
01628 case 65:
01629 #line 449 "gram.in"
01630 { NOEXT("STATIC statement"); yyval.ival = - STGBSS; }
01631 break;
01632 case 66:
01633 #line 450 "gram.in"
01634 { yyval.ival = TYINT1; }
01635 break;
01636 case 67:
01637 #line 454 "gram.in"
01638 { yyval.lval = varleng; }
01639 break;
01640 case 68:
01641 #line 456 "gram.in"
01642 {
01643                 expptr p;
01644                 p = yyvsp[-1].expval;
01645                 NO66("length specification *n");
01646                 if( ! ISICON(p) || p->constblock.Const.ci <= 0 )
01647                         {
01648                         yyval.lval = 0;
01649                         dclerr("length must be a positive integer constant",
01650                                 NPNULL);
01651                         }
01652                 else {
01653                         if (vartype == TYCHAR)
01654                                 yyval.lval = p->constblock.Const.ci;
01655                         else switch((int)p->constblock.Const.ci) {
01656                                 case 1: yyval.lval = 1; break;
01657                                 case 2: yyval.lval = typesize[TYSHORT]; break;
01658                                 case 4: yyval.lval = typesize[TYLONG];  break;
01659                                 case 8: yyval.lval = typesize[TYDREAL]; break;
01660                                 case 16: yyval.lval = typesize[TYDCOMPLEX]; break;
01661                                 default:
01662                                         dclerr("invalid length",NPNULL);
01663                                         yyval.lval = varleng;
01664                                 }
01665                         }
01666                 }
01667 break;
01668 case 69:
01669 #line 482 "gram.in"
01670 { NO66("length specification *(*)"); yyval.lval = -1; }
01671 break;
01672 case 70:
01673 #line 486 "gram.in"
01674 { incomm( yyval.extval = comblock("") , yyvsp[0].namval ); }
01675 break;
01676 case 71:
01677 #line 488 "gram.in"
01678 { yyval.extval = yyvsp[-1].extval;  incomm(yyvsp[-1].extval, yyvsp[0].namval); }
01679 break;
01680 case 72:
01681 #line 490 "gram.in"
01682 { yyval.extval = yyvsp[-2].extval;  incomm(yyvsp[-2].extval, yyvsp[0].namval); }
01683 break;
01684 case 73:
01685 #line 492 "gram.in"
01686 { incomm(yyvsp[-2].extval, yyvsp[0].namval); }
01687 break;
01688 case 74:
01689 #line 496 "gram.in"
01690 { yyval.extval = comblock(""); }
01691 break;
01692 case 75:
01693 #line 498 "gram.in"
01694 { yyval.extval = comblock(token); }
01695 break;
01696 case 76:
01697 #line 502 "gram.in"
01698 { setext(yyvsp[0].namval); }
01699 break;
01700 case 77:
01701 #line 504 "gram.in"
01702 { setext(yyvsp[0].namval); }
01703 break;
01704 case 78:
01705 #line 508 "gram.in"
01706 { NO66("INTRINSIC statement"); setintr(yyvsp[0].namval); }
01707 break;
01708 case 79:
01709 #line 510 "gram.in"
01710 { setintr(yyvsp[0].namval); }
01711 break;
01712 case 82:
01713 #line 518 "gram.in"
01714 {
01715                 struct Equivblock *p;
01716                 if(nequiv >= maxequiv)
01717                         many("equivalences", 'q', maxequiv);
01718                 p  =  & eqvclass[nequiv++];
01719                 p->eqvinit = NO;
01720                 p->eqvbottom = 0;
01721                 p->eqvtop = 0;
01722                 p->equivs = yyvsp[-1].eqvval;
01723                 }
01724 break;
01725 case 83:
01726 #line 531 "gram.in"
01727 { yyval.eqvval=ALLOC(Eqvchain);
01728                   yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
01729                 }
01730 break;
01731 case 84:
01732 #line 535 "gram.in"
01733 { yyval.eqvval=ALLOC(Eqvchain);
01734                   yyval.eqvval->eqvitem.eqvlhs = primchk(yyvsp[0].expval);
01735                   yyval.eqvval->eqvnextp = yyvsp[-2].eqvval;
01736                 }
01737 break;
01738 case 87:
01739 #line 546 "gram.in"
01740 { if(parstate == OUTSIDE)
01741                         {
01742                         newproc();
01743                         startproc(ESNULL, CLMAIN);
01744                         }
01745                   if(parstate < INDATA)
01746                         {
01747                         enddcl();
01748                         parstate = INDATA;
01749                         datagripe = 1;
01750                         }
01751                 }
01752 break;
01753 case 88:
01754 #line 561 "gram.in"
01755 { ftnint junk;
01756                   if(nextdata(&junk) != NULL)
01757                         err("too few initializers");
01758                   frdata(yyvsp[-4].chval);
01759                   frrpl();
01760                 }
01761 break;
01762 case 89:
01763 #line 569 "gram.in"
01764 { frchain(&datastack); curdtp = 0; }
01765 break;
01766 case 90:
01767 #line 571 "gram.in"
01768 { pop_datastack(); }
01769 break;
01770 case 91:
01771 #line 573 "gram.in"
01772 { toomanyinit = NO; }
01773 break;
01774 case 94:
01775 #line 578 "gram.in"
01776 { dataval(ENULL, yyvsp[0].expval); }
01777 break;
01778 case 95:
01779 #line 580 "gram.in"
01780 { dataval(yyvsp[-2].expval, yyvsp[0].expval); }
01781 break;
01782 case 97:
01783 #line 585 "gram.in"
01784 { if( yyvsp[-1].ival==OPMINUS && ISCONST(yyvsp[0].expval) )
01785                         consnegop((Constp)yyvsp[0].expval);
01786                   yyval.expval = yyvsp[0].expval;
01787                 }
01788 break;
01789 case 101:
01790 #line 597 "gram.in"
01791 { int k;
01792                   yyvsp[0].namval->vsave = YES;
01793                   k = yyvsp[0].namval->vstg;
01794                 if( ! ONEOF(k, M(STGUNKNOWN)|M(STGBSS)|M(STGINIT)) )
01795                         dclerr("can only save static variables", yyvsp[0].namval);
01796                 }
01797 break;
01798 case 105:
01799 #line 611 "gram.in"
01800 { if(yyvsp[-2].namval->vclass == CLUNKNOWN)
01801                         make_param((struct Paramblock *)yyvsp[-2].namval, yyvsp[0].expval);
01802                   else dclerr("cannot make into parameter", yyvsp[-2].namval);
01803                 }
01804 break;
01805 case 106:
01806 #line 618 "gram.in"
01807 { if(ndim>0) setbound(yyvsp[-1].namval, ndim, dims); }
01808 break;
01809 case 107:
01810 #line 622 "gram.in"
01811 { Namep np;
01812                   struct Primblock *pp = (struct Primblock *)yyvsp[0].expval;
01813                   int tt = yyvsp[0].expval->tag;
01814                   if (tt != TPRIM) {
01815                         if (tt == TCONST)
01816                                 err("parameter in data statement");
01817                         else
01818                                 erri("tag %d in data statement",tt);
01819                         yyval.chval = 0;
01820                         err_lineno = lineno;
01821                         break;
01822                         }
01823                   np = pp -> namep;
01824                   vardcl(np);
01825                   if ((pp->fcharp || pp->lcharp)
01826                    && (np->vtype != TYCHAR || np->vdim))
01827                         sserr(np);
01828                   if(np->vstg == STGCOMMON)
01829                         extsymtab[np->vardesc.varno].extinit = YES;
01830                   else if(np->vstg==STGEQUIV)
01831                         eqvclass[np->vardesc.varno].eqvinit = YES;
01832                   else if(np->vstg!=STGINIT && np->vstg!=STGBSS) {
01833                         errstr(np->vstg == STGARG
01834                                 ? "Dummy argument \"%.60s\" in data statement."
01835                                 : "Cannot give data to \"%.75s\"",
01836                                 np->fvarname);
01837                         yyval.chval = 0;
01838                         err_lineno = lineno;
01839                         break;
01840                         }
01841                   yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL);
01842                 }
01843 break;
01844 case 108:
01845 #line 655 "gram.in"
01846 { chainp p; struct Impldoblock *q;
01847                 pop_datastack();
01848                 q = ALLOC(Impldoblock);
01849                 q->tag = TIMPLDO;
01850                 (q->varnp = (Namep) (yyvsp[-1].chval->datap))->vimpldovar = 1;
01851                 p = yyvsp[-1].chval->nextp;
01852                 if(p)  { q->implb = (expptr)(p->datap); p = p->nextp; }
01853                 if(p)  { q->impub = (expptr)(p->datap); p = p->nextp; }
01854                 if(p)  { q->impstep = (expptr)(p->datap); }
01855                 frchain( & (yyvsp[-1].chval) );
01856                 yyval.chval = mkchain((char *)q, CHNULL);
01857                 q->datalist = hookup(yyvsp[-3].chval, yyval.chval);
01858                 }
01859 break;
01860 case 109:
01861 #line 671 "gram.in"
01862 { if (!datastack)
01863                         curdtp = 0;
01864                   datastack = mkchain((char *)curdtp, datastack);
01865                   curdtp = yyvsp[0].chval; curdtelt = 0;
01866                   }
01867 break;
01868 case 110:
01869 #line 677 "gram.in"
01870 { yyval.chval = hookup(yyvsp[-2].chval, yyvsp[0].chval); }
01871 break;
01872 case 111:
01873 #line 681 "gram.in"
01874 { ndim = 0; }
01875 break;
01876 case 113:
01877 #line 685 "gram.in"
01878 { ndim = 0; }
01879 break;
01880 case 116:
01881 #line 690 "gram.in"
01882 {
01883                   if(ndim == maxdim)
01884                         err("too many dimensions");
01885                   else if(ndim < maxdim)
01886                         { dims[ndim].lb = 0;
01887                           dims[ndim].ub = yyvsp[0].expval;
01888                         }
01889                   ++ndim;
01890                 }
01891 break;
01892 case 117:
01893 #line 700 "gram.in"
01894 {
01895                   if(ndim == maxdim)
01896                         err("too many dimensions");
01897                   else if(ndim < maxdim)
01898                         { dims[ndim].lb = yyvsp[-2].expval;
01899                           dims[ndim].ub = yyvsp[0].expval;
01900                         }
01901                   ++ndim;
01902                 }
01903 break;
01904 case 118:
01905 #line 712 "gram.in"
01906 { yyval.expval = 0; }
01907 break;
01908 case 120:
01909 #line 717 "gram.in"
01910 { nstars = 1; labarray[0] = yyvsp[0].labval; }
01911 break;
01912 case 121:
01913 #line 719 "gram.in"
01914 { if(nstars < maxlablist)  labarray[nstars++] = yyvsp[0].labval; }
01915 break;
01916 case 122:
01917 #line 723 "gram.in"
01918 { yyval.labval = execlab( convci(toklen, token) ); }
01919 break;
01920 case 123:
01921 #line 727 "gram.in"
01922 { NO66("IMPLICIT statement"); }
01923 break;
01924 case 126:
01925 #line 733 "gram.in"
01926 { if (vartype != TYUNKNOWN)
01927                         dclerr("-- expected letter range",NPNULL);
01928                   setimpl(vartype, varleng, 'a', 'z'); }
01929 break;
01930 case 127:
01931 #line 738 "gram.in"
01932 { needkwd = 1; }
01933 break;
01934 case 131:
01935 #line 747 "gram.in"
01936 { setimpl(vartype, varleng, yyvsp[0].ival, yyvsp[0].ival); }
01937 break;
01938 case 132:
01939 #line 749 "gram.in"
01940 { setimpl(vartype, varleng, yyvsp[-2].ival, yyvsp[0].ival); }
01941 break;
01942 case 133:
01943 #line 753 "gram.in"
01944 { if(toklen!=1 || token[0]<'a' || token[0]>'z')
01945                         {
01946                         dclerr("implicit item must be single letter", NPNULL);
01947                         yyval.ival = 0;
01948                         }
01949                   else yyval.ival = token[0];
01950                 }
01951 break;
01952 case 136:
01953 #line 767 "gram.in"
01954 {
01955                 if(yyvsp[-2].namval->vclass == CLUNKNOWN)
01956                         {
01957                         yyvsp[-2].namval->vclass = CLNAMELIST;
01958                         yyvsp[-2].namval->vtype = TYINT;
01959                         yyvsp[-2].namval->vstg = STGBSS;
01960                         yyvsp[-2].namval->varxptr.namelist = yyvsp[0].chval;
01961                         yyvsp[-2].namval->vardesc.varno = ++lastvarno;
01962                         }
01963                 else dclerr("cannot be a namelist name", yyvsp[-2].namval);
01964                 }
01965 break;
01966 case 137:
01967 #line 781 "gram.in"
01968 { yyval.chval = mkchain((char *)yyvsp[0].namval, CHNULL); }
01969 break;
01970 case 138:
01971 #line 783 "gram.in"
01972 { yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].namval, CHNULL)); }
01973 break;
01974 case 139:
01975 #line 787 "gram.in"
01976 { switch(parstate)
01977                         {
01978                         case OUTSIDE:   newproc();
01979                                         startproc(ESNULL, CLMAIN);
01980                         case INSIDE:    parstate = INDCL;
01981                         case INDCL:     break;
01982 
01983                         case INDATA:
01984                                 if (datagripe) {
01985                                         errstr(
01986                                 "Statement order error: declaration after DATA",
01987                                                 CNULL);
01988                                         datagripe = 0;
01989                                         }
01990                                 break;
01991 
01992                         default:
01993                                 dclerr("declaration among executables", NPNULL);
01994                         }
01995                 }
01996 break;
01997 case 140:
01998 #line 809 "gram.in"
01999 { yyval.chval = 0; }
02000 break;
02001 case 141:
02002 #line 811 "gram.in"
02003 { yyval.chval = revchain(yyvsp[0].chval); }
02004 break;
02005 case 142:
02006 #line 815 "gram.in"
02007 { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
02008 break;
02009 case 143:
02010 #line 817 "gram.in"
02011 { yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
02012 break;
02013 case 145:
02014 #line 822 "gram.in"
02015 { yyval.expval = yyvsp[-1].expval; if (yyval.expval->tag == TPRIM)
02016                                         yyval.expval->primblock.parenused = 1; }
02017 break;
02018 case 149:
02019 #line 830 "gram.in"
02020 { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
02021 break;
02022 case 150:
02023 #line 832 "gram.in"
02024 { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
02025 break;
02026 case 151:
02027 #line 834 "gram.in"
02028 { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
02029 break;
02030 case 152:
02031 #line 836 "gram.in"
02032 { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
02033 break;
02034 case 153:
02035 #line 838 "gram.in"
02036 { if(yyvsp[-1].ival == OPMINUS)
02037                         yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
02038                   else  yyval.expval = yyvsp[0].expval;
02039                 }
02040 break;
02041 case 154:
02042 #line 843 "gram.in"
02043 { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
02044 break;
02045 case 155:
02046 #line 845 "gram.in"
02047 { NO66(".EQV. operator");
02048                   yyval.expval = mkexpr(OPEQV, yyvsp[-2].expval,yyvsp[0].expval); }
02049 break;
02050 case 156:
02051 #line 848 "gram.in"
02052 { NO66(".NEQV. operator");
02053                   yyval.expval = mkexpr(OPNEQV, yyvsp[-2].expval, yyvsp[0].expval); }
02054 break;
02055 case 157:
02056 #line 851 "gram.in"
02057 { yyval.expval = mkexpr(OPOR, yyvsp[-2].expval, yyvsp[0].expval); }
02058 break;
02059 case 158:
02060 #line 853 "gram.in"
02061 { yyval.expval = mkexpr(OPAND, yyvsp[-2].expval, yyvsp[0].expval); }
02062 break;
02063 case 159:
02064 #line 855 "gram.in"
02065 { yyval.expval = mkexpr(OPNOT, yyvsp[0].expval, ENULL); }
02066 break;
02067 case 160:
02068 #line 857 "gram.in"
02069 { NO66("concatenation operator //");
02070                   yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
02071 break;
02072 case 161:
02073 #line 861 "gram.in"
02074 { yyval.ival = OPPLUS; }
02075 break;
02076 case 162:
02077 #line 862 "gram.in"
02078 { yyval.ival = OPMINUS; }
02079 break;
02080 case 163:
02081 #line 865 "gram.in"
02082 { yyval.ival = OPEQ; }
02083 break;
02084 case 164:
02085 #line 866 "gram.in"
02086 { yyval.ival = OPGT; }
02087 break;
02088 case 165:
02089 #line 867 "gram.in"
02090 { yyval.ival = OPLT; }
02091 break;
02092 case 166:
02093 #line 868 "gram.in"
02094 { yyval.ival = OPGE; }
02095 break;
02096 case 167:
02097 #line 869 "gram.in"
02098 { yyval.ival = OPLE; }
02099 break;
02100 case 168:
02101 #line 870 "gram.in"
02102 { yyval.ival = OPNE; }
02103 break;
02104 case 169:
02105 #line 874 "gram.in"
02106 { yyval.expval = mkprim(yyvsp[0].namval, LBNULL, CHNULL); }
02107 break;
02108 case 170:
02109 #line 876 "gram.in"
02110 { NO66("substring operator :");
02111                   yyval.expval = mkprim(yyvsp[-1].namval, LBNULL, yyvsp[0].chval); }
02112 break;
02113 case 171:
02114 #line 879 "gram.in"
02115 { yyval.expval = mkprim(yyvsp[-3].namval, mklist(yyvsp[-1].chval), CHNULL); }
02116 break;
02117 case 172:
02118 #line 881 "gram.in"
02119 { NO66("substring operator :");
02120                   yyval.expval = mkprim(yyvsp[-4].namval, mklist(yyvsp[-2].chval), yyvsp[0].chval); }
02121 break;
02122 case 173:
02123 #line 886 "gram.in"
02124 { yyval.chval = mkchain((char *)yyvsp[-3].expval, mkchain((char *)yyvsp[-1].expval,CHNULL)); }
02125 break;
02126 case 174:
02127 #line 890 "gram.in"
02128 { yyval.expval = 0; }
02129 break;
02130 case 176:
02131 #line 895 "gram.in"
02132 { if(yyvsp[0].namval->vclass == CLPARAM)
02133                         yyval.expval = (expptr) cpexpr(
02134                                 ( (struct Paramblock *) (yyvsp[0].namval) ) -> paramval);
02135                 }
02136 break;
02137 case 178:
02138 #line 902 "gram.in"
02139 { yyval.expval = mklogcon(1); }
02140 break;
02141 case 179:
02142 #line 903 "gram.in"
02143 { yyval.expval = mklogcon(0); }
02144 break;
02145 case 180:
02146 #line 904 "gram.in"
02147 { yyval.expval = mkstrcon(toklen, token); }
02148 break;
02149 case 181:
02150 #line 905 "gram.in"
02151  { yyval.expval = mkintcon( convci(toklen, token) ); }
02152 break;
02153 case 182:
02154 #line 906 "gram.in"
02155  { yyval.expval = mkrealcon(tyreal, token); }
02156 break;
02157 case 183:
02158 #line 907 "gram.in"
02159  { yyval.expval = mkrealcon(TYDREAL, token); }
02160 break;
02161 case 185:
02162 #line 912 "gram.in"
02163 { yyval.expval = mkcxcon(yyvsp[-3].expval,yyvsp[-1].expval); }
02164 break;
02165 case 186:
02166 #line 916 "gram.in"
02167 { NOEXT("hex constant");
02168                   yyval.expval = mkbitcon(4, toklen, token); }
02169 break;
02170 case 187:
02171 #line 919 "gram.in"
02172 { NOEXT("octal constant");
02173                   yyval.expval = mkbitcon(3, toklen, token); }
02174 break;
02175 case 188:
02176 #line 922 "gram.in"
02177 { NOEXT("binary constant");
02178                   yyval.expval = mkbitcon(1, toklen, token); }
02179 break;
02180 case 190:
02181 #line 928 "gram.in"
02182 { yyval.expval = yyvsp[-1].expval; }
02183 break;
02184 case 193:
02185 #line 934 "gram.in"
02186 { yyval.expval = mkexpr(yyvsp[-1].ival, yyvsp[-2].expval, yyvsp[0].expval); }
02187 break;
02188 case 194:
02189 #line 936 "gram.in"
02190 { yyval.expval = mkexpr(OPSTAR, yyvsp[-2].expval, yyvsp[0].expval); }
02191 break;
02192 case 195:
02193 #line 938 "gram.in"
02194 { yyval.expval = mkexpr(OPSLASH, yyvsp[-2].expval, yyvsp[0].expval); }
02195 break;
02196 case 196:
02197 #line 940 "gram.in"
02198 { yyval.expval = mkexpr(OPPOWER, yyvsp[-2].expval, yyvsp[0].expval); }
02199 break;
02200 case 197:
02201 #line 942 "gram.in"
02202 { if(yyvsp[-1].ival == OPMINUS)
02203                         yyval.expval = mkexpr(OPNEG, yyvsp[0].expval, ENULL);
02204                   else  yyval.expval = yyvsp[0].expval;
02205                 }
02206 break;
02207 case 198:
02208 #line 947 "gram.in"
02209 { NO66("concatenation operator //");
02210                   yyval.expval = mkexpr(OPCONCAT, yyvsp[-2].expval, yyvsp[0].expval); }
02211 break;
02212 case 200:
02213 #line 952 "gram.in"
02214 {
02215                 if(yyvsp[-3].labval->labdefined)
02216                         execerr("no backward DO loops", CNULL);
02217                 yyvsp[-3].labval->blklevel = blklevel+1;
02218                 exdo(yyvsp[-3].labval->labelno, NPNULL, yyvsp[0].chval);
02219                 }
02220 break;
02221 case 201:
02222 #line 959 "gram.in"
02223 {
02224                 exdo((int)(ctls - ctlstack - 2), NPNULL, yyvsp[0].chval);
02225                 NOEXT("DO without label");
02226                 }
02227 break;
02228 case 202:
02229 #line 964 "gram.in"
02230 { exenddo(NPNULL); }
02231 break;
02232 case 203:
02233 #line 966 "gram.in"
02234 { exendif();  thiswasbranch = NO; }
02235 break;
02236 case 205:
02237 #line 969 "gram.in"
02238 { exelif(yyvsp[-2].expval); lastwasbranch = NO; }
02239 break;
02240 case 206:
02241 #line 971 "gram.in"
02242 { exelse(); lastwasbranch = NO; }
02243 break;
02244 case 207:
02245 #line 973 "gram.in"
02246 { exendif(); lastwasbranch = NO; }
02247 break;
02248 case 208:
02249 #line 977 "gram.in"
02250 { exif(yyvsp[-1].expval); }
02251 break;
02252 case 209:
02253 #line 981 "gram.in"
02254 { yyval.chval = mkchain((char *)yyvsp[-2].namval, yyvsp[0].chval); }
02255 break;
02256 case 211:
02257 #line 986 "gram.in"
02258 { yyval.chval = mkchain(CNULL, (chainp)yyvsp[-1].expval); }
02259 break;
02260 case 212:
02261 #line 990 "gram.in"
02262 { exequals((struct Primblock *)yyvsp[-2].expval, yyvsp[0].expval); }
02263 break;
02264 case 213:
02265 #line 992 "gram.in"
02266 { exassign(yyvsp[0].namval, yyvsp[-2].labval); }
02267 break;
02268 case 216:
02269 #line 996 "gram.in"
02270 { inioctl = NO; }
02271 break;
02272 case 217:
02273 #line 998 "gram.in"
02274 { exarif(yyvsp[-6].expval, yyvsp[-4].labval, yyvsp[-2].labval, yyvsp[0].labval);  thiswasbranch = YES; }
02275 break;
02276 case 218:
02277 #line 1000 "gram.in"
02278 { excall(yyvsp[0].namval, LBNULL, 0, labarray); }
02279 break;
02280 case 219:
02281 #line 1002 "gram.in"
02282 { excall(yyvsp[-2].namval, LBNULL, 0, labarray); }
02283 break;
02284 case 220:
02285 #line 1004 "gram.in"
02286 { if(nstars < maxlablist)
02287                         excall(yyvsp[-3].namval, mklist(revchain(yyvsp[-1].chval)), nstars, labarray);
02288                   else
02289                         many("alternate returns", 'l', maxlablist);
02290                 }
02291 break;
02292 case 221:
02293 #line 1010 "gram.in"
02294 { exreturn(yyvsp[0].expval);  thiswasbranch = YES; }
02295 break;
02296 case 222:
02297 #line 1012 "gram.in"
02298 { exstop(yyvsp[-2].ival, yyvsp[0].expval);  thiswasbranch = yyvsp[-2].ival; }
02299 break;
02300 case 223:
02301 #line 1016 "gram.in"
02302 { yyval.labval = mklabel( convci(toklen, token) ); }
02303 break;
02304 case 224:
02305 #line 1020 "gram.in"
02306 { if(parstate == OUTSIDE)
02307                         {
02308                         newproc();
02309                         startproc(ESNULL, CLMAIN);
02310                         }
02311                 }
02312 break;
02313 case 225:
02314 #line 1029 "gram.in"
02315 { exgoto(yyvsp[0].labval);  thiswasbranch = YES; }
02316 break;
02317 case 226:
02318 #line 1031 "gram.in"
02319 { exasgoto(yyvsp[0].namval);  thiswasbranch = YES; }
02320 break;
02321 case 227:
02322 #line 1033 "gram.in"
02323 { exasgoto(yyvsp[-4].namval);  thiswasbranch = YES; }
02324 break;
02325 case 228:
02326 #line 1035 "gram.in"
02327 { if(nstars < maxlablist)
02328                         putcmgo(putx(fixtype(yyvsp[0].expval)), nstars, labarray);
02329                   else
02330                         many("labels in computed GOTO list", 'l', maxlablist);
02331                 }
02332 break;
02333 case 231:
02334 #line 1047 "gram.in"
02335 { nstars = 0; yyval.namval = yyvsp[0].namval; }
02336 break;
02337 case 232:
02338 #line 1051 "gram.in"
02339 { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval,CHNULL) : CHNULL; }
02340 break;
02341 case 233:
02342 #line 1053 "gram.in"
02343 { yyval.chval = yyvsp[0].expval ? mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval) : yyvsp[-2].chval; }
02344 break;
02345 case 235:
02346 #line 1058 "gram.in"
02347 { if(nstars < maxlablist) labarray[nstars++] = yyvsp[0].labval; yyval.expval = 0; }
02348 break;
02349 case 236:
02350 #line 1062 "gram.in"
02351 { yyval.ival = 0; }
02352 break;
02353 case 237:
02354 #line 1064 "gram.in"
02355 { yyval.ival = 2; }
02356 break;
02357 case 238:
02358 #line 1068 "gram.in"
02359 { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
02360 break;
02361 case 239:
02362 #line 1070 "gram.in"
02363 { yyval.chval = hookup(yyvsp[-2].chval, mkchain((char *)yyvsp[0].expval,CHNULL) ); }
02364 break;
02365 case 240:
02366 #line 1074 "gram.in"
02367 { if(parstate == OUTSIDE)
02368                         {
02369                         newproc();
02370                         startproc(ESNULL, CLMAIN);
02371                         }
02372 
02373 /* This next statement depends on the ordering of the state table encoding */
02374 
02375                   if(parstate < INDATA) enddcl();
02376                 }
02377 break;
02378 case 241:
02379 #line 1087 "gram.in"
02380 { intonly = YES; }
02381 break;
02382 case 242:
02383 #line 1091 "gram.in"
02384 { intonly = NO; }
02385 break;
02386 case 243:
02387 #line 1096 "gram.in"
02388 { endio(); }
02389 break;
02390 case 245:
02391 #line 1101 "gram.in"
02392 { ioclause(IOSUNIT, yyvsp[0].expval); endioctl(); }
02393 break;
02394 case 246:
02395 #line 1103 "gram.in"
02396 { ioclause(IOSUNIT, ENULL); endioctl(); }
02397 break;
02398 case 247:
02399 #line 1105 "gram.in"
02400 { ioclause(IOSUNIT, IOSTDERR); endioctl(); }
02401 break;
02402 case 249:
02403 #line 1108 "gram.in"
02404 { doio(CHNULL); }
02405 break;
02406 case 250:
02407 #line 1110 "gram.in"
02408 { doio(CHNULL); }
02409 break;
02410 case 251:
02411 #line 1112 "gram.in"
02412 { doio(revchain(yyvsp[0].chval)); }
02413 break;
02414 case 252:
02415 #line 1114 "gram.in"
02416 { doio(revchain(yyvsp[0].chval)); }
02417 break;
02418 case 253:
02419 #line 1116 "gram.in"
02420 { doio(revchain(yyvsp[0].chval)); }
02421 break;
02422 case 254:
02423 #line 1118 "gram.in"
02424 { doio(CHNULL); }
02425 break;
02426 case 255:
02427 #line 1120 "gram.in"
02428 { doio(revchain(yyvsp[0].chval)); }
02429 break;
02430 case 256:
02431 #line 1122 "gram.in"
02432 { doio(CHNULL); }
02433 break;
02434 case 257:
02435 #line 1124 "gram.in"
02436 { doio(revchain(yyvsp[0].chval)); }
02437 break;
02438 case 259:
02439 #line 1131 "gram.in"
02440 { iostmt = IOBACKSPACE; }
02441 break;
02442 case 260:
02443 #line 1133 "gram.in"
02444 { iostmt = IOREWIND; }
02445 break;
02446 case 261:
02447 #line 1135 "gram.in"
02448 { iostmt = IOENDFILE; }
02449 break;
02450 case 263:
02451 #line 1142 "gram.in"
02452 { iostmt = IOINQUIRE; }
02453 break;
02454 case 264:
02455 #line 1144 "gram.in"
02456 { iostmt = IOOPEN; }
02457 break;
02458 case 265:
02459 #line 1146 "gram.in"
02460 { iostmt = IOCLOSE; }
02461 break;
02462 case 266:
02463 #line 1150 "gram.in"
02464 {
02465                 ioclause(IOSUNIT, ENULL);
02466                 ioclause(IOSFMT, yyvsp[0].expval);
02467                 endioctl();
02468                 }
02469 break;
02470 case 267:
02471 #line 1156 "gram.in"
02472 {
02473                 ioclause(IOSUNIT, ENULL);
02474                 ioclause(IOSFMT, ENULL);
02475                 endioctl();
02476                 }
02477 break;
02478 case 268:
02479 #line 1164 "gram.in"
02480 {
02481                   ioclause(IOSUNIT, yyvsp[-1].expval);
02482                   endioctl();
02483                 }
02484 break;
02485 case 269:
02486 #line 1169 "gram.in"
02487 { endioctl(); }
02488 break;
02489 case 272:
02490 #line 1177 "gram.in"
02491 { ioclause(IOSPOSITIONAL, yyvsp[0].expval); }
02492 break;
02493 case 273:
02494 #line 1179 "gram.in"
02495 { ioclause(IOSPOSITIONAL, ENULL); }
02496 break;
02497 case 274:
02498 #line 1181 "gram.in"
02499 { ioclause(IOSPOSITIONAL, IOSTDERR); }
02500 break;
02501 case 275:
02502 #line 1183 "gram.in"
02503 { ioclause(yyvsp[-1].ival, yyvsp[0].expval); }
02504 break;
02505 case 276:
02506 #line 1185 "gram.in"
02507 { ioclause(yyvsp[-1].ival, ENULL); }
02508 break;
02509 case 277:
02510 #line 1187 "gram.in"
02511 { ioclause(yyvsp[-1].ival, IOSTDERR); }
02512 break;
02513 case 278:
02514 #line 1191 "gram.in"
02515 { yyval.ival = iocname(); }
02516 break;
02517 case 279:
02518 #line 1195 "gram.in"
02519 { iostmt = IOREAD; }
02520 break;
02521 case 280:
02522 #line 1199 "gram.in"
02523 { iostmt = IOWRITE; }
02524 break;
02525 case 281:
02526 #line 1203 "gram.in"
02527 {
02528                 iostmt = IOWRITE;
02529                 ioclause(IOSUNIT, ENULL);
02530                 ioclause(IOSFMT, yyvsp[-1].expval);
02531                 endioctl();
02532                 }
02533 break;
02534 case 282:
02535 #line 1210 "gram.in"
02536 {
02537                 iostmt = IOWRITE;
02538                 ioclause(IOSUNIT, ENULL);
02539                 ioclause(IOSFMT, ENULL);
02540                 endioctl();
02541                 }
02542 break;
02543 case 283:
02544 #line 1219 "gram.in"
02545 { yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
02546 break;
02547 case 284:
02548 #line 1221 "gram.in"
02549 { yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
02550 break;
02551 case 285:
02552 #line 1225 "gram.in"
02553 { yyval.tagval = (tagptr) yyvsp[0].expval; }
02554 break;
02555 case 286:
02556 #line 1227 "gram.in"
02557 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval,revchain(yyvsp[-3].chval)); }
02558 break;
02559 case 287:
02560 #line 1231 "gram.in"
02561 { yyval.chval = mkchain((char *)yyvsp[0].expval, CHNULL); }
02562 break;
02563 case 288:
02564 #line 1233 "gram.in"
02565 { yyval.chval = mkchain((char *)yyvsp[0].tagval, CHNULL); }
02566 break;
02567 case 290:
02568 #line 1238 "gram.in"
02569 { yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
02570 break;
02571 case 291:
02572 #line 1240 "gram.in"
02573 { yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].expval, CHNULL) ); }
02574 break;
02575 case 292:
02576 #line 1242 "gram.in"
02577 { yyval.chval = mkchain((char *)yyvsp[0].expval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
02578 break;
02579 case 293:
02580 #line 1244 "gram.in"
02581 { yyval.chval = mkchain((char *)yyvsp[0].tagval, mkchain((char *)yyvsp[-2].tagval, CHNULL) ); }
02582 break;
02583 case 294:
02584 #line 1246 "gram.in"
02585 { yyval.chval = mkchain((char *)yyvsp[0].expval, yyvsp[-2].chval); }
02586 break;
02587 case 295:
02588 #line 1248 "gram.in"
02589 { yyval.chval = mkchain((char *)yyvsp[0].tagval, yyvsp[-2].chval); }
02590 break;
02591 case 296:
02592 #line 1252 "gram.in"
02593 { yyval.tagval = (tagptr) yyvsp[0].expval; }
02594 break;
02595 case 297:
02596 #line 1254 "gram.in"
02597 { yyval.tagval = (tagptr) yyvsp[-1].expval; }
02598 break;
02599 case 298:
02600 #line 1256 "gram.in"
02601 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].expval, CHNULL) ); }
02602 break;
02603 case 299:
02604 #line 1258 "gram.in"
02605 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, mkchain((char *)yyvsp[-3].tagval, CHNULL) ); }
02606 break;
02607 case 300:
02608 #line 1260 "gram.in"
02609 { yyval.tagval = (tagptr) mkiodo(yyvsp[-1].chval, revchain(yyvsp[-3].chval)); }
02610 break;
02611 case 301:
02612 #line 1264 "gram.in"
02613 { startioctl(); }
02614 break;
02615 #line 2616 "y.tab.c"
02616     }
02617     yyssp -= yym;
02618     yystate = *yyssp;
02619     yyvsp -= yym;
02620     yym = yylhs[yyn];
02621     if (yystate == 0 && yym == 0)
02622     {
02623 #if YYDEBUG
02624         if (yydebug)
02625             printf("%sdebug: after reduction, shifting from state 0 to\
02626  state %d\n", YYPREFIX, YYFINAL);
02627 #endif
02628         yystate = YYFINAL;
02629         *++yyssp = YYFINAL;
02630         *++yyvsp = yyval;
02631         if (yychar < 0)
02632         {
02633             if ((yychar = yylex()) < 0) yychar = 0;
02634 #if YYDEBUG
02635             if (yydebug)
02636             {
02637                 yys = 0;
02638                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
02639                 if (!yys) yys = "illegal-symbol";
02640                 printf("%sdebug: state %d, reading %d (%s)\n",
02641                         YYPREFIX, YYFINAL, yychar, yys);
02642             }
02643 #endif
02644         }
02645         if (yychar == 0) goto yyaccept;
02646         goto yyloop;
02647     }
02648     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
02649             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
02650         yystate = yytable[yyn];
02651     else
02652         yystate = yydgoto[yym];
02653 #if YYDEBUG
02654     if (yydebug)
02655         printf("%sdebug: after reduction, shifting from state %d \
02656 to state %d\n", YYPREFIX, *yyssp, yystate);
02657 #endif
02658     if (yyssp >= yysslim && yygrowstack())
02659     {
02660         goto yyoverflow;
02661     }
02662     *++yyssp = yystate;
02663     *++yyvsp = yyval;
02664     goto yyloop;
02665 yyoverflow:
02666     yyerror("yacc stack overflow");
02667 yyabort:
02668     return (1);
02669 yyaccept:
02670     return (0);
02671 }
 

Powered by Plone

This site conforms to the following standards: