home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / fchk294s.zip / ftnchek-2.9.4 / fortran.c < prev    next >
C/C++ Source or Header  |  1996-09-13  |  153KB  |  4,630 lines

  1.  
  2. /*  A Bison parser, made from fortran.y with Bison version GNU Bison version 1.22
  3.   */
  4.  
  5. #define YYBISON 1  /* Identify Bison output.  */
  6.  
  7. #define    tok_identifier    258
  8. #define    tok_array_identifier    259
  9. #define    tok_label    260
  10. #define    tok_integer_const    261
  11. #define    tok_real_const    262
  12. #define    tok_dp_const    263
  13. #define    tok_quad_const    264
  14. #define    tok_complex_const    265
  15. #define    tok_dcomplex_const    266
  16. #define    tok_logical_const    267
  17. #define    tok_string    268
  18. #define    tok_hollerith    269
  19. #define    tok_edit_descriptor    270
  20. #define    tok_letter    271
  21. #define    tok_relop    272
  22. #define    tok_AND    273
  23. #define    tok_OR    274
  24. #define    tok_EQV    275
  25. #define    tok_NEQV    276
  26. #define    tok_NOT    277
  27. #define    tok_power    278
  28. #define    tok_concat    279
  29. #define    tok_ACCEPT    280
  30. #define    tok_ASSIGN    281
  31. #define    tok_BACKSPACE    282
  32. #define    tok_BLOCK    283
  33. #define    tok_BLOCKDATA    284
  34. #define    tok_BYTE    285
  35. #define    tok_CALL    286
  36. #define    tok_CHARACTER    287
  37. #define    tok_CLOSE    288
  38. #define    tok_COMMON    289
  39. #define    tok_COMPLEX    290
  40. #define    tok_CONTINUE    291
  41. #define    tok_DATA    292
  42. #define    tok_DIMENSION    293
  43. #define    tok_DO    294
  44. #define    tok_DOUBLE    295
  45. #define    tok_DOUBLECOMPLEX    296
  46. #define    tok_DOUBLEPRECISION    297
  47. #define    tok_DOWHILE    298
  48. #define    tok_ELSE    299
  49. #define    tok_ELSEIF    300
  50. #define    tok_END    301
  51. #define    tok_ENDDO    302
  52. #define    tok_ENDFILE    303
  53. #define    tok_ENDIF    304
  54. #define    tok_ENTRY    305
  55. #define    tok_EQUIVALENCE    306
  56. #define    tok_EXTERNAL    307
  57. #define    tok_FILE    308
  58. #define    tok_FORMAT    309
  59. #define    tok_FUNCTION    310
  60. #define    tok_GO    311
  61. #define    tok_GOTO    312
  62. #define    tok_IF    313
  63. #define    tok_IMPLICIT    314
  64. #define    tok_INCLUDE    315
  65. #define    tok_INQUIRE    316
  66. #define    tok_INTEGER    317
  67. #define    tok_INTRINSIC    318
  68. #define    tok_LOGICAL    319
  69. #define    tok_NAMELIST    320
  70. #define    tok_NONE    321
  71. #define    tok_OPEN    322
  72. #define    tok_PARAMETER    323
  73. #define    tok_PAUSE    324
  74. #define    tok_POINTER    325
  75. #define    tok_PRECISION    326
  76. #define    tok_PRINT    327
  77. #define    tok_PROGRAM    328
  78. #define    tok_READ    329
  79. #define    tok_REAL    330
  80. #define    tok_RETURN    331
  81. #define    tok_REWIND    332
  82. #define    tok_SAVE    333
  83. #define    tok_STOP    334
  84. #define    tok_SUBROUTINE    335
  85. #define    tok_THEN    336
  86. #define    tok_TO    337
  87. #define    tok_TYPE    338
  88. #define    tok_WHILE    339
  89. #define    tok_WRITE    340
  90. #define    tok_illegal    341
  91. #define    tok_empty    342
  92. #define    EOS    127
  93. #define    REDUCE    343
  94.  
  95. #line 9 "fortran.y"
  96.  
  97.  
  98. /*
  99.   fortran.c:
  100.  
  101.     Copyright (C) 1992 by Robert K. Moniot.
  102.     This program is free software.  Permission is granted to
  103.     modify it and/or redistribute it.  There is no warranty
  104.     for this program.
  105.  
  106.  
  107.         This grammar is ANSI standard-conforming, except for:
  108.         -- complex constant and a few other ambiguities needing
  109.            significant lookahead cannot be split across lines.
  110.  
  111.         Extensions supported:
  112.             -- Case insensitive.
  113.          -- Hollerith constants.
  114.         -- Variable names may be longer than 6 characters.  Also
  115.            allows underscores and dollar signs in names.
  116.         -- DO ... ENDDO and DO WHILE loop forms allowed.
  117.         -- NAMELIST supported.
  118.         -- TYPE and ACCEPT I/O statements allowed.
  119.         -- Tabs are permitted in input, and (except in character data)
  120.            expand into blanks up to the next column equal to 1 mod 8.
  121.         -- Type declarations INTEGER*2, REAL*8, etc. are allowed.
  122.         -- IMPLICIT NONE allowed.
  123.      */
  124.  
  125. /*  Author: R. Moniot
  126.  *  Date:   August 1988
  127.  *  Last revision: July 1993
  128.  */
  129.  
  130. #include <stdio.h>
  131. #include <string.h>
  132. #include <ctype.h>
  133. #include "ftnchek.h"
  134. #include "symtab.h"
  135.  
  136.     /* The following section is for use with bison-derived
  137.        parser.  Define alloca to be malloc for those cases
  138.        not covered by the cases covered there.  The ifdefs
  139.        are those in the skeleton parser with includes removed */
  140. #ifdef AIXC    /* IBM RS/6000 xlc compiler does it this way */
  141. #pragma alloca
  142. #endif
  143. #ifndef alloca
  144. #ifdef __GNUC__
  145. #else /* Not GNU C.  */
  146. #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
  147. #else /* Not sparc */
  148. #ifdef MSDOS
  149. #endif /* MSDOS */
  150. #endif /* Not sparc.  */
  151. #endif /* Not GNU C.  */
  152. #define alloca malloc
  153. #endif /* alloca now defined.  */
  154.  
  155. #ifndef YYDEBUG    /* If not declared otherwise... */
  156. int yydebug;    /* declare yydebug to satisfy extern in ftnchek.c */
  157. #ifdef DEVELOPMENT
  158. #define YYDEBUG 1        /* For development it is handy */
  159. #else
  160. #define YYDEBUG 0
  161. #endif
  162. #endif
  163.  
  164. #ifdef DEVELOPMENT
  165. #define DEBUG_PARSER
  166. #endif
  167.  
  168. PRIVATE int current_datatype,    /* set when parse type_name or type_stmt */
  169.     current_size_is_adjustable, /* set in CHARACTER declarations */
  170.     current_size_is_expression, /* set in CHARACTER declarations */
  171.     control_item_count;    /* count of items in control_info_list */
  172. int io_internal_file,    /* Flag for catching misuse of internal files */
  173.     io_list_directed,    /* Flag for use in processing io control lists */
  174.     io_warning_given;        /* to prevent multiple warnings */
  175.             /* Flag shared with forlex for lexing hints */
  176. int stmt_sequence_no;   /* set when parsing, reset to 0 at end_stmt */
  177.  
  178. PRIVATE long current_typesize;    /* for type*len declarations: value of len */
  179. PRIVATE char *current_len_text;    /* for type*len declarations: text of len */
  180.  
  181. PRIVATE Token save_token;    /* Holds token shared by productions */
  182.  
  183. extern unsigned prev_stmt_line_num; /* shared with advance */
  184.  
  185. unsigned true_prev_stmt_line_num;    /* shared with symtab.c */
  186.  
  187. PRIVATE int
  188.     current_module_hash = -1,    /* hashtable index of current module name */
  189.     current_module_type,
  190.     executable_stmt=FALSE,
  191.     prev_stmt_class=0,         /* flags for lexer */
  192.     prev_goto=FALSE,
  193.     goto_flag=FALSE;    /* if unconditional GOTO was encountered */
  194.  
  195. int 
  196.     complex_const_allowed=FALSE, /* for help in lookahead for these */
  197.     in_assignment_stmt=FALSE,
  198.     inside_format=FALSE,    /* when inside parens of FORMAT  */
  199.     integer_context=FALSE;    /* says integers-only are to follow */
  200.  
  201.                 /* Defns of private functions */
  202.  
  203. PROTO(PRIVATE Token * add_tree_node,( Token *node, Token *left, Token *right ));
  204. PROTO(PRIVATE Token * append_token,( Token *tlist, Token *t ));
  205. PROTO(PRIVATE void check_stmt_sequence,( Token *t, int seq_num ));
  206. PROTO(PRIVATE void do_binexpr,( Token *l_expr, Token *op, Token *r_expr,
  207.             Token *result ));
  208. PROTO(PRIVATE int do_bounds_type,( Token *t1, Token *t2, Token *t3 ));
  209. PROTO(PRIVATE void do_unexpr,( Token *op, Token *expr, Token *result ));
  210. PROTO(PRIVATE Token * empty_token,( Token *t ));
  211. PROTO(PRIVATE void END_processing,( Token *t ));
  212. PROTO(PRIVATE void init_io_ctrl_list,( void ));
  213. #ifdef DEBUG_PARSER
  214. PROTO(PRIVATE void print_exprlist,( char *s, Token *t ));
  215. PROTO(PRIVATE void print_comlist,( char *s, Token *t ));
  216. #endif
  217.  
  218.         /* Uses of Token fields for nonterminals: */
  219. /* NOTE: As of Aug 1994 these are undergoing revision to separate the
  220.          use of class, subclass fields */
  221. /*
  222.   1. dim_bound_lists: dimensioning info for arrays:
  223.        token.class = no. of dimensions,  --> TOK_dims
  224.        token.subclass = no. of elements  --> TOK_elts
  225.   2. expressions
  226.        token.value.integer = hash index (of identifier)
  227.        token.class = type_byte = storage_class << 4 + datatype  --> TOK_type
  228.        token.subclass = flags: CONST_EXPR, LVALUE_EXPR, etc.    --> TOK_flags
  229.   3. common variable lists
  230.        token.subclass = flag: COMMA_FLAG used to handle extra/missing commas
  231.                                 --> TOK_flags
  232.   4. substring_interval
  233.        token.class = start index  --> TOK_start
  234.        token.subclass = end index --> TOK_end
  235. */
  236.  
  237.  
  238.  
  239. #ifndef YYLTYPE
  240. typedef
  241.   struct yyltype
  242.     {
  243.       int timestamp;
  244.       int first_line;
  245.       int first_column;
  246.       int last_line;
  247.       int last_column;
  248.       char *text;
  249.    }
  250.   yyltype;
  251.  
  252. #define YYLTYPE yyltype
  253. #endif
  254.  
  255. #ifndef YYSTYPE
  256. #define YYSTYPE int
  257. #endif
  258. #include <stdio.h>
  259.  
  260. #ifndef __cplusplus
  261. #ifndef __STDC__
  262. #define const
  263. #endif
  264. #endif
  265.  
  266.  
  267.  
  268. #define    YYFINAL        819
  269. #define    YYFLAG        -32768
  270. #define    YYNTBASE    103
  271.  
  272. #define YYTRANSLATE(x) ((unsigned)(x) <= 343 ? yytranslate[x] : 342)
  273.  
  274. static const char yytranslate[] = {     0,
  275.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  276.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  277.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  278.      2,     2,     2,     2,     2,    99,     2,     2,     2,    91,
  279.     90,    93,   100,    92,    96,    98,    95,     2,     2,     2,
  280.      2,     2,     2,     2,     2,     2,     2,    94,     2,   101,
  281.     97,   102,     2,     2,     2,     2,     2,     2,     2,     2,
  282.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  283.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  284.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  285.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  286.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  287.      2,     2,     2,     2,     2,     2,    88,     2,     2,     2,
  288.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  289.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  290.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  291.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  292.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  293.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  294.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  295.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  296.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  297.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  298.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  299.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  300.      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
  301.      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
  302.     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  303.     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
  304.     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
  305.     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
  306.     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
  307.     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
  308.     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
  309.     86,    87,    89
  310. };
  311.  
  312. #if YYDEBUG != 0
  313. static const short yyprhs[] = {     0,
  314.      0,     2,     3,     5,     8,    10,    12,    14,    16,    18,
  315.     21,    23,    25,    27,    29,    31,    34,    36,    38,    40,
  316.     42,    44,    47,    50,    54,    56,    58,    60,    62,    64,
  317.     66,    68,    70,    72,    74,    76,    78,    80,    82,    84,
  318.     86,    88,    90,    92,    94,    96,    98,   100,   102,   104,
  319.    106,   108,   110,   112,   114,   116,   118,   120,   122,   124,
  320.    126,   128,   130,   132,   134,   136,   138,   140,   142,   144,
  321.    146,   148,   150,   152,   153,   158,   162,   169,   171,   175,
  322.    182,   186,   193,   196,   198,   200,   202,   204,   206,   208,
  323.    212,   219,   221,   222,   224,   226,   230,   232,   234,   237,
  324.    241,   244,   246,   250,   252,   256,   261,   263,   267,   269,
  325.    273,   275,   279,   280,   285,   289,   295,   299,   303,   305,
  326.    307,   309,   314,   317,   320,   324,   328,   333,   335,   338,
  327.    341,   345,   348,   350,   352,   355,   357,   360,   362,   364,
  328.    368,   370,   373,   376,   380,   382,   385,   387,   390,   394,
  329.    398,   402,   407,   409,   413,   415,   417,   419,   421,   423,
  330.    426,   428,   431,   433,   435,   437,   441,   443,   447,   449,
  331.    451,   453,   457,   459,   463,   465,   469,   471,   475,   479,
  332.    481,   482,   487,   488,   494,   496,   500,   502,   506,   510,
  333.    512,   516,   522,   526,   528,   532,   533,   538,   542,   544,
  334.    548,   552,   554,   558,   562,   564,   568,   574,   576,   578,
  335.    580,   583,   587,   589,   593,   595,   599,   603,   605,   608,
  336.    612,   613,   614,   621,   623,   627,   629,   631,   633,   637,
  337.    639,   643,   645,   647,   649,   651,   653,   657,   659,   661,
  338.    669,   673,   679,   680,   681,   688,   690,   692,   694,   696,
  339.    703,   708,   715,   723,   727,   734,   742,   744,   747,   750,
  340.    755,   766,   769,   773,   774,   780,   783,   784,   785,   794,
  341.    797,   800,   804,   810,   811,   819,   820,   827,   831,   836,
  342.    839,   843,   849,   853,   856,   859,   863,   867,   868,   870,
  343.    872,   874,   875,   879,   880,   885,   886,   892,   898,   905,
  344.    913,   917,   923,   925,   929,   935,   939,   940,   941,   949,
  345.    953,   954,   955,   963,   965,   969,   973,   975,   977,   981,
  346.    985,   989,   991,   993,   997,   999,  1001,  1009,  1010,  1017,
  347.   1018,  1025,  1026,  1033,  1037,  1043,  1045,  1049,  1055,  1057,
  348.   1060,  1064,  1070,  1072,  1074,  1076,  1078,  1080,  1081,  1088,
  349.   1089,  1091,  1093,  1096,  1098,  1100,  1102,  1106,  1108,  1110,
  350.   1112,  1114,  1116,  1118,  1120,  1122,  1124,  1126,  1128,  1130,
  351.   1132,  1135,  1138,  1139,  1140,  1146,  1151,  1152,  1154,  1156,
  352.   1160,  1162,  1163,  1167,  1168,  1174,  1175,  1182,  1185,  1187,
  353.   1191,  1193,  1197,  1200,  1204,  1209,  1211,  1212,  1214,  1216,
  354.   1220,  1222,  1224,  1226,  1230,  1234,  1236,  1240,  1242,  1246,
  355.   1248,  1251,  1253,  1257,  1259,  1262,  1265,  1269,  1273,  1275,
  356.   1279,  1283,  1285,  1289,  1291,  1295,  1297,  1299,  1301,  1303,
  357.   1305,  1309,  1311,  1313,  1315,  1317,  1319,  1321,  1323,  1325,
  358.   1327,  1329,  1331,  1333,  1335,  1337,  1342,  1347,  1349,  1353,
  359.   1355,  1358,  1361,  1364,  1367,  1370,  1374,  1379,  1384,  1390,
  360.   1392,  1394,  1396,  1398,  1400,  1402,  1404,  1406,  1409,  1412,
  361.   1414,  1416,  1418,  1420,  1421
  362. };
  363.  
  364. static const short yyrhs[] = {   104,
  365.      0,     0,   105,     0,   104,   105,     0,   106,     0,   112,
  366.      0,    88,     0,   107,     0,   110,     0,     5,   108,     0,
  367.    108,     0,   109,     0,   113,     0,   116,     0,   119,     0,
  368.      1,    88,     0,   122,     0,   125,     0,   131,     0,   137,
  369.      0,   111,     0,     5,   111,     0,    46,    88,     0,    60,
  370.     13,    88,     0,   114,     0,   183,     0,   175,     0,   199,
  371.      0,   115,     0,   124,     0,   279,     0,   139,     0,   144,
  372.      0,   151,     0,   158,     0,   164,     0,   187,     0,   189,
  373.      0,   196,     0,   191,     0,   117,     0,   118,     0,   219,
  374.      0,   221,     0,   224,     0,   241,     0,   303,     0,   214,
  375.      0,   218,     0,   220,     0,   240,     0,   242,     0,   249,
  376.      0,   251,     0,   244,     0,   252,     0,   255,     0,   275,
  377.      0,   271,     0,   273,     0,   265,     0,   267,     0,   269,
  378.      0,   296,     0,   120,     0,   121,     0,   225,     0,   226,
  379.      0,   234,     0,   239,     0,   229,     0,   232,     0,   233,
  380.      0,     0,    73,   123,   337,    88,     0,    50,   337,    88,
  381.      0,    50,   337,    91,   134,    90,    88,     0,   126,     0,
  382.    127,   337,    88,     0,   127,   337,    91,   134,    90,    88,
  383.      0,   128,   337,    88,     0,   128,   337,    91,   134,    90,
  384.     88,     0,   130,   129,     0,   129,     0,    55,     0,   165,
  385.      0,   168,     0,   169,     0,   132,     0,   133,   337,    88,
  386.      0,   133,   337,    91,   134,    90,    88,     0,    80,     0,
  387.      0,   135,     0,   136,     0,   135,    92,   136,     0,   337,
  388.      0,    93,     0,   138,    88,     0,   138,   337,    88,     0,
  389.     28,    37,     0,    29,     0,    38,   140,    88,     0,   141,
  390.      0,   140,    92,   141,     0,   337,    91,   142,    90,     0,
  391.    143,     0,   142,    92,   143,     0,   325,     0,   325,    94,
  392.    325,     0,    93,     0,   325,    94,    93,     0,     0,    51,
  393.    145,   146,    88,     0,    91,   147,    90,     0,   146,    92,
  394.     91,   147,    90,     0,   148,    92,   148,     0,   147,    92,
  395.    148,     0,   337,     0,   149,     0,   150,     0,   337,    91,
  396.    328,    90,     0,   337,   332,     0,   149,   332,     0,    34,
  397.    155,    88,     0,    34,   152,    88,     0,    34,   155,   152,
  398.     88,     0,   153,     0,   152,   153,     0,   154,   155,     0,
  399.     95,   337,    95,     0,    95,    95,     0,    24,     0,   156,
  400.      0,   155,   156,     0,   157,     0,   157,    92,     0,   337,
  401.      0,   141,     0,    65,   159,    88,     0,   160,     0,   159,
  402.    160,     0,   161,   162,     0,    95,   337,    95,     0,   163,
  403.      0,   162,   163,     0,   337,     0,   337,    92,     0,   165,
  404.    170,    88,     0,   168,   172,    88,     0,   169,   172,    88,
  405.      0,   169,    92,   172,    88,     0,   166,     0,   166,    93,
  406.    339,     0,   167,     0,    62,     0,    75,     0,    35,     0,
  407.     64,     0,    40,    71,     0,    42,     0,    40,    35,     0,
  408.     41,     0,    30,     0,    32,     0,   168,    93,   182,     0,
  409.    171,     0,   170,    92,   171,     0,   337,     0,   141,     0,
  410.    173,     0,   172,    92,   173,     0,   337,     0,   337,    93,
  411.    182,     0,   141,     0,   141,    93,   182,     0,    59,     0,
  412.    174,   176,    88,     0,   174,    66,    88,     0,   178,     0,
  413.      0,   176,    92,   177,   178,     0,     0,   130,    91,   179,
  414.    180,    90,     0,   181,     0,   180,    92,   181,     0,    16,
  415.      0,    16,    96,    16,     0,    91,    93,    90,     0,   339,
  416.      0,    91,   324,    90,     0,    68,    91,   184,    90,    88,
  417.      0,    68,   184,    88,     0,   185,     0,   184,    92,   185,
  418.      0,     0,   337,   186,    97,   308,     0,    52,   188,    88,
  419.      0,   337,     0,   188,    92,   337,     0,    63,   190,    88,
  420.      0,   337,     0,   190,    92,   337,     0,    70,   192,    88,
  421.      0,   193,     0,   192,    92,   193,     0,    91,   194,    92,
  422.    195,    90,     0,   337,     0,   337,     0,   141,     0,    78,
  423.     88,     0,    78,   197,    88,     0,   198,     0,   197,    92,
  424.    198,     0,   337,     0,    95,   337,    95,     0,    37,   200,
  425.     88,     0,   201,     0,   200,   201,     0,   200,    92,   201,
  426.      0,     0,     0,   204,    95,   202,   206,   203,    95,     0,
  427.    205,     0,   204,    92,   205,     0,   217,     0,   212,     0,
  428.    207,     0,   206,    92,   207,     0,   209,     0,   208,    93,
  429.    209,     0,   339,     0,   337,     0,   338,     0,   337,     0,
  430.    211,     0,   210,    92,   211,     0,   326,     0,   212,     0,
  431.     91,   210,    92,   337,    97,   213,    90,     0,   324,    92,
  432.    324,     0,   324,    92,   324,    92,   324,     0,     0,     0,
  433.    217,    97,   215,   309,   216,    88,     0,   334,     0,   326,
  434.      0,   331,     0,   292,     0,    26,   340,   341,    82,   334,
  435.     88,     0,   222,   340,   341,    88,     0,   222,    91,   223,
  436.     90,   322,    88,     0,   222,    91,   223,    90,    92,   322,
  437.     88,     0,   222,   337,    88,     0,   222,   337,    91,   223,
  438.     90,    88,     0,   222,   337,    92,    91,   223,    90,    88,
  439.      0,    57,     0,    56,    82,     0,   340,   341,     0,   223,
  440.     92,   340,   341,     0,   227,   340,   341,    92,   340,   341,
  441.     92,   340,   341,    88,     0,   227,   116,     0,   227,    81,
  442.     88,     0,     0,    58,    91,   228,   309,    90,     0,    44,
  443.    226,     0,     0,     0,    45,    91,   230,   309,    90,   231,
  444.     81,    88,     0,    44,    88,     0,    49,    88,     0,    46,
  445.     58,    88,     0,   237,   334,    97,   238,    88,     0,     0,
  446.    237,    84,    91,   235,   309,    90,    88,     0,     0,    43,
  447.     91,   236,   309,    90,    88,     0,    39,   340,   341,     0,
  448.     39,   340,   341,    92,     0,    39,   340,     0,   323,    92,
  449.    323,     0,   323,    92,   323,    92,   323,     0,    46,    39,
  450.     88,     0,    47,    88,     0,    36,    88,     0,    79,   243,
  451.     88,     0,    69,   243,    88,     0,     0,     6,     0,   337,
  452.      0,    13,     0,     0,   247,   245,    88,     0,     0,   247,
  453.    262,   246,    88,     0,     0,    85,   248,    91,   258,    90,
  454.      0,   250,    91,   258,    90,    88,     0,   250,    91,   258,
  455.     90,   262,    88,     0,   250,    91,   258,    90,    92,   262,
  456.     88,     0,   250,   278,    88,     0,   250,   278,    92,   262,
  457.     88,     0,    74,     0,    25,   278,    88,     0,    25,   278,
  458.     92,   262,    88,     0,    72,   278,    88,     0,     0,     0,
  459.     72,   278,    92,   253,   262,   254,    88,     0,    83,   278,
  460.     88,     0,     0,     0,    83,   278,    92,   256,   262,   257,
  461.     88,     0,   259,     0,   258,    92,   259,     0,   337,    97,
  462.    277,     0,   277,     0,   277,     0,   337,    97,   277,     0,
  463.    260,    92,   261,     0,   337,    97,   277,     0,   337,     0,
  464.    263,     0,   262,    92,   263,     0,   309,     0,   264,     0,
  465.     91,   262,    92,   334,    97,   238,    90,     0,     0,    67,
  466.    266,    91,   260,    90,    88,     0,     0,    33,   268,    91,
  467.    258,    90,    88,     0,     0,    61,   270,    91,   258,    90,
  468.     88,     0,   272,   277,    88,     0,   272,    91,   258,    90,
  469.     88,     0,    27,     0,   274,   277,    88,     0,   274,    91,
  470.    258,    90,    88,     0,    48,     0,    46,    53,     0,   276,
  471.    277,    88,     0,   276,    91,   258,    90,    88,     0,    77,
  472.      0,   309,     0,    93,     0,   318,     0,    93,     0,     0,
  473.     54,   280,    91,   281,    90,    88,     0,     0,   282,     0,
  474.    283,     0,   282,   283,     0,   284,     0,   285,     0,   286,
  475.      0,    91,   282,    90,     0,    15,     0,    13,     0,    14,
  476.      0,   288,     0,   289,     0,    92,     0,    95,     0,    24,
  477.      0,    94,     0,    98,     0,   287,     0,    99,     0,     6,
  478.      0,    96,     6,     0,   100,     6,     0,     0,     0,   101,
  479.    290,   322,   291,   102,     0,   335,    91,   293,    90,     0,
  480.      0,   294,     0,   295,     0,   294,    92,   295,     0,   334,
  481.      0,     0,   300,   297,    88,     0,     0,   300,    91,    90,
  482.    298,    88,     0,     0,   300,    91,   301,    90,   299,    88,
  483.      0,    31,   337,     0,   302,     0,   301,    92,   302,     0,
  484.    309,     0,    93,   340,   341,     0,    76,    88,     0,    76,
  485.    322,    88,     0,   305,    91,   306,    90,     0,   335,     0,
  486.      0,   307,     0,   309,     0,   307,    92,   309,     0,   309,
  487.      0,   310,     0,   311,     0,   309,    20,   311,     0,   309,
  488.     21,   311,     0,   312,     0,   311,    19,   312,     0,   313,
  489.      0,   312,    18,   313,     0,   314,     0,    22,   314,     0,
  490.    315,     0,   314,    17,   314,     0,   316,     0,    96,   316,
  491.      0,   100,   316,     0,   315,   100,   316,     0,   315,    96,
  492.    316,     0,   317,     0,   316,    95,   317,     0,   316,    93,
  493.    317,     0,   318,     0,   318,    23,   317,     0,   319,     0,
  494.    318,    24,   319,     0,   334,     0,   327,     0,   304,     0,
  495.    330,     0,   320,     0,    91,   309,    90,     0,   321,     0,
  496.     13,     0,    14,     0,    12,     0,     6,     0,     7,     0,
  497.      8,     0,     9,     0,    10,     0,    11,     0,   315,     0,
  498.    315,     0,   315,     0,   315,     0,   336,    91,   328,    90,
  499.      0,   336,    91,   328,    90,     0,   329,     0,   328,    92,
  500.    329,     0,   309,     0,   305,   332,     0,   304,   332,     0,
  501.    327,   332,     0,   335,   332,     0,   326,   332,     0,    91,
  502.     94,    90,     0,    91,   333,    94,    90,     0,    91,    94,
  503.    333,    90,     0,    91,   333,    94,   333,    90,     0,   315,
  504.      0,   335,     0,   336,     0,     3,     0,     4,     0,     3,
  505.      0,     4,     0,   321,     0,    96,   321,     0,   100,   321,
  506.      0,    12,     0,    13,     0,    14,     0,     6,     0,     0,
  507.      6,     0
  508. };
  509.  
  510. #endif
  511.  
  512. #if YYDEBUG != 0
  513. static const short yyrline[] = { 0,
  514.    257,   258,   261,   262,   266,   293,   294,   302,   303,   306,
  515.    314,   325,   330,   334,   347,   353,   367,   371,   375,   379,
  516.    385,   386,   389,   392,   411,   417,   426,   430,   436,   442,
  517.    446,   449,   450,   451,   452,   453,   454,   455,   456,   457,
  518.    462,   467,   473,   474,   475,   476,   477,   480,   481,   482,
  519.    483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
  520.    493,   494,   495,   496,   499,   504,   510,   512,   513,   525,
  521.    537,   538,   539,   543,   544,   561,   566,   578,   582,   598,
  522.    614,   630,   648,   651,   654,   660,   661,   662,   669,   673,
  523.    684,   702,   708,   712,   715,   719,   725,   730,   742,   759,
  524.    772,   776,   783,   786,   787,   791,   797,   804,   812,   820,
  525.    832,   837,   846,   847,   850,   851,   854,   858,   865,   869,
  526.    873,   879,   883,   884,   888,   902,   910,   928,   932,   940,
  527.    953,   958,   962,   968,   973,   986,   991,   998,  1003,  1016,
  528.   1028,  1029,  1035,  1042,  1048,  1052,  1065,  1071,  1080,  1081,
  529.   1082,  1083,  1086,  1092,  1113,  1116,  1121,  1126,  1131,  1138,
  530.   1144,  1150,  1159,  1168,  1178,  1189,  1206,  1207,  1210,  1217,
  531.   1226,  1227,  1230,  1239,  1251,  1260,  1276,  1279,  1291,  1306,
  532.   1307,  1309,  1313,  1314,  1317,  1318,  1321,  1336,  1360,  1370,
  533.   1376,  1395,  1396,  1403,  1404,  1407,  1408,  1418,  1421,  1425,
  534.   1432,  1435,  1439,  1446,  1453,  1454,  1457,  1460,  1467,  1474,
  535.   1482,  1486,  1489,  1490,  1493,  1497,  1505,  1508,  1509,  1510,
  536.   1513,  1516,  1517,  1520,  1521,  1524,  1528,  1531,  1532,  1535,
  537.   1536,  1539,  1540,  1546,  1547,  1554,  1555,  1558,  1562,  1565,
  538.   1572,  1573,  1578,  1580,  1594,  1602,  1603,  1604,  1605,  1611,
  539.   1619,  1623,  1624,  1628,  1632,  1636,  1642,  1646,  1652,  1653,
  540.   1657,  1670,  1680,  1689,  1689,  1702,  1703,  1703,  1712,  1716,
  541.   1720,  1721,  1732,  1764,  1765,  1773,  1774,  1784,  1785,  1786,
  542.   1793,  1797,  1803,  1804,  1808,  1812,  1816,  1819,  1820,  1821,
  543.   1825,  1829,  1831,  1831,  1833,  1835,  1836,  1844,  1845,  1846,
  544.   1847,  1848,  1850,  1853,  1858,  1866,  1867,  1869,  1870,  1872,
  545.   1877,  1879,  1880,  1887,  1891,  1913,  1917,  1957,  1965,  1970,
  546.   1976,  1980,  1987,  1988,  1991,  2001,  2005,  2018,  2019,  2023,
  547.   2024,  2028,  2029,  2033,  2040,  2042,  2046,  2053,  2055,  2056,
  548.   2060,  2067,  2069,  2077,  2078,  2082,  2088,  2092,  2092,  2099,
  549.   2100,  2104,  2105,  2108,  2109,  2110,  2113,  2114,  2117,  2118,
  550.   2119,  2120,  2123,  2124,  2125,  2126,  2127,  2128,  2135,  2138,
  551.   2139,  2140,  2144,  2145,  2146,  2154,  2168,  2172,  2175,  2179,
  552.   2186,  2190,  2196,  2196,  2202,  2202,  2211,  2213,  2219,  2224,
  553.   2230,  2237,  2245,  2249,  2256,  2284,  2294,  2300,  2303,  2308,
  554.   2317,  2346,  2361,  2363,  2368,  2375,  2377,  2384,  2386,  2393,
  555.   2395,  2401,  2403,  2411,  2413,  2417,  2421,  2426,  2433,  2435,
  556.   2445,  2452,  2454,  2461,  2463,  2470,  2472,  2474,  2476,  2478,
  557.   2487,  2510,  2512,  2517,  2526,  2533,  2538,  2543,  2548,  2557,
  558.   2562,  2570,  2584,  2604,  2628,  2654,  2670,  2686,  2690,  2696,
  559.   2710,  2725,  2733,  2742,  2746,  2755,  2769,  2779,  2789,  2801,
  560.   2822,  2823,  2826,  2833,  2842,  2843,  2847,  2848,  2849,  2850,
  561.   2851,  2852,  2858,  2877,  2884
  562. };
  563.  
  564. static const char * const yytname[] = {   "$","error","$illegal.","tok_identifier",
  565. "tok_array_identifier","tok_label","tok_integer_const","tok_real_const","tok_dp_const",
  566. "tok_quad_const","tok_complex_const","tok_dcomplex_const","tok_logical_const",
  567. "tok_string","tok_hollerith","tok_edit_descriptor","tok_letter","tok_relop",
  568. "tok_AND","tok_OR","tok_EQV","tok_NEQV","tok_NOT","tok_power","tok_concat","tok_ACCEPT",
  569. "tok_ASSIGN","tok_BACKSPACE","tok_BLOCK","tok_BLOCKDATA","tok_BYTE","tok_CALL",
  570. "tok_CHARACTER","tok_CLOSE","tok_COMMON","tok_COMPLEX","tok_CONTINUE","tok_DATA",
  571. "tok_DIMENSION","tok_DO","tok_DOUBLE","tok_DOUBLECOMPLEX","tok_DOUBLEPRECISION",
  572. "tok_DOWHILE","tok_ELSE","tok_ELSEIF","tok_END","tok_ENDDO","tok_ENDFILE","tok_ENDIF",
  573. "tok_ENTRY","tok_EQUIVALENCE","tok_EXTERNAL","tok_FILE","tok_FORMAT","tok_FUNCTION",
  574. "tok_GO","tok_GOTO","tok_IF","tok_IMPLICIT","tok_INCLUDE","tok_INQUIRE","tok_INTEGER",
  575. "tok_INTRINSIC","tok_LOGICAL","tok_NAMELIST","tok_NONE","tok_OPEN","tok_PARAMETER",
  576. "tok_PAUSE","tok_POINTER","tok_PRECISION","tok_PRINT","tok_PROGRAM","tok_READ",
  577. "tok_REAL","tok_RETURN","tok_REWIND","tok_SAVE","tok_STOP","tok_SUBROUTINE",
  578. "tok_THEN","tok_TO","tok_TYPE","tok_WHILE","tok_WRITE","tok_illegal","tok_empty",
  579. "EOS","REDUCE","')'","'('","','","'*'","':'","'/'","'-'","'='","'.'","'$'","'+'",
  580. "'<'","'>'","prog_body","stmt_list","stmt_list_item","ordinary_stmt","stmt",
  581. "unlabeled_stmt","subprogram_header","end_stmt","unlabeled_end_stmt","include_stmt",
  582. "specification_stmt","anywhere_stmt","specif_stmt","executable_stmt","transfer_stmt",
  583. "nontransfer_stmt","restricted_stmt","restricted_nontransfer_stmt","else_or_endif_stmt",
  584. "prog_stmt","@1","entry_stmt","function_stmt","unlabeled_function_stmt","typed_function_handle",
  585. "plain_function_handle","function_keyword","type_name","subroutine_stmt","unlabeled_subroutine_stmt",
  586. "subroutine_handle","dummy_argument_list","non_empty_arg_list","dummy_argument",
  587. "block_data_stmt","block_data_handle","dimension_stmt","array_declarator_list",
  588. "array_declarator","dim_bound_list","dim_bound_item","equivalence_stmt","@2",
  589. "equivalence_list","equivalence_list_item","equiv_entity","array_equiv_name",
  590. "substring_equiv_name","common_stmt","common_block_list","labeled_common_block",
  591. "common_block_name","common_variable_list","common_list_item","common_entity",
  592. "namelist_stmt","namelist_list","namelist_decl","namelist_name","namelist_var_list",
  593. "namelist_item","type_stmt","arith_type_name","sizeable_type_name","unsizeable_type_name",
  594. "plain_char_type_name","char_type_name","arith_type_decl_list","arith_type_decl_item",
  595. "char_type_decl_list","char_type_decl_item","implicit_handle","implicit_stmt",
  596. "implicit_decl_list","@3","implicit_decl_item","@4","letter_list","letter_list_item",
  597. "len_specification","parameter_stmt","parameter_defn_list","parameter_defn_item",
  598. "@5","external_stmt","external_name_list","intrinsic_stmt","intrinsic_name_list",
  599. "pointer_stmt","pointer_item_list","pointer_item","pointer_name","pointee_name",
  600. "save_stmt","save_list","save_item","data_stmt","data_defn_list","data_defn_item",
  601. "@6","@7","data_defn_assignee_list","data_defn_assignee","data_value_list","data_value",
  602. "data_repeat_factor","data_constant_value","data_dlist","data_dlist_item","data_implied_do_list",
  603. "data_do_loop_bounds","assignment_stmt","@8","@9","lvalue","assign_stmt","unconditional_goto",
  604. "computed_goto","assigned_goto","goto","goto_list","arithmetic_if_stmt","logical_if_stmt",
  605. "block_if_stmt","if_handle","@10","else_if_stmt","@11","@12","else_stmt","end_if_stmt",
  606. "do_stmt","@13","@14","do_handle","do_loop_bounds","enddo_stmt","continue_stmt",
  607. "stop_stmt","pause_stmt","stop_info","write_stmt","@15","@16","write_handle",
  608. "@17","read_stmt","read_handle","accept_stmt","print_stmt","@18","@19","type_output_stmt",
  609. "@20","@21","control_info_list","control_info_item","open_info_list","open_info_item",
  610. "io_list","io_item","io_implied_do_list","open_stmt","@22","close_stmt","@23",
  611. "inquire_stmt","@24","backspace_stmt","backspace_handle","endfile_stmt","endfile_handle",
  612. "rewind_stmt","rewind_handle","unit_id","format_id","format_stmt","@25","format_spec",
  613. "nonempty_format_spec","fmt_spec_item","repeatable_fmt_item","unrepeatable_fmt_item",
  614. "fmt_item_separator","nonstandard_fmt_item","repeat_spec","variable_fmt_item",
  615. "@26","@27","stmt_function_handle","stmt_function_dummy_list","nonempty_stmt_fun_dummy_list",
  616. "stmt_function_dummy_arg","call_stmt","@28","@29","@30","call_handle","subr_arg_list",
  617. "subr_arg","return_stmt","function_reference","fun_or_substr_handle","fun_arg_list",
  618. "nonempty_fun_arg_list","parameter_expr","expr","log_expr","log_disjunct","log_term",
  619. "log_factor","log_primary","arith_expr","term","factor","char_expr","primary",
  620. "literal_const","numeric_const","integer_expr","int_real_dp_expr","int_constant_expr",
  621. "dim_bound_expr","array_element_lvalue","array_element_name","subscript_list",
  622. "subscript","substring_name","substring_lvalue","substring_interval","substr_index_expr",
  623. "variable_name","scalar_name","array_name","symbolic_name","data_constant","nonzero_unsigned_int_const",
  624. "pre_label","label",""
  625. };
  626. #endif
  627.  
  628. static const short yyr1[] = {     0,
  629.    103,   103,   104,   104,   105,   105,   105,   106,   106,   107,
  630.    107,   108,   108,   108,   108,   108,   109,   109,   109,   109,
  631.    110,   110,   111,   112,   113,   113,   113,   113,   113,   114,
  632.    114,   115,   115,   115,   115,   115,   115,   115,   115,   115,
  633.    116,   116,   117,   117,   117,   117,   117,   118,   118,   118,
  634.    118,   118,   118,   118,   118,   118,   118,   118,   118,   118,
  635.    118,   118,   118,   118,   119,   119,   120,   120,   120,   120,
  636.    121,   121,   121,   123,   122,   124,   124,   125,   126,   126,
  637.    126,   126,   127,   128,   129,   130,   130,   130,   131,   132,
  638.    132,   133,   134,   134,   135,   135,   136,   136,   137,   137,
  639.    138,   138,   139,   140,   140,   141,   142,   142,   143,   143,
  640.    143,   143,   145,   144,   146,   146,   147,   147,   148,   148,
  641.    148,   149,   150,   150,   151,   151,   151,   152,   152,   153,
  642.    154,   154,   154,   155,   155,   156,   156,   157,   157,   158,
  643.    159,   159,   160,   161,   162,   162,   163,   163,   164,   164,
  644.    164,   164,   165,   165,   165,   166,   166,   166,   166,   167,
  645.    167,   167,   167,   167,   168,   169,   170,   170,   171,   171,
  646.    172,   172,   173,   173,   173,   173,   174,   175,   175,   176,
  647.    177,   176,   179,   178,   180,   180,   181,   181,   182,   182,
  648.    182,   183,   183,   184,   184,   186,   185,   187,   188,   188,
  649.    189,   190,   190,   191,   192,   192,   193,   194,   195,   195,
  650.    196,   196,   197,   197,   198,   198,   199,   200,   200,   200,
  651.    202,   203,   201,   204,   204,   205,   205,   206,   206,   207,
  652.    207,   208,   208,   209,   209,   210,   210,   211,   211,   212,
  653.    213,   213,   215,   216,   214,   217,   217,   217,   217,   218,
  654.    219,   220,   220,   221,   221,   221,   222,   222,   223,   223,
  655.    224,   225,   226,   228,   227,   229,   230,   231,   229,   232,
  656.    233,   233,   234,   235,   234,   236,   234,   237,   237,   237,
  657.    238,   238,   239,   239,   240,   241,   242,   243,   243,   243,
  658.    243,   245,   244,   246,   244,   248,   247,   249,   249,   249,
  659.    249,   249,   250,   251,   251,   252,   253,   254,   252,   255,
  660.    256,   257,   255,   258,   258,   259,   259,   260,   260,   260,
  661.    261,   261,   262,   262,   263,   263,   264,   266,   265,   268,
  662.    267,   270,   269,   271,   271,   272,   273,   273,   274,   274,
  663.    275,   275,   276,   277,   277,   278,   278,   280,   279,   281,
  664.    281,   282,   282,   283,   283,   283,   284,   284,   285,   285,
  665.    285,   285,   286,   286,   286,   286,   286,   286,   287,   288,
  666.    288,   288,   290,   291,   289,   292,   293,   293,   294,   294,
  667.    295,   297,   296,   298,   296,   299,   296,   300,   301,   301,
  668.    302,   302,   303,   303,   304,   305,   306,   306,   307,   307,
  669.    308,   309,   310,   310,   310,   311,   311,   312,   312,   313,
  670.    313,   314,   314,   315,   315,   315,   315,   315,   316,   316,
  671.    316,   317,   317,   318,   318,   319,   319,   319,   319,   319,
  672.    319,   320,   320,   320,   320,   321,   321,   321,   321,   321,
  673.    321,   322,   323,   324,   325,   326,   327,   328,   328,   329,
  674.    330,   330,   330,   331,   331,   332,   332,   332,   332,   333,
  675.    334,   334,   335,   336,   337,   337,   338,   338,   338,   338,
  676.    338,   338,   339,   340,   341
  677. };
  678.  
  679. static const short yyr2[] = {     0,
  680.      1,     0,     1,     2,     1,     1,     1,     1,     1,     2,
  681.      1,     1,     1,     1,     1,     2,     1,     1,     1,     1,
  682.      1,     2,     2,     3,     1,     1,     1,     1,     1,     1,
  683.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  684.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  685.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  686.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  687.      1,     1,     1,     0,     4,     3,     6,     1,     3,     6,
  688.      3,     6,     2,     1,     1,     1,     1,     1,     1,     3,
  689.      6,     1,     0,     1,     1,     3,     1,     1,     2,     3,
  690.      2,     1,     3,     1,     3,     4,     1,     3,     1,     3,
  691.      1,     3,     0,     4,     3,     5,     3,     3,     1,     1,
  692.      1,     4,     2,     2,     3,     3,     4,     1,     2,     2,
  693.      3,     2,     1,     1,     2,     1,     2,     1,     1,     3,
  694.      1,     2,     2,     3,     1,     2,     1,     2,     3,     3,
  695.      3,     4,     1,     3,     1,     1,     1,     1,     1,     2,
  696.      1,     2,     1,     1,     1,     3,     1,     3,     1,     1,
  697.      1,     3,     1,     3,     1,     3,     1,     3,     3,     1,
  698.      0,     4,     0,     5,     1,     3,     1,     3,     3,     1,
  699.      3,     5,     3,     1,     3,     0,     4,     3,     1,     3,
  700.      3,     1,     3,     3,     1,     3,     5,     1,     1,     1,
  701.      2,     3,     1,     3,     1,     3,     3,     1,     2,     3,
  702.      0,     0,     6,     1,     3,     1,     1,     1,     3,     1,
  703.      3,     1,     1,     1,     1,     1,     3,     1,     1,     7,
  704.      3,     5,     0,     0,     6,     1,     1,     1,     1,     6,
  705.      4,     6,     7,     3,     6,     7,     1,     2,     2,     4,
  706.     10,     2,     3,     0,     5,     2,     0,     0,     8,     2,
  707.      2,     3,     5,     0,     7,     0,     6,     3,     4,     2,
  708.      3,     5,     3,     2,     2,     3,     3,     0,     1,     1,
  709.      1,     0,     3,     0,     4,     0,     5,     5,     6,     7,
  710.      3,     5,     1,     3,     5,     3,     0,     0,     7,     3,
  711.      0,     0,     7,     1,     3,     3,     1,     1,     3,     3,
  712.      3,     1,     1,     3,     1,     1,     7,     0,     6,     0,
  713.      6,     0,     6,     3,     5,     1,     3,     5,     1,     2,
  714.      3,     5,     1,     1,     1,     1,     1,     0,     6,     0,
  715.      1,     1,     2,     1,     1,     1,     3,     1,     1,     1,
  716.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  717.      2,     2,     0,     0,     5,     4,     0,     1,     1,     3,
  718.      1,     0,     3,     0,     5,     0,     6,     2,     1,     3,
  719.      1,     3,     2,     3,     4,     1,     0,     1,     1,     3,
  720.      1,     1,     1,     3,     3,     1,     3,     1,     3,     1,
  721.      2,     1,     3,     1,     2,     2,     3,     3,     1,     3,
  722.      3,     1,     3,     1,     3,     1,     1,     1,     1,     1,
  723.      3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  724.      1,     1,     1,     1,     1,     4,     4,     1,     3,     1,
  725.      2,     2,     2,     2,     2,     3,     4,     4,     5,     1,
  726.      1,     1,     1,     1,     1,     1,     1,     2,     2,     1,
  727.      1,     1,     1,     0,     1
  728. };
  729.  
  730. static const short yydefact[] = {     0,
  731.      0,   463,   464,     0,     0,   474,   336,     0,   102,   164,
  732.      0,   165,   330,     0,   158,     0,     0,     0,   474,     0,
  733.    163,   161,     0,     0,     0,     0,     0,   339,     0,     0,
  734.    113,     0,   348,    85,     0,   257,     0,   177,     0,   332,
  735.    156,     0,   159,     0,   328,     0,   288,     0,     0,    74,
  736.    303,   157,     0,   343,     0,   288,    92,     0,   296,     7,
  737.      0,     3,     5,     8,    11,    12,     9,    21,     6,    13,
  738.     25,    29,    14,    41,    42,    15,    65,    66,    17,    30,
  739.     18,    78,     0,     0,    84,     0,    19,    89,     0,    20,
  740.      0,    32,    33,    34,    35,    36,    86,   153,   155,    87,
  741.     88,     0,    27,    26,    37,    38,    40,    39,    28,    48,
  742.      0,    49,    43,    50,    44,   474,    45,    67,    68,   474,
  743.     71,    72,    73,    69,     0,    70,    51,    46,    52,    55,
  744.    292,    53,     0,    54,    56,    57,    61,    62,    63,    59,
  745.      0,    60,     0,    58,     0,    31,   249,    64,   382,    47,
  746.    247,   248,   246,   461,   462,    16,    10,    22,   436,   437,
  747.    438,   439,   440,   441,   435,   433,   434,     0,   347,     0,
  748.    428,     0,   346,   424,   430,   432,   427,   429,   426,   461,
  749.    462,     0,   101,   465,   466,   388,     0,   133,     0,   139,
  750.      0,   128,     0,     0,   134,   136,   138,   285,     0,     0,
  751.    218,     0,   224,   227,   226,     0,   104,     0,   280,   162,
  752.    160,   276,   270,   266,     0,   267,     0,   340,     0,    23,
  753.    284,   271,     0,     0,     0,   199,     0,   258,   264,     0,
  754.      0,     0,   202,     0,     0,   141,     0,     0,     0,     0,
  755.    194,   196,   289,   291,     0,   290,     0,     0,   205,     0,
  756.      0,   393,     0,     0,   442,   414,   419,   422,     0,   211,
  757.      0,     0,   213,   215,     0,     0,     0,     4,     0,     0,
  758.     83,     0,    99,     0,   170,     0,   167,   169,     0,     0,
  759.    175,     0,   171,   173,     0,     0,     0,     0,    86,    87,
  760.     88,     0,   180,   243,   474,     0,     0,     0,     0,   262,
  761.    474,     0,     0,     0,   461,   462,     0,     0,     0,   294,
  762.    323,   326,   325,   402,   403,   406,   408,   410,   412,     0,
  763.      0,     0,   345,     0,   344,     0,     0,     0,     0,     0,
  764.      0,     0,   455,   377,   454,     0,     0,   304,     0,   452,
  765.    397,   451,     0,   453,     0,   475,     0,     0,   132,     0,
  766.    126,   129,   130,   125,     0,   135,   137,     0,     0,   236,
  767.    239,   238,     0,   217,     0,   219,     0,   221,   103,     0,
  768.    278,     0,     0,   283,   272,    76,    93,     0,     0,   198,
  769.      0,   350,     0,    24,     0,   201,     0,     0,   140,   142,
  770.    143,   145,   147,     0,     0,   193,     0,     0,   287,     0,
  771.    208,   204,     0,   306,   307,     0,   415,   416,     0,     0,
  772.      0,     0,     0,   394,     0,   212,     0,   286,   310,   311,
  773.      0,    79,    93,    81,    93,    90,    93,   100,   149,     0,
  774.    473,   154,     0,   166,   190,     0,   150,     0,     0,     0,
  775.    151,   179,   183,   178,   181,     0,     0,     0,   254,   474,
  776.      0,     0,   263,     0,   274,     0,   411,     0,   325,   293,
  777.      0,     0,     0,     0,     0,     0,     0,   463,   464,     0,
  778.    314,   317,   344,     0,   301,     0,     0,   334,     0,   337,
  779.      0,   341,   384,   474,     0,   389,   391,   383,     0,   460,
  780.      0,     0,   378,   379,   426,   450,     0,   448,   431,     0,
  781.      0,   398,   399,   412,   425,     0,     0,     0,   131,   127,
  782.    111,     0,   107,   445,   109,     0,   220,   225,     0,   105,
  783.    279,     0,     0,    98,     0,    94,    95,    97,     0,     0,
  784.    120,   121,   119,   114,     0,   200,   370,   359,   360,   358,
  785.    365,     0,   363,   366,   364,     0,   367,   369,     0,   373,
  786.      0,   351,   352,   354,   355,   356,   368,   361,   362,     0,
  787.      0,   203,   144,   146,   148,     0,   318,     0,     0,   195,
  788.      0,     0,   206,     0,    75,   418,   417,   421,   420,   423,
  789.    216,   214,     0,     0,     0,     0,     0,   168,     0,   444,
  790.      0,   176,   172,   174,   152,     0,     0,   244,     0,   474,
  791.    259,     0,   474,   251,   474,     0,     0,   443,     0,     0,
  792.    324,   295,   404,   405,   407,   409,   413,     0,     0,     0,
  793.      0,     0,     0,     0,     0,     0,   386,     0,   456,     0,
  794.      0,   376,     0,   446,     0,   305,   395,     0,   447,     0,
  795.      0,   106,     0,     0,   237,     0,   436,   470,   471,   472,
  796.      0,     0,   222,   228,     0,   230,   467,   235,   234,   232,
  797.      0,   268,     0,     0,   115,     0,     0,   124,     0,   123,
  798.      0,     0,   371,   372,     0,     0,   353,   265,     0,     0,
  799.      0,     0,   192,   197,   401,   210,     0,   209,   308,   312,
  800.    297,     0,     0,     0,   189,   191,   187,     0,   185,   182,
  801.      0,     0,     0,     0,     0,     0,     0,     0,   273,     0,
  802.    426,   298,     0,     0,   315,   316,   302,   335,   338,   342,
  803.    385,   392,     0,   390,   458,   457,     0,   380,   381,   449,
  804.    400,   250,   331,   108,   112,   110,     0,   468,   469,     0,
  805.      0,     0,   277,     0,    77,    96,   118,   117,     0,     0,
  806.    357,   374,   349,   333,   329,   320,   322,   319,   207,     0,
  807.      0,    80,    82,    91,     0,   184,     0,   245,     0,   252,
  808.    260,   255,     0,     0,     0,   281,     0,     0,   299,   387,
  809.    459,     0,     0,   229,   223,   231,   235,     0,   122,   116,
  810.      0,     0,   309,   313,   188,   186,   253,   256,   474,   275,
  811.      0,     0,   300,   240,     0,   269,   375,   321,     0,   282,
  812.    327,   241,     0,     0,   261,   242,     0,     0,     0
  813. };
  814.  
  815. static const short yydefgoto[] = {   817,
  816.     61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
  817.     71,    72,    73,    74,    75,    76,    77,    78,    79,   251,
  818.     80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
  819.    525,   526,   527,    90,    91,    92,   206,   190,   512,   513,
  820.     93,   224,   379,   529,   530,   531,   532,    94,   191,   192,
  821.    193,   194,   195,   196,    95,   235,   236,   237,   391,   392,
  822.     96,    97,    98,    99,   100,   101,   276,   277,   282,   283,
  823.    102,   103,   292,   597,   293,   596,   698,   699,   434,   104,
  824.    240,   241,   398,   105,   225,   106,   232,   107,   248,   249,
  825.    400,   687,   108,   262,   263,   109,   200,   201,   519,   741,
  826.    202,   203,   653,   654,   655,   656,   359,   360,   204,   782,
  827.    110,   446,   701,   111,   112,   113,   114,   115,   116,   447,
  828.    117,   118,   119,   120,   383,   121,   373,   744,   122,   123,
  829.    124,   606,   372,   125,   607,   126,   127,   128,   129,   245,
  830.    130,   309,   462,   131,   267,   132,   133,   134,   135,   574,
  831.    760,   136,   583,   761,   470,   471,   566,   756,   310,   311,
  832.    312,   137,   238,   138,   187,   139,   231,   140,   141,   142,
  833.    143,   144,   145,   472,   170,   146,   227,   551,   552,   553,
  834.    554,   555,   556,   557,   558,   559,   675,   791,   147,   492,
  835.    493,   494,   148,   331,   625,   723,   149,   485,   486,   150,
  836.    171,   172,   501,   502,   684,   325,   314,   315,   316,   317,
  837.    318,   319,   256,   257,   258,   174,   175,   176,   259,   609,
  838.    591,   515,   151,   177,   497,   498,   178,   152,   333,   491,
  839.    179,   180,   181,   474,   659,   435,   448,   347
  840. };
  841.  
  842. static const short yypact[] = {  1182,
  843.      9,-32768,-32768,  1351,   461,-32768,-32768,    65,-32768,-32768,
  844.     40,-32768,-32768,    61,-32768,    35,    67,    40,-32768,    18,
  845. -32768,-32768,    81,   113,    86,   214,   155,-32768,   169,    40,
  846. -32768,    40,-32768,-32768,   123,-32768,   207,-32768,   292,-32768,
  847. -32768,    40,-32768,   248,-32768,    83,   310,   218,   461,-32768,
  848. -32768,-32768,   757,-32768,    69,   310,-32768,   461,-32768,-32768,
  849.   1268,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  850. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  851. -32768,-32768,    40,    40,-32768,   294,-32768,-32768,    40,-32768,
  852.    112,-32768,-32768,-32768,-32768,-32768,    40,   266,-32768,    57,
  853.    104,   579,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  854.    265,-32768,-32768,-32768,-32768,   117,-32768,-32768,-32768,  1429,
  855. -32768,-32768,-32768,-32768,    95,-32768,-32768,-32768,-32768,-32768,
  856.    828,-32768,  1113,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  857.    444,-32768,   507,-32768,   683,-32768,-32768,-32768,   274,-32768,
  858.    303,-32768,-32768,   309,   323,-32768,-32768,-32768,-32768,-32768,
  859. -32768,-32768,-32768,-32768,-32768,-32768,-32768,   873,-32768,    53,
  860.    303,   328,   409,-32768,-32768,-32768,   303,-32768,-32768,   358,
  861.    394,   493,-32768,-32768,-32768,-32768,   417,-32768,    52,-32768,
  862.    141,-32768,    40,    54,-32768,   435,   443,-32768,    62,   115,
  863. -32768,   103,-32768,-32768,-32768,    63,-32768,   443,   493,-32768,
  864. -32768,-32768,-32768,-32768,   458,-32768,   454,-32768,   462,-32768,
  865. -32768,-32768,   140,   465,   187,-32768,   482,-32768,-32768,   480,
  866.    496,   212,-32768,    40,    17,-32768,    40,   497,    40,   237,
  867. -32768,-32768,-32768,-32768,   489,-32768,    40,   245,-32768,   252,
  868.     40,-32768,  1144,  1144,   152,   -12,-32768,   250,   501,-32768,
  869.     40,   272,-32768,-32768,   502,   287,   504,-32768,   195,   197,
  870. -32768,   236,-32768,   505,-32768,   290,-32768,   443,   590,   119,
  871.    492,   314,-32768,   312,    40,   320,   509,   510,-32768,   512,
  872. -32768,   342,-32768,-32768,-32768,   167,   493,   559,   525,-32768,
  873. -32768,   493,   531,   519,-32768,-32768,  1042,   828,   536,   533,
  874. -32768,-32768,   271,-32768,   607,   609,-32768,   612,   152,   708,
  875.    350,   708,-32768,   542,   271,   708,   543,   708,   544,   126,
  876.    545,   852,-32768,   852,-32768,   873,   191,-32768,   828,-32768,
  877.    733,-32768,  1144,-32768,   873,-32768,   552,   708,-32768,   541,
  878. -32768,-32768,    40,-32768,   189,-32768,-32768,   898,   547,-32768,
  879. -32768,-32768,   323,-32768,    67,-32768,    67,-32768,-32768,    40,
  880.    548,   873,   873,-32768,-32768,-32768,    76,    40,   351,-32768,
  881.     40,   297,   873,-32768,   708,-32768,    40,   551,-32768,-32768,
  882.     40,-32768,   550,   708,   321,-32768,    40,   554,-32768,   555,
  883. -32768,-32768,   218,-32768,-32768,   549,   -12,   -12,  1144,  1144,
  884.   1144,  1144,  1144,-32768,   553,-32768,    71,-32768,-32768,-32768,
  885.    708,-32768,    76,-32768,    76,-32768,    76,-32768,-32768,    40,
  886. -32768,-32768,   923,-32768,-32768,   119,-32768,    40,   119,   353,
  887. -32768,-32768,-32768,-32768,-32768,   873,   370,   493,-32768,-32768,
  888.    558,   564,-32768,   561,-32768,  1042,   612,   563,   191,-32768,
  889.    828,   568,   873,   873,   873,   873,  1042,   565,   566,   403,
  890. -32768,-32768,   271,   569,-32768,   828,   404,-32768,   412,-32768,
  891.    415,-32768,-32768,-32768,   432,-32768,   271,-32768,   947,   152,
  892.    571,   578,   580,-32768,   433,   271,   436,-32768,-32768,   371,
  893.    581,   584,   271,   139,-32768,   440,   373,   441,-32768,-32768,
  894. -32768,   446,-32768,   152,   576,   124,-32768,-32768,  1063,-32768,
  895. -32768,   200,   204,-32768,   583,   585,-32768,-32768,   453,   586,
  896.    303,-32768,   588,-32768,   589,-32768,-32768,-32768,-32768,-32768,
  897. -32768,   297,-32768,-32768,-32768,   675,-32768,-32768,   676,-32768,
  898.    594,   297,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   217,
  899.    456,-32768,-32768,-32768,-32768,   463,-32768,   591,   610,-32768,
  900.    873,    40,-32768,   828,-32768,   -12,   -12,-32768,-32768,-32768,
  901. -32768,-32768,   828,   469,   611,   613,   614,-32768,   616,   152,
  902.    617,-32768,-32768,-32768,-32768,   684,   540,   271,   968,-32768,
  903. -32768,   470,-32768,-32768,-32768,   873,   620,   152,   618,   828,
  904. -32768,-32768,   607,   607,   609,-32768,   682,   344,   708,   778,
  905.    398,   621,   635,   636,   638,   493,-32768,   803,-32768,   637,
  906.    993,-32768,   373,-32768,   873,-32768,-32768,   873,-32768,   640,
  907.    641,-32768,   898,  1018,-32768,   605,   639,-32768,-32768,-32768,
  908.    473,   473,   642,-32768,   645,-32768,-32768,   655,-32768,-32768,
  909.    643,-32768,   662,    76,-32768,    40,    40,-32768,   733,-32768,
  910.     40,   170,-32768,-32768,  1042,   663,-32768,-32768,   664,   666,
  911.     40,   778,-32768,-32768,   271,-32768,   667,   443,   533,   533,
  912. -32768,   668,   670,   671,-32768,-32768,   677,   474,-32768,-32768,
  913.    687,  1042,   689,   493,   690,   477,   493,   225,-32768,  1042,
  914.    697,-32768,   828,   399,-32768,-32768,-32768,-32768,-32768,-32768,
  915. -32768,-32768,   692,-32768,-32768,-32768,   705,-32768,-32768,-32768,
  916.    271,-32768,-32768,-32768,-32768,-32768,  1042,-32768,-32768,  1063,
  917.    701,  1088,-32768,   691,-32768,-32768,-32768,-32768,   486,   494,
  918. -32768,-32768,-32768,-32768,-32768,-32768,   700,-32768,-32768,   710,
  919.    714,-32768,-32768,-32768,   787,-32768,   684,-32768,   717,-32768,
  920. -32768,-32768,   730,   727,   732,   729,  1042,   400,-32768,-32768,
  921. -32768,   736,   731,-32768,-32768,-32768,-32768,   734,-32768,-32768,
  922.    726,   778,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  923.   1042,   740,-32768,-32768,  1042,-32768,-32768,-32768,   493,-32768,
  924. -32768,   751,   756,  1042,-32768,-32768,   846,   847,-32768
  925. };
  926.  
  927. static const short yypgoto[] = {-32768,
  928. -32768,   788,-32768,-32768,   848,-32768,-32768,   850,-32768,-32768,
  929. -32768,-32768,   747,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  930. -32768,-32768,-32768,-32768,-32768,   765,  -100,-32768,-32768,-32768,
  931.   -126,-32768,   206,-32768,-32768,-32768,-32768,    -9,-32768,   229,
  932. -32768,-32768,-32768,   202,  -281,-32768,-32768,-32768,   674,  -167,
  933. -32768,   695,  -172,-32768,-32768,-32768,   654,-32768,-32768,   484,
  934. -32768,   -99,-32768,-32768,   -97,   -96,-32768,   460,   -81,   455,
  935. -32768,-32768,-32768,-32768,   295,-32768,-32768,   130,  -101,-32768,
  936.    652,   503,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   495,
  937. -32768,-32768,-32768,-32768,   498,-32768,-32768,  -174,-32768,-32768,
  938. -32768,   546,-32768,   174,-32768,   175,-32768,   402,  -184,-32768,
  939. -32768,-32768,-32768,     2,-32768,-32768,-32768,-32768,-32768,  -423,
  940. -32768,-32768,   892,    23,-32768,-32768,-32768,-32768,-32768,-32768,
  941. -32768,-32768,-32768,-32768,   143,-32768,-32768,-32768,-32768,   865,
  942. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  943. -32768,-32768,-32768,-32768,  -222,   304,-32768,-32768,  -287,  -432,
  944. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  945. -32768,-32768,-32768,  -131,   160,-32768,-32768,-32768,   380,  -520,
  946. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  947. -32768,   305,-32768,-32768,-32768,-32768,-32768,-32768,   311,-32768,
  948. -32768,-32768,-32768,-32768,-32768,     0,-32768,   -36,   475,   459,
  949.   -277,   -52,  -217,   -94,    64,   598,-32768,  -491,  -558,  -677,
  950.   -591,   298,  -182,-32768,  -327,   327,-32768,-32768,  -109,  -458,
  951.     34,    50,    42,    -7,-32768,  -263,    -6,  -201
  952. };
  953.  
  954.  
  955. #define    YYLAST        1514
  956.  
  957.  
  958. static const short yytable[] = {   182,
  959.    255,   288,   289,   186,   290,   291,   197,   371,   207,   324,
  960.    208,   327,   209,   329,   361,   432,   362,   506,   205,   286,
  961.    458,   356,   223,   352,   226,   366,   602,   657,   611,   457,
  962.    630,   677,   776,   153,   233,   407,   408,   153,   242,   246,
  963.    703,   155,   184,   185,   335,   155,   215,   264,   246,   154,
  964.    153,   500,   210,   154,   184,   185,   184,   185,   155,   184,
  965.    185,   340,   342,   184,   185,     3,   154,   344,   173,     2,
  966.      3,   184,   185,   184,   185,   269,   270,   188,   184,   185,
  967.    411,   272,   412,   274,   188,   184,   185,   275,   211,   278,
  968.    281,   281,   284,   284,   153,   452,   156,     2,     3,   477,
  969.    454,   183,   155,   479,   389,   481,   184,   185,   296,   297,
  970.    154,   234,   173,   302,   184,   185,   752,     2,     3,   184,
  971.    185,   173,   198,   810,   431,   508,   184,   469,     2,     3,
  972.    313,   159,   160,   161,   162,   163,   164,   165,   166,   167,
  973.    338,   354,   301,   769,   339,   783,   349,   307,   189,   280,
  974.    369,   677,   199,   153,   370,   189,   260,   199,   304,   738,
  975.    739,   155,   561,   261,   188,   261,   306,   337,   524,   154,
  976.     37,   212,   727,   239,   305,   537,   216,   611,   303,   706,
  977.    356,   350,   538,   539,   540,   197,   197,   352,   621,   617,
  978.    517,   576,   577,   541,   367,   285,   173,   368,   584,   273,
  979.    213,   205,   364,   440,   228,   199,   365,   295,   250,   433,
  980.    463,   464,   188,   812,   199,   483,   168,   266,   484,   463,
  981.    464,   253,   816,   463,   464,   254,   388,   376,   351,   393,
  982.    377,   242,  -460,   153,   409,   189,   463,   464,   410,   401,
  983.    363,   155,   221,   406,   463,   464,   601,   409,   657,   154,
  984.    657,   410,   217,   415,   449,   660,   222,   450,   451,   751,
  985.    542,   543,   567,   544,   545,   546,   218,   547,   548,   549,
  986.    550,   219,   413,   343,   380,   281,   510,   284,   381,   490,
  987.    499,   490,   422,   189,   424,   423,   689,   425,   504,   661,
  988.    463,   464,   321,   662,   302,   690,   585,   229,   586,   386,
  989.    587,   220,   537,   387,   230,   514,   678,   459,   247,   538,
  990.    539,   540,   184,   185,   775,   243,   578,   579,   580,   473,
  991.    541,   473,   244,   426,   396,   473,   427,   473,   397,   487,
  992.    714,   361,   402,   362,   592,   496,   403,   594,   313,   404,
  993.    503,   749,   234,   405,   496,   197,     2,     3,    34,   159,
  994.    160,   161,   162,   163,   164,   165,   166,   167,   279,   416,
  995.    520,   294,   208,   417,   330,   307,   205,   495,   205,   528,
  996.    533,   522,   523,   536,   419,     2,     3,   429,   420,   562,
  997.    590,   430,   560,   393,   747,   748,   568,   542,   543,   242,
  998.    544,   545,   546,   332,   547,   548,   549,   550,   153,   334,
  999.    153,   437,   358,   608,   439,   438,   155,   441,   155,   264,
  1000.    569,   438,   397,   336,   154,   528,   154,   528,   341,   528,
  1001.    275,   668,   278,   670,   722,   778,   613,   614,   281,   444,
  1002.    284,   712,   343,   445,   308,   713,   490,   475,   534,   253,
  1003.    595,   476,   535,   254,   438,   598,     2,     3,  -396,   159,
  1004.    160,   161,   162,   163,   164,   165,   166,   167,   636,   599,
  1005.    313,   600,   461,     2,     3,   307,   159,   160,   161,   162,
  1006.    163,   164,   165,   166,   167,   313,   660,   626,   159,   160,
  1007.    161,   162,   163,   164,   345,   717,   779,   803,   716,   461,
  1008.    461,   461,   618,   622,   619,   619,   288,   289,   346,   290,
  1009.    291,   623,   771,   619,   624,   774,   619,   348,   646,     2,
  1010.      3,   658,   159,   160,   161,   162,   163,   164,   165,   166,
  1011.    167,   627,  -381,   628,  -381,   634,   357,   635,   307,   639,
  1012.    641,   635,   619,   358,   322,   642,   323,   643,   299,   253,
  1013.    640,   374,   665,   254,   666,   679,   255,   619,   306,   375,
  1014.    758,   168,   680,   169,   681,   378,   305,   363,   691,   705,
  1015.    619,   600,   686,   766,   688,   767,   773,   384,   600,    10,
  1016.    685,    12,   382,   313,    15,   789,   399,   635,   490,    20,
  1017.     21,    22,   313,   790,   436,   666,   385,   394,   414,   418,
  1018.    514,   514,   428,   704,   421,   431,   442,   326,   707,   323,
  1019.    443,    41,   253,    43,   280,   708,   254,   813,    10,   313,
  1020.     12,   218,   453,    15,    52,   456,   504,   313,    20,    21,
  1021.     22,   455,   255,   460,   461,   465,   466,   487,   467,   478,
  1022.    480,   482,   488,   507,   496,   509,   575,   731,   516,   521,
  1023.     41,   565,    43,   711,   287,   563,   572,   581,   603,   255,
  1024.    571,   604,   605,    52,   610,   612,   528,   608,   533,   533,
  1025.    808,  -465,  -466,   533,   631,   620,   729,   632,   496,   644,
  1026.    637,   633,   663,   757,   306,   638,   664,   667,   669,   671,
  1027.    673,   674,   305,   676,   590,     2,     3,   682,   159,   160,
  1028.    161,   162,   163,   164,   165,   166,   167,   683,-32768,   697,
  1029.    692,   737,   693,   694,   307,   695,   696,   709,   718,   710,
  1030.    468,   469,   313,   159,   160,   161,   162,   163,   164,   165,
  1031.    166,   167,   719,   720,   608,   721,   725,   732,   733,   307,
  1032.    743,  -473,   658,   740,   787,     2,     3,   742,   159,   160,
  1033.    161,   162,   163,   164,   165,   166,   167,  -233,   608,   745,
  1034.    753,   754,   590,   755,   307,   762,   759,   763,   764,     2,
  1035.      3,   590,   159,   160,   161,   162,   163,   164,   165,   166,
  1036.    167,   788,   765,   328,   768,   323,   770,   772,   253,   780,
  1037.      2,     3,   254,   159,   160,   161,   162,   163,   164,   165,
  1038.    166,   167,   809,   777,   781,   785,   792,   793,   168,   307,
  1039.    323,   794,   795,   253,   797,     2,     3,   254,   159,   160,
  1040.    161,   162,   163,   164,   165,   166,   167,   798,   799,   800,
  1041.    801,   806,   805,   168,   307,   804,   489,   807,   253,   811,
  1042.      2,     3,   254,   159,   160,   161,   162,   163,   164,   165,
  1043.    166,   167,   814,   815,   252,   818,   819,   168,   268,   307,
  1044.    271,   157,   253,   158,     2,     3,   254,   159,   160,   161,
  1045.    162,   163,   164,   165,   166,   167,   300,   355,   168,   746,
  1046.    323,   734,   750,   253,   564,     2,     3,   254,   159,   160,
  1047.    161,   162,   163,   164,   165,   166,   167,   353,   390,   588,
  1048.    395,   700,   593,   168,   307,   484,   796,   573,   253,   570,
  1049.      2,     3,   254,   159,   160,   161,   162,   163,   164,   165,
  1050.    166,   167,   518,   784,   582,   214,   786,   645,   308,   802,
  1051.    265,   672,   715,   253,   616,     2,     3,   254,   159,   160,
  1052.    161,   162,   163,   164,   165,   166,   167,   728,   724,   615,
  1053.    505,   736,   168,     0,     0,   489,     0,   253,     0,     2,
  1054.      3,   254,   159,   160,   161,   162,   163,   164,   165,   166,
  1055.    167,   730,     0,   168,     0,     0,     0,     0,   253,     0,
  1056.      2,     3,   254,   159,   160,   161,   162,   163,   164,   165,
  1057.    166,   167,     0,     0,     0,     0,     0,     0,   168,     0,
  1058.    511,     0,     0,   253,     0,     2,     3,   254,   159,   160,
  1059.    161,   162,   163,   164,   165,   166,   167,     0,     0,     0,
  1060.      0,     0,     0,   168,     0,   589,     0,     0,   253,     0,
  1061.      2,     3,   254,   159,   160,   161,   162,   163,   164,   165,
  1062.    166,   167,     0,     0,     0,     0,   629,   168,     0,     0,
  1063.      0,     0,   253,     0,     2,     3,   254,   159,   160,   161,
  1064.    162,   163,   164,   165,   166,   167,     0,     0,   168,   702,
  1065.      0,     0,     0,   253,     0,   184,   185,   254,   647,   160,
  1066.    161,   162,   163,   164,   648,   649,   650,     0,     0,     0,
  1067.      0,     0,   726,   168,     0,     0,     0,     0,   253,     0,
  1068.    184,   185,   254,   159,   160,   161,   162,   163,   164,   648,
  1069.    649,   650,     0,     0,     0,     0,     0,     0,   168,     0,
  1070.    735,     0,     0,   253,     0,     2,     3,   254,   159,   160,
  1071.    161,   162,   163,   164,   165,   166,   167,     0,     0,     0,
  1072.      0,     0,   168,     0,     0,     0,     0,   253,     0,     0,
  1073.      0,   254,     0,     0,     0,     0,     2,     3,     0,   159,
  1074.    160,   161,   162,   163,   164,   165,   166,   167,   651,     0,
  1075.      0,     0,   652,     0,     0,     0,     0,     0,     0,     0,
  1076.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  1077.      0,    -2,     1,   651,     2,     3,     4,   652,     0,     0,
  1078.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  1079.      0,     0,     0,   320,     0,   169,     5,     6,     7,     8,
  1080.      9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
  1081.     19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
  1082.     29,    30,    31,    32,   168,    33,    34,    35,    36,    37,
  1083.     38,    39,    40,    41,    42,    43,    44,     0,    45,    46,
  1084.     47,    48,     0,    49,    50,    51,    52,    53,    54,    55,
  1085.     56,    57,     0,     0,    58,     0,    59,    -1,     1,    60,
  1086.      2,     3,     4,     0,     0,     0,     0,     0,     0,     0,
  1087.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  1088.      0,     0,     5,     6,     7,     8,     9,    10,    11,    12,
  1089.     13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
  1090.     23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
  1091.      0,    33,    34,    35,    36,    37,    38,    39,    40,    41,
  1092.     42,    43,    44,     0,    45,    46,    47,    48,     0,    49,
  1093.     50,    51,    52,    53,    54,    55,    56,    57,     0,     0,
  1094.     58,     1,    59,     2,     3,    60,     0,     0,     0,     0,
  1095.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  1096.      0,     0,     0,     0,     0,     5,     6,     7,     8,     9,
  1097.     10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
  1098.     20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
  1099.     30,    31,    32,     0,    33,    34,    35,    36,    37,    38,
  1100.      0,    40,    41,    42,    43,    44,     0,    45,    46,    47,
  1101.     48,     0,    49,    50,    51,    52,    53,    54,    55,    56,
  1102.     57,     2,     3,    58,     0,    59,     0,     0,     0,     0,
  1103.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  1104.      0,     0,     0,     5,     6,     7,     0,     0,     0,    11,
  1105.      0,    13,     0,     0,    16,     0,     0,     0,     0,     0,
  1106.      0,     0,     0,     0,   298,     0,    28,     0,     0,     0,
  1107.      0,     0,     0,     0,    35,    36,    37,     0,     0,    40,
  1108.      0,     0,     0,     0,     0,    45,     0,    47,     0,     0,
  1109.     49,     0,    51,     0,    53,    54,     0,    56,     0,   299,
  1110.      0,    58,     0,    59
  1111. };
  1112.  
  1113. static const short yycheck[] = {     6,
  1114.     53,   102,   102,    11,   102,   102,    14,   209,    18,   141,
  1115.     18,   143,    19,   145,   199,   279,   199,   345,    17,   101,
  1116.    308,   194,    30,   191,    32,   200,   450,   519,   461,   307,
  1117.    489,   552,   710,     0,    42,   253,   254,     4,    46,    47,
  1118.    599,     0,     3,     4,   154,     4,    24,    55,    56,     0,
  1119.     17,   339,    35,     4,     3,     4,     3,     4,    17,     3,
  1120.      4,   171,   172,     3,     4,     4,    17,   177,     5,     3,
  1121.      4,     3,     4,     3,     4,    83,    84,    24,     3,     4,
  1122.     93,    89,    95,    91,    24,     3,     4,    97,    71,    97,
  1123.    100,   101,   100,   101,    61,   297,    88,     3,     4,   322,
  1124.    302,    37,    61,   326,    88,   328,     3,     4,   116,   116,
  1125.     61,    95,    49,   120,     3,     4,   675,     3,     4,     3,
  1126.      4,    58,    88,   801,     6,   348,     3,     4,     3,     4,
  1127.    131,     6,     7,     8,     9,    10,    11,    12,    13,    14,
  1128.     88,    88,   120,   702,    92,   737,    95,    22,    95,    93,
  1129.     88,   672,    91,   120,    92,    95,    88,    91,   125,   651,
  1130.    652,   120,   385,    95,    24,    95,   125,   168,    93,   120,
  1131.     58,    91,   631,    91,   125,     6,    91,   610,    84,   603,
  1132.    353,   189,    13,    14,    15,   193,   194,   355,   476,   467,
  1133.    365,   409,   410,    24,    92,    92,   133,    95,   421,    88,
  1134.     88,   200,    88,   285,    82,    91,    92,    91,    49,    91,
  1135.     20,    21,    24,   805,    91,    90,    91,    58,    93,    20,
  1136.     21,    96,   814,    20,    21,   100,   234,    88,    88,   237,
  1137.     91,   239,    94,   200,    96,    95,    20,    21,   100,   247,
  1138.    199,   200,    88,   251,    20,    21,   448,    96,   740,   200,
  1139.    742,   100,    39,   261,    88,   519,    88,    91,    92,    90,
  1140.     91,    92,   394,    94,    95,    96,    53,    98,    99,   100,
  1141.    101,    58,    23,    24,    88,   285,    88,   285,    92,   332,
  1142.     90,   334,    88,    95,    88,    91,   574,    91,   341,    90,
  1143.     20,    21,   133,    90,   301,   583,   423,    91,   425,    88,
  1144.    427,    88,     6,    92,    13,   358,    90,   308,    91,    13,
  1145.     14,    15,     3,     4,    90,     6,   411,   412,   413,   320,
  1146.     24,   322,    13,    88,    88,   326,    91,   328,    92,   330,
  1147.    618,   516,    88,   516,   436,   336,    92,   439,   339,    88,
  1148.    341,   669,    95,    92,   345,   353,     3,     4,    55,     6,
  1149.      7,     8,     9,    10,    11,    12,    13,    14,    93,    88,
  1150.    370,    97,   370,    92,    91,    22,   365,   334,   367,   377,
  1151.    378,   372,   373,   381,    88,     3,     4,    88,    92,   387,
  1152.    433,    92,   383,   391,   666,   667,   394,    91,    92,   397,
  1153.     94,    95,    96,    91,    98,    99,   100,   101,   365,    91,
  1154.    367,    88,    91,   456,    93,    92,   365,    88,   367,   417,
  1155.     90,    92,    92,    91,   365,   423,   367,   425,    91,   427,
  1156.    430,   531,   430,   533,   626,   713,   463,   464,   438,    88,
  1157.    438,    88,    24,    92,    91,    92,   489,    88,    88,    96,
  1158.     88,    92,    92,   100,    92,   446,     3,     4,    91,     6,
  1159.      7,     8,     9,    10,    11,    12,    13,    14,    88,    90,
  1160.    461,    92,    92,     3,     4,    22,     6,     7,     8,     9,
  1161.     10,    11,    12,    13,    14,   476,   740,   484,     6,     7,
  1162.      8,     9,    10,    11,    91,    88,    88,    88,   620,    92,
  1163.     92,    92,    90,    90,    92,    92,   597,   597,     6,   597,
  1164.    597,    90,   704,    92,    90,   707,    92,    91,   516,     3,
  1165.      4,   519,     6,     7,     8,     9,    10,    11,    12,    13,
  1166.     14,    90,    90,    92,    92,    90,    92,    92,    22,    90,
  1167.     90,    92,    92,    91,    91,    90,    93,    92,    81,    96,
  1168.    507,    88,    90,   100,    92,    90,   599,    92,   507,    88,
  1169.    682,    91,    90,    93,    92,    91,   507,   516,    90,    90,
  1170.     92,    92,   572,    90,   572,    92,    90,    88,    92,    30,
  1171.    571,    32,    91,   574,    35,    90,    88,    92,   631,    40,
  1172.     41,    42,   583,    90,    93,    92,    91,    91,    88,    88,
  1173.    643,   644,    88,   600,    91,     6,    88,    91,   605,    93,
  1174.     91,    62,    96,    64,    93,   606,   100,   809,    30,   610,
  1175.     32,    53,    88,    35,    75,    97,   669,   618,    40,    41,
  1176.     42,    91,   675,    88,    92,    19,    18,   628,    17,    88,
  1177.     88,    88,    88,    82,   635,    95,    88,   638,    92,    92,
  1178.     62,    92,    64,   610,    66,    95,    92,    95,    91,   702,
  1179.     97,    88,    92,    75,    92,    88,   664,   710,   666,   667,
  1180.    792,    97,    97,   671,    94,    97,   633,    90,   669,    94,
  1181.     90,    92,    90,   681,   633,    92,    92,    92,    91,    91,
  1182.      6,     6,   633,    90,   737,     3,     4,    97,     6,     7,
  1183.      8,     9,    10,    11,    12,    13,    14,    88,    17,    16,
  1184.     90,    97,    90,    90,    22,    90,    90,    88,    88,    92,
  1185.      3,     4,   713,     6,     7,     8,     9,    10,    11,    12,
  1186.     13,    14,    88,    88,   777,    88,    90,    88,    88,    22,
  1187.     88,    93,   740,    92,   742,     3,     4,    93,     6,     7,
  1188.      8,     9,    10,    11,    12,    13,    14,    93,   801,    88,
  1189.     88,    88,   805,    88,    22,    88,    90,    88,    88,     3,
  1190.      4,   814,     6,     7,     8,     9,    10,    11,    12,    13,
  1191.     14,    81,    96,    91,    88,    93,    88,    88,    96,    88,
  1192.      3,     4,   100,     6,     7,     8,     9,    10,    11,    12,
  1193.     13,    14,   799,    97,    90,    95,    97,    88,    91,    22,
  1194.     93,    88,    16,    96,    88,     3,     4,   100,     6,     7,
  1195.      8,     9,    10,    11,    12,    13,    14,    88,    92,    88,
  1196.     92,    88,    92,    91,    22,    90,    94,   102,    96,    90,
  1197.      3,     4,   100,     6,     7,     8,     9,    10,    11,    12,
  1198.     13,    14,    92,    88,    88,     0,     0,    91,    61,    22,
  1199.     86,     4,    96,     4,     3,     4,   100,     6,     7,     8,
  1200.      9,    10,    11,    12,    13,    14,   120,   194,    91,   664,
  1201.     93,   643,   671,    96,   391,     3,     4,   100,     6,     7,
  1202.      8,     9,    10,    11,    12,    13,    14,   193,   235,   430,
  1203.    239,   597,   438,    91,    22,    93,   767,   403,    96,   397,
  1204.      3,     4,   100,     6,     7,     8,     9,    10,    11,    12,
  1205.     13,    14,   367,   740,   417,    24,   742,   516,    91,   777,
  1206.     56,   542,   619,    96,   466,     3,     4,   100,     6,     7,
  1207.      8,     9,    10,    11,    12,    13,    14,   633,   628,   465,
  1208.    343,   644,    91,    -1,    -1,    94,    -1,    96,    -1,     3,
  1209.      4,   100,     6,     7,     8,     9,    10,    11,    12,    13,
  1210.     14,   635,    -1,    91,    -1,    -1,    -1,    -1,    96,    -1,
  1211.      3,     4,   100,     6,     7,     8,     9,    10,    11,    12,
  1212.     13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
  1213.     93,    -1,    -1,    96,    -1,     3,     4,   100,     6,     7,
  1214.      8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
  1215.     -1,    -1,    -1,    91,    -1,    93,    -1,    -1,    96,    -1,
  1216.      3,     4,   100,     6,     7,     8,     9,    10,    11,    12,
  1217.     13,    14,    -1,    -1,    -1,    -1,    90,    91,    -1,    -1,
  1218.     -1,    -1,    96,    -1,     3,     4,   100,     6,     7,     8,
  1219.      9,    10,    11,    12,    13,    14,    -1,    -1,    91,    92,
  1220.     -1,    -1,    -1,    96,    -1,     3,     4,   100,     6,     7,
  1221.      8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
  1222.     -1,    -1,    90,    91,    -1,    -1,    -1,    -1,    96,    -1,
  1223.      3,     4,   100,     6,     7,     8,     9,    10,    11,    12,
  1224.     13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
  1225.     93,    -1,    -1,    96,    -1,     3,     4,   100,     6,     7,
  1226.      8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
  1227.     -1,    -1,    91,    -1,    -1,    -1,    -1,    96,    -1,    -1,
  1228.     -1,   100,    -1,    -1,    -1,    -1,     3,     4,    -1,     6,
  1229.      7,     8,     9,    10,    11,    12,    13,    14,    96,    -1,
  1230.     -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1231.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1232.     -1,     0,     1,    96,     3,     4,     5,   100,    -1,    -1,
  1233.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1234.     -1,    -1,    -1,    91,    -1,    93,    25,    26,    27,    28,
  1235.     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
  1236.     39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
  1237.     49,    50,    51,    52,    91,    54,    55,    56,    57,    58,
  1238.     59,    60,    61,    62,    63,    64,    65,    -1,    67,    68,
  1239.     69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
  1240.     79,    80,    -1,    -1,    83,    -1,    85,     0,     1,    88,
  1241.      3,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1242.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1243.     -1,    -1,    25,    26,    27,    28,    29,    30,    31,    32,
  1244.     33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
  1245.     43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
  1246.     -1,    54,    55,    56,    57,    58,    59,    60,    61,    62,
  1247.     63,    64,    65,    -1,    67,    68,    69,    70,    -1,    72,
  1248.     73,    74,    75,    76,    77,    78,    79,    80,    -1,    -1,
  1249.     83,     1,    85,     3,     4,    88,    -1,    -1,    -1,    -1,
  1250.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1251.     -1,    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,
  1252.     30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
  1253.     40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
  1254.     50,    51,    52,    -1,    54,    55,    56,    57,    58,    59,
  1255.     -1,    61,    62,    63,    64,    65,    -1,    67,    68,    69,
  1256.     70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
  1257.     80,     3,     4,    83,    -1,    85,    -1,    -1,    -1,    -1,
  1258.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1259.     -1,    -1,    -1,    25,    26,    27,    -1,    -1,    -1,    31,
  1260.     -1,    33,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
  1261.     -1,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,
  1262.     -1,    -1,    -1,    -1,    56,    57,    58,    -1,    -1,    61,
  1263.     -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    -1,
  1264.     72,    -1,    74,    -1,    76,    77,    -1,    79,    -1,    81,
  1265.     -1,    83,    -1,    85
  1266. };
  1267. /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
  1268. #line 3 "/usr/lib/bison.simple"
  1269.  
  1270. /* Skeleton output parser for bison,
  1271.    Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
  1272.  
  1273.    This program is free software; you can redistribute it and/or modify
  1274.    it under the terms of the GNU General Public License as published by
  1275.    the Free Software Foundation; either version 1, or (at your option)
  1276.    any later version.
  1277.  
  1278.    This program is distributed in the hope that it will be useful,
  1279.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1280.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1281.    GNU General Public License for more details.
  1282.  
  1283.    You should have received a copy of the GNU General Public License
  1284.    along with this program; if not, write to the Free Software
  1285.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  1286.  
  1287.  
  1288. #ifndef alloca
  1289. #ifdef __GNUC__
  1290. #define alloca __builtin_alloca
  1291. #else /* not GNU C.  */
  1292. #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
  1293. #include <alloca.h>
  1294. #else /* not sparc */
  1295. #if defined (MSDOS) && !defined (__TURBOC__)
  1296. #include <malloc.h>
  1297. #else /* not MSDOS, or __TURBOC__ */
  1298. #if defined(_AIX)
  1299. #include <malloc.h>
  1300.  #pragma alloca
  1301. #else /* not MSDOS, __TURBOC__, or _AIX */
  1302. #ifdef __hpux
  1303. #ifdef __cplusplus
  1304. extern "C" {
  1305. void *alloca (unsigned int);
  1306. };
  1307. #else /* not __cplusplus */
  1308. void *alloca ();
  1309. #endif /* not __cplusplus */
  1310. #endif /* __hpux */
  1311. #endif /* not _AIX */
  1312. #endif /* not MSDOS, or __TURBOC__ */
  1313. #endif /* not sparc.  */
  1314. #endif /* not GNU C.  */
  1315. #endif /* alloca not defined.  */
  1316.  
  1317. /* This is the parser code that is written into each bison parser
  1318.   when the %semantic_parser declaration is not specified in the grammar.
  1319.   It was written by Richard Stallman by simplifying the hairy parser
  1320.   used when %semantic_parser is specified.  */
  1321.  
  1322. /* Note: there must be only one dollar sign in this file.
  1323.    It is replaced by the list of actions, each action
  1324.    as one case of the switch.  */
  1325.  
  1326. #define yyerrok        (yyerrstatus = 0)
  1327. #define yyclearin    (yychar = YYEMPTY)
  1328. #define YYEMPTY        -2
  1329. #define YYEOF        0
  1330. #define YYACCEPT    return(0)
  1331. #define YYABORT     return(1)
  1332. #define YYERROR        goto yyerrlab1
  1333. /* Like YYERROR except do call yyerror.
  1334.    This remains here temporarily to ease the
  1335.    transition to the new meaning of YYERROR, for GCC.
  1336.    Once GCC version 2 has supplanted version 1, this can go.  */
  1337. #define YYFAIL        goto yyerrlab
  1338. #define YYRECOVERING()  (!!yyerrstatus)
  1339. #define YYBACKUP(token, value) \
  1340. do                                \
  1341.   if (yychar == YYEMPTY && yylen == 1)                \
  1342.     { yychar = (token), yylval = (value);            \
  1343.       yychar1 = YYTRANSLATE (yychar);                \
  1344.       YYPOPSTACK;                        \
  1345.       goto yybackup;                        \
  1346.     }                                \
  1347.   else                                \
  1348.     { yyerror ("syntax error: cannot back up"); YYERROR; }    \
  1349. while (0)
  1350.  
  1351. #define YYTERROR    1
  1352. #define YYERRCODE    256
  1353.  
  1354. #ifndef YYPURE
  1355. #define YYLEX        yylex()
  1356. #endif
  1357.  
  1358. #ifdef YYPURE
  1359. #ifdef YYLSP_NEEDED
  1360. #define YYLEX        yylex(&yylval, &yylloc)
  1361. #else
  1362. #define YYLEX        yylex(&yylval)
  1363. #endif
  1364. #endif
  1365.  
  1366. /* If nonreentrant, generate the variables here */
  1367.  
  1368. #ifndef YYPURE
  1369.  
  1370. int    yychar;            /*  the lookahead symbol        */
  1371. YYSTYPE    yylval;            /*  the semantic value of the        */
  1372.                 /*  lookahead symbol            */
  1373.  
  1374. #ifdef YYLSP_NEEDED
  1375. YYLTYPE yylloc;            /*  location data for the lookahead    */
  1376.                 /*  symbol                */
  1377. #endif
  1378.  
  1379. int yynerrs;            /*  number of parse errors so far       */
  1380. #endif  /* not YYPURE */
  1381.  
  1382. #if YYDEBUG != 0
  1383. int yydebug;            /*  nonzero means print parse trace    */
  1384. /* Since this is uninitialized, it does not stop multiple parsers
  1385.    from coexisting.  */
  1386. #endif
  1387.  
  1388. /*  YYINITDEPTH indicates the initial size of the parser's stacks    */
  1389.  
  1390. #ifndef    YYINITDEPTH
  1391. #define YYINITDEPTH 200
  1392. #endif
  1393.  
  1394. /*  YYMAXDEPTH is the maximum size the stacks can grow to
  1395.     (effective only if the built-in stack extension method is used).  */
  1396.  
  1397. #if YYMAXDEPTH == 0
  1398. #undef YYMAXDEPTH
  1399. #endif
  1400.  
  1401. #ifndef YYMAXDEPTH
  1402. #define YYMAXDEPTH 10000
  1403. #endif
  1404.  
  1405. /* Prevent warning if -Wstrict-prototypes.  */
  1406. #ifdef __GNUC__
  1407. int yyparse (void);
  1408. #endif
  1409.  
  1410. #if __GNUC__ > 1        /* GNU C and GNU C++ define this.  */
  1411. #define __yy_bcopy(FROM,TO,COUNT)    __builtin_memcpy(TO,FROM,COUNT)
  1412. #else                /* not GNU C or C++ */
  1413. #ifndef __cplusplus
  1414.  
  1415. /* This is the most reliable way to avoid incompatibilities
  1416.    in available built-in functions on various systems.  */
  1417. static void
  1418. __yy_bcopy (from, to, count)
  1419.      char *from;
  1420.      char *to;
  1421.      int count;
  1422. {
  1423.   register char *f = from;
  1424.   register char *t = to;
  1425.   register int i = count;
  1426.  
  1427.   while (i-- > 0)
  1428.     *t++ = *f++;
  1429. }
  1430.  
  1431. #else /* __cplusplus */
  1432.  
  1433. /* This is the most reliable way to avoid incompatibilities
  1434.    in available built-in functions on various systems.  */
  1435. static void
  1436. __yy_bcopy (char *from, char *to, int count)
  1437. {
  1438.   register char *f = from;
  1439.   register char *t = to;
  1440.   register int i = count;
  1441.  
  1442.   while (i-- > 0)
  1443.     *t++ = *f++;
  1444. }
  1445.  
  1446. #endif
  1447. #endif
  1448.  
  1449. #line 184 "/usr/lib/bison.simple"
  1450. int
  1451. yyparse()
  1452. {
  1453.   register int yystate;
  1454.   register int yyn;
  1455.   register short *yyssp;
  1456.   register YYSTYPE *yyvsp;
  1457.   int yyerrstatus;    /*  number of tokens to shift before error messages enabled */
  1458.   int yychar1 = 0;        /*  lookahead token as an internal (translated) token number */
  1459.  
  1460.   short    yyssa[YYINITDEPTH];    /*  the state stack            */
  1461.   YYSTYPE yyvsa[YYINITDEPTH];    /*  the semantic value stack        */
  1462.  
  1463.   short *yyss = yyssa;        /*  refer to the stacks thru separate pointers */
  1464.   YYSTYPE *yyvs = yyvsa;    /*  to allow yyoverflow to reallocate them elsewhere */
  1465.  
  1466. #ifdef YYLSP_NEEDED
  1467.   YYLTYPE yylsa[YYINITDEPTH];    /*  the location stack            */
  1468.   YYLTYPE *yyls = yylsa;
  1469.   YYLTYPE *yylsp;
  1470.  
  1471. #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
  1472. #else
  1473. #define YYPOPSTACK   (yyvsp--, yyssp--)
  1474. #endif
  1475.  
  1476.   int yystacksize = YYINITDEPTH;
  1477.  
  1478. #ifdef YYPURE
  1479.   int yychar;
  1480.   YYSTYPE yylval;
  1481.   int yynerrs;
  1482. #ifdef YYLSP_NEEDED
  1483.   YYLTYPE yylloc;
  1484. #endif
  1485. #endif
  1486.  
  1487.   YYSTYPE yyval;        /*  the variable used to return        */
  1488.                 /*  semantic values from the action    */
  1489.                 /*  routines                */
  1490.  
  1491.   int yylen;
  1492.  
  1493. #if YYDEBUG != 0
  1494.   if (yydebug)
  1495.     fprintf(stderr, "Starting parse\n");
  1496. #endif
  1497.  
  1498.   yystate = 0;
  1499.   yyerrstatus = 0;
  1500.   yynerrs = 0;
  1501.   yychar = YYEMPTY;        /* Cause a token to be read.  */
  1502.  
  1503.   /* Initialize stack pointers.
  1504.      Waste one element of value and location stack
  1505.      so that they stay on the same level as the state stack.
  1506.      The wasted elements are never initialized.  */
  1507.  
  1508.   yyssp = yyss - 1;
  1509.   yyvsp = yyvs;
  1510. #ifdef YYLSP_NEEDED
  1511.   yylsp = yyls;
  1512. #endif
  1513.  
  1514. /* Push a new state, which is found in  yystate  .  */
  1515. /* In all cases, when you get here, the value and location stacks
  1516.    have just been pushed. so pushing a state here evens the stacks.  */
  1517. yynewstate:
  1518.  
  1519.   *++yyssp = yystate;
  1520.  
  1521.   if (yyssp >= yyss + yystacksize - 1)
  1522.     {
  1523.       /* Give user a chance to reallocate the stack */
  1524.       /* Use copies of these so that the &'s don't force the real ones into memory. */
  1525.       YYSTYPE *yyvs1 = yyvs;
  1526.       short *yyss1 = yyss;
  1527. #ifdef YYLSP_NEEDED
  1528.       YYLTYPE *yyls1 = yyls;
  1529. #endif
  1530.  
  1531.       /* Get the current used size of the three stacks, in elements.  */
  1532.       int size = yyssp - yyss + 1;
  1533.  
  1534. #ifdef yyoverflow
  1535.       /* Each stack pointer address is followed by the size of
  1536.      the data in use in that stack, in bytes.  */
  1537. #ifdef YYLSP_NEEDED
  1538.       /* This used to be a conditional around just the two extra args,
  1539.      but that might be undefined if yyoverflow is a macro.  */
  1540.       yyoverflow("parser stack overflow",
  1541.          &yyss1, size * sizeof (*yyssp),
  1542.          &yyvs1, size * sizeof (*yyvsp),
  1543.          &yyls1, size * sizeof (*yylsp),
  1544.          &yystacksize);
  1545. #else
  1546.       yyoverflow("parser stack overflow",
  1547.          &yyss1, size * sizeof (*yyssp),
  1548.          &yyvs1, size * sizeof (*yyvsp),
  1549.          &yystacksize);
  1550. #endif
  1551.  
  1552.       yyss = yyss1; yyvs = yyvs1;
  1553. #ifdef YYLSP_NEEDED
  1554.       yyls = yyls1;
  1555. #endif
  1556. #else /* no yyoverflow */
  1557.       /* Extend the stack our own way.  */
  1558.       if (yystacksize >= YYMAXDEPTH)
  1559.     {
  1560.       yyerror("parser stack overflow");
  1561.       return 2;
  1562.     }
  1563.       yystacksize *= 2;
  1564.       if (yystacksize > YYMAXDEPTH)
  1565.     yystacksize = YYMAXDEPTH;
  1566.       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
  1567.       __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
  1568.       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
  1569.       __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
  1570. #ifdef YYLSP_NEEDED
  1571.       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
  1572.       __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
  1573. #endif
  1574. #endif /* no yyoverflow */
  1575.  
  1576.       yyssp = yyss + size - 1;
  1577.       yyvsp = yyvs + size - 1;
  1578. #ifdef YYLSP_NEEDED
  1579.       yylsp = yyls + size - 1;
  1580. #endif
  1581.  
  1582. #if YYDEBUG != 0
  1583.       if (yydebug)
  1584.     fprintf(stderr, "Stack size increased to %d\n", yystacksize);
  1585. #endif
  1586.  
  1587.       if (yyssp >= yyss + yystacksize - 1)
  1588.     YYABORT;
  1589.     }
  1590.  
  1591. #if YYDEBUG != 0
  1592.   if (yydebug)
  1593.     fprintf(stderr, "Entering state %d\n", yystate);
  1594. #endif
  1595.  
  1596.   goto yybackup;
  1597.  yybackup:
  1598.  
  1599. /* Do appropriate processing given the current state.  */
  1600. /* Read a lookahead token if we need one and don't already have one.  */
  1601. /* yyresume: */
  1602.  
  1603.   /* First try to decide what to do without reference to lookahead token.  */
  1604.  
  1605.   yyn = yypact[yystate];
  1606.   if (yyn == YYFLAG)
  1607.     goto yydefault;
  1608.  
  1609.   /* Not known => get a lookahead token if don't already have one.  */
  1610.  
  1611.   /* yychar is either YYEMPTY or YYEOF
  1612.      or a valid token in external form.  */
  1613.  
  1614.   if (yychar == YYEMPTY)
  1615.     {
  1616. #if YYDEBUG != 0
  1617.       if (yydebug)
  1618.     fprintf(stderr, "Reading a token: ");
  1619. #endif
  1620.       yychar = YYLEX;
  1621.     }
  1622.  
  1623.   /* Convert token to internal form (in yychar1) for indexing tables with */
  1624.  
  1625.   if (yychar <= 0)        /* This means end of input. */
  1626.     {
  1627.       yychar1 = 0;
  1628.       yychar = YYEOF;        /* Don't call YYLEX any more */
  1629.  
  1630. #if YYDEBUG != 0
  1631.       if (yydebug)
  1632.     fprintf(stderr, "Now at end of input.\n");
  1633. #endif
  1634.     }
  1635.   else
  1636.     {
  1637.       yychar1 = YYTRANSLATE(yychar);
  1638.  
  1639. #if YYDEBUG != 0
  1640.       if (yydebug)
  1641.     {
  1642.       fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
  1643.       /* Give the individual parser a way to print the precise meaning
  1644.          of a token, for further debugging info.  */
  1645. #ifdef YYPRINT
  1646.       YYPRINT (stderr, yychar, yylval);
  1647. #endif
  1648.       fprintf (stderr, ")\n");
  1649.     }
  1650. #endif
  1651.     }
  1652.  
  1653.   yyn += yychar1;
  1654.   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
  1655.     goto yydefault;
  1656.  
  1657.   yyn = yytable[yyn];
  1658.  
  1659.   /* yyn is what to do for this token type in this state.
  1660.      Negative => reduce, -yyn is rule number.
  1661.      Positive => shift, yyn is new state.
  1662.        New state is final state => don't bother to shift,
  1663.        just return success.
  1664.      0, or most negative number => error.  */
  1665.  
  1666.   if (yyn < 0)
  1667.     {
  1668.       if (yyn == YYFLAG)
  1669.     goto yyerrlab;
  1670.       yyn = -yyn;
  1671.       goto yyreduce;
  1672.     }
  1673.   else if (yyn == 0)
  1674.     goto yyerrlab;
  1675.  
  1676.   if (yyn == YYFINAL)
  1677.     YYACCEPT;
  1678.  
  1679.   /* Shift the lookahead token.  */
  1680.  
  1681. #if YYDEBUG != 0
  1682.   if (yydebug)
  1683.     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
  1684. #endif
  1685.  
  1686.   /* Discard the token being shifted unless it is eof.  */
  1687.   if (yychar != YYEOF)
  1688.     yychar = YYEMPTY;
  1689.  
  1690.   *++yyvsp = yylval;
  1691. #ifdef YYLSP_NEEDED
  1692.   *++yylsp = yylloc;
  1693. #endif
  1694.  
  1695.   /* count tokens shifted since error; after three, turn off error status.  */
  1696.   if (yyerrstatus) yyerrstatus--;
  1697.  
  1698.   yystate = yyn;
  1699.   goto yynewstate;
  1700.  
  1701. /* Do the default action for the current state.  */
  1702. yydefault:
  1703.  
  1704.   yyn = yydefact[yystate];
  1705.   if (yyn == 0)
  1706.     goto yyerrlab;
  1707.  
  1708. /* Do a reduction.  yyn is the number of a rule to reduce with.  */
  1709. yyreduce:
  1710.   yylen = yyr2[yyn];
  1711.   if (yylen > 0)
  1712.     yyval = yyvsp[1-yylen]; /* implement default value of the action */
  1713.  
  1714. #if YYDEBUG != 0
  1715.   if (yydebug)
  1716.     {
  1717.       int i;
  1718.  
  1719.       fprintf (stderr, "Reducing via rule %d (line %d), ",
  1720.            yyn, yyrline[yyn]);
  1721.  
  1722.       /* Print the symbols being reduced, and their result.  */
  1723.       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
  1724.     fprintf (stderr, "%s ", yytname[yyrhs[i]]);
  1725.       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
  1726.     }
  1727. #endif
  1728.  
  1729.  
  1730.   switch (yyn) {
  1731.  
  1732. case 5:
  1733. #line 267 "fortran.y"
  1734. {
  1735.                 /* Create id token for prog if unnamed. */
  1736.               if(current_module_hash == -1) {
  1737.                 implied_id_token(&(yyvsp[0]),unnamed_prog);
  1738.                 def_function(
  1739.                      type_PROGRAM,    /* type */
  1740.                      size_DEFAULT,    /* size */
  1741.                      (char *)NULL,    /* size text */
  1742.                      &(yyvsp[0]),        /* name */
  1743.                      (Token*)NULL);    /* args */
  1744.                 current_module_hash =
  1745.                   def_curr_module(&(yyvsp[0]));
  1746.                 current_module_type = type_PROGRAM;
  1747.               }
  1748.  
  1749.                     /* Handle END statement */
  1750.               if(curr_stmt_class == tok_END) {
  1751.                 if(prev_stmt_class != tok_RETURN)
  1752.                   do_RETURN(current_module_hash,&(yyvsp[0]));
  1753.                 END_processing(&(yyval));
  1754.                 goto_flag = prev_goto = FALSE;
  1755.               }
  1756.               prev_stmt_class = curr_stmt_class;
  1757.               integer_context = FALSE;
  1758.               true_prev_stmt_line_num = yyval.line_num;
  1759.             ;
  1760.     break;}
  1761. case 10:
  1762. #line 307 "fortran.y"
  1763. {
  1764. #ifdef CHECK_LABELS
  1765.               def_label(&(yyvsp[-1]));
  1766. #endif
  1767.               if(executable_stmt)
  1768.                 prev_goto = goto_flag;
  1769.             ;
  1770.     break;}
  1771. case 11:
  1772. #line 315 "fortran.y"
  1773. {
  1774.               if(executable_stmt) {
  1775.                 if(prev_goto)
  1776.                 syntax_error(yyvsp[0].line_num, NO_COL_NUM,
  1777.                     "No path to this statement");
  1778.                 prev_goto = goto_flag;
  1779.               }
  1780.             ;
  1781.     break;}
  1782. case 12:
  1783. #line 326 "fortran.y"
  1784. {
  1785.                 exec_stmt_count = 0;
  1786.                 executable_stmt = FALSE;
  1787.             ;
  1788.     break;}
  1789. case 13:
  1790. #line 331 "fortran.y"
  1791. {
  1792.                 executable_stmt = FALSE;
  1793.             ;
  1794.     break;}
  1795. case 14:
  1796. #line 335 "fortran.y"
  1797. {    /* handle statement functions correctly */
  1798.               if(is_true(STMT_FUNCTION_EXPR, yyvsp[0].TOK_flags)
  1799.                      && stmt_sequence_no <= SEQ_STMT_FUN) {
  1800.                 stmt_sequence_no = SEQ_STMT_FUN;
  1801.                 executable_stmt = FALSE;
  1802.               }
  1803.               else {
  1804.                 stmt_sequence_no = SEQ_EXEC;
  1805.                 ++exec_stmt_count;
  1806.                 executable_stmt = TRUE;
  1807.               }
  1808.             ;
  1809.     break;}
  1810. case 15:
  1811. #line 348 "fortran.y"
  1812. {
  1813.                 stmt_sequence_no = SEQ_EXEC;
  1814.                 ++exec_stmt_count;
  1815.                 executable_stmt = TRUE;
  1816.             ;
  1817.     break;}
  1818. case 16:
  1819. #line 354 "fortran.y"
  1820. {
  1821.                 executable_stmt = TRUE;
  1822.                 if(stmt_sequence_no == 0)
  1823.                   stmt_sequence_no = SEQ_HEADER;
  1824.                 complex_const_allowed = FALSE; /* turn off flags */
  1825.                 inside_format=FALSE;
  1826.                 integer_context = FALSE;
  1827.                 in_assignment_stmt = FALSE;
  1828.                 yyval.line_num = prev_stmt_line_num; /* best guess */
  1829.                 yyerrok; /* (error message already given) */
  1830.             ;
  1831.     break;}
  1832. case 17:
  1833. #line 368 "fortran.y"
  1834. {
  1835.                 current_module_type = type_PROGRAM;
  1836.             ;
  1837.     break;}
  1838. case 18:
  1839. #line 372 "fortran.y"
  1840. {
  1841.                 current_module_type = type_SUBROUTINE;
  1842.             ;
  1843.     break;}
  1844. case 19:
  1845. #line 376 "fortran.y"
  1846. {
  1847.                 current_module_type = type_SUBROUTINE;
  1848.             ;
  1849.     break;}
  1850. case 20:
  1851. #line 380 "fortran.y"
  1852. {
  1853.                 current_module_type = type_BLOCK_DATA;
  1854.             ;
  1855.     break;}
  1856. case 24:
  1857. #line 393 "fortran.y"
  1858. {
  1859. #ifdef ALLOW_INCLUDE
  1860.               if(f77_include) {
  1861.                   nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  1862.               }
  1863.                open_include_file(yyvsp[-1].value.string,yyvsp[-2].line_num);
  1864. #else
  1865.               syntax_error(yyvsp[-2].line_num,yyvsp[-2].col_num,
  1866.                 "statement not permitted");
  1867. #endif
  1868.              ;
  1869.     break;}
  1870. case 25:
  1871. #line 412 "fortran.y"
  1872. {
  1873.                  if(stmt_sequence_no < SEQ_IMPLICIT) {
  1874.                 stmt_sequence_no = SEQ_IMPLICIT;
  1875.                  }
  1876.             ;
  1877.     break;}
  1878. case 26:
  1879. #line 418 "fortran.y"
  1880. {
  1881.                  if(stmt_sequence_no < SEQ_IMPLICIT) {
  1882.                    stmt_sequence_no = SEQ_IMPLICIT;
  1883.                  }
  1884.                  else if(stmt_sequence_no > SEQ_SPECIF) {
  1885.                    check_stmt_sequence(&(yyvsp[0]),SEQ_SPECIF);
  1886.                  }
  1887.             ;
  1888.     break;}
  1889. case 27:
  1890. #line 427 "fortran.y"
  1891. {
  1892.               check_stmt_sequence(&(yyvsp[0]),SEQ_IMPLICIT);
  1893.             ;
  1894.     break;}
  1895. case 28:
  1896. #line 431 "fortran.y"
  1897. {
  1898.                  if(stmt_sequence_no < SEQ_STMT_FUN) {
  1899.                 stmt_sequence_no = SEQ_STMT_FUN;
  1900.                   }
  1901.             ;
  1902.     break;}
  1903. case 29:
  1904. #line 437 "fortran.y"
  1905. {
  1906.               check_stmt_sequence(&(yyvsp[0]),SEQ_SPECIF);
  1907.             ;
  1908.     break;}
  1909. case 30:
  1910. #line 443 "fortran.y"
  1911. {
  1912.                  goto_flag = prev_goto = FALSE;
  1913.             ;
  1914.     break;}
  1915. case 41:
  1916. #line 464 "fortran.y"
  1917. {
  1918.                 goto_flag=TRUE;
  1919.             ;
  1920.     break;}
  1921. case 42:
  1922. #line 468 "fortran.y"
  1923. {
  1924.                 goto_flag=FALSE;
  1925.             ;
  1926.     break;}
  1927. case 65:
  1928. #line 501 "fortran.y"
  1929. {
  1930.                 goto_flag=FALSE;
  1931.             ;
  1932.     break;}
  1933. case 66:
  1934. #line 505 "fortran.y"
  1935. {
  1936.                 prev_goto = goto_flag =FALSE;
  1937.             ;
  1938.     break;}
  1939. case 69:
  1940. #line 514 "fortran.y"
  1941. {    /* Flag DO w/o label or DO WHILE forms here */
  1942.               if(is_true(NONSTD_USAGE_FLAG,yyvsp[0].TOK_flags))
  1943. #ifdef ALLOW_DO_ENDDO
  1944.                 if(f77_do_enddo)
  1945.                 nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  1946. #else
  1947.                 syntax_error(yyvsp[0].line_num,yyvsp[0].col_num,
  1948.                     "Nonstandard syntax");
  1949. #endif
  1950.             ;
  1951.     break;}
  1952. case 70:
  1953. #line 526 "fortran.y"
  1954. {
  1955. #ifdef ALLOW_DO_ENDDO
  1956.                 if(f77_do_enddo)
  1957.                 nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  1958. #else
  1959.                 syntax_error(yyvsp[0].line_num,yyvsp[0].col_num,
  1960.                     "Nonstandard syntax");
  1961. #endif
  1962.             ;
  1963.     break;}
  1964. case 74:
  1965. #line 543 "fortran.y"
  1966. {check_seq_header(&(yyvsp[0]));;
  1967.     break;}
  1968. case 75:
  1969. #line 545 "fortran.y"
  1970. {
  1971.                  def_function(
  1972.                       type_PROGRAM,    /* type */
  1973.                       size_DEFAULT,    /* size */
  1974.                       (char *)NULL,    /* size text */
  1975.                       &(yyvsp[-1]),    /* name */
  1976.                       (Token*)NULL);/* args */
  1977.                  current_module_hash =
  1978.                    def_curr_module(&(yyvsp[-1]));
  1979.             ;
  1980.     break;}
  1981. case 76:
  1982. #line 562 "fortran.y"
  1983. {
  1984.               do_ENTRY(&(yyvsp[-1]),(Token*)NULL
  1985.                    ,current_module_hash);
  1986.             ;
  1987.     break;}
  1988. case 77:
  1989. #line 567 "fortran.y"
  1990. {
  1991.               do_ENTRY(&(yyvsp[-4]),&(yyvsp[-2])
  1992.                    ,current_module_hash);
  1993. #ifdef DEBUG_PARSER
  1994.                  if(debug_parser)
  1995.                 print_exprlist("entry stmt",&(yyvsp[-2]));
  1996. #endif
  1997.             ;
  1998.     break;}
  1999. case 79:
  2000. #line 583 "fortran.y"
  2001. {
  2002.                  if(f77_function_noparen) {
  2003.                 nonstandard(yyvsp[-1].line_num,
  2004.                  (unsigned)(yyvsp[-1].col_num+strlen(token_name(yyvsp[-1]))));
  2005.                 msg_tail(": parentheses required");
  2006.                  }
  2007.              def_function(
  2008.                       current_datatype,
  2009.                       current_typesize,
  2010.                       current_len_text,
  2011.                       &(yyvsp[-1]),
  2012.                       (Token*)NULL);
  2013.              current_module_hash=
  2014.                def_curr_module(&(yyvsp[-1]));
  2015.             ;
  2016.     break;}
  2017. case 80:
  2018. #line 600 "fortran.y"
  2019. {
  2020.              def_function(
  2021.                       current_datatype,
  2022.                       current_typesize,
  2023.                       current_len_text,
  2024.                       &(yyvsp[-4]),
  2025.                       &(yyvsp[-2]));
  2026.              current_module_hash=
  2027.                def_curr_module(&(yyvsp[-4]));
  2028. #ifdef DEBUG_PARSER
  2029.              if(debug_parser)
  2030.                print_exprlist("function stmt",&(yyvsp[-2]));
  2031. #endif
  2032.             ;
  2033.     break;}
  2034. case 81:
  2035. #line 615 "fortran.y"
  2036. {
  2037.                  if(f77_function_noparen) {
  2038.                 nonstandard(yyvsp[-1].line_num,
  2039.                   (unsigned)(yyvsp[-1].col_num+strlen(token_name(yyvsp[-1]))));
  2040.                 msg_tail(": parentheses required");
  2041.                  }
  2042.              def_function(
  2043.                       type_UNDECL,
  2044.                       size_DEFAULT,
  2045.                       (char *)NULL,
  2046.                       &(yyvsp[-1]),
  2047.                       (Token*)NULL);
  2048.              current_module_hash=
  2049.                def_curr_module(&(yyvsp[-1]));
  2050.             ;
  2051.     break;}
  2052. case 82:
  2053. #line 632 "fortran.y"
  2054. {
  2055.              def_function(
  2056.                       type_UNDECL,    /* type */
  2057.                       size_DEFAULT,    /* size */
  2058.                       (char *)NULL,    /* size text */
  2059.                       &(yyvsp[-4]),        /* name */
  2060.                       &(yyvsp[-2]));        /* args */
  2061.              current_module_hash=
  2062.                def_curr_module(&(yyvsp[-4]));
  2063. #ifdef DEBUG_PARSER
  2064.              if(debug_parser)
  2065.                print_exprlist("function stmt",&(yyvsp[-2]));
  2066. #endif
  2067.             ;
  2068.     break;}
  2069. case 85:
  2070. #line 655 "fortran.y"
  2071. {
  2072.               check_seq_header(&(yyvsp[0]));
  2073.             ;
  2074.     break;}
  2075. case 90:
  2076. #line 674 "fortran.y"
  2077. {
  2078.               def_function(
  2079.                        type_SUBROUTINE,
  2080.                        size_DEFAULT,
  2081.                        (char *)NULL,
  2082.                        &(yyvsp[-1]),
  2083.                        (Token*)NULL);
  2084.               current_module_hash=
  2085.                 def_curr_module(&(yyvsp[-1]));
  2086.             ;
  2087.     break;}
  2088. case 91:
  2089. #line 686 "fortran.y"
  2090. {
  2091.               def_function(
  2092.                        type_SUBROUTINE,
  2093.                        size_DEFAULT,
  2094.                        (char *)NULL,
  2095.                        &(yyvsp[-4]),
  2096.                        &(yyvsp[-2]));
  2097.               current_module_hash=
  2098.                 def_curr_module(&(yyvsp[-4]));
  2099. #ifdef DEBUG_PARSER
  2100.               if(debug_parser)
  2101.                 print_exprlist("subroutine stmt",&(yyvsp[-2]));
  2102. #endif
  2103.             ;
  2104.     break;}
  2105. case 92:
  2106. #line 703 "fortran.y"
  2107. {
  2108.               check_seq_header(&(yyvsp[0]));
  2109.             ;
  2110.     break;}
  2111. case 93:
  2112. #line 709 "fortran.y"
  2113. {
  2114.                 yyval.next_token = (Token*)NULL;
  2115.             ;
  2116.     break;}
  2117. case 95:
  2118. #line 716 "fortran.y"
  2119. {
  2120.                 yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  2121.             ;
  2122.     break;}
  2123. case 96:
  2124. #line 720 "fortran.y"
  2125. {
  2126.                 yyval.next_token = append_token(yyvsp[-2].next_token,&(yyvsp[0]));
  2127.             ;
  2128.     break;}
  2129. case 97:
  2130. #line 726 "fortran.y"
  2131. {
  2132.                  def_arg_name(&(yyvsp[0]));
  2133.                  primary_id_expr(&(yyvsp[0]),&(yyval));
  2134.             ;
  2135.     break;}
  2136. case 98:
  2137. #line 731 "fortran.y"
  2138. {
  2139.                  yyval.TOK_type = type_byte(class_LABEL,type_LABEL);
  2140.                  yyval.size = size_DEFAULT;
  2141.                  yyval.TOK_flags = 0;
  2142.                  yyval.left_token = (Token *)NULL;
  2143.             ;
  2144.     break;}
  2145. case 99:
  2146. #line 743 "fortran.y"
  2147. {
  2148.                   /* form name %DATnn */
  2149.               ++block_data_number;
  2150.               (void)sprintf(unnamed_block_data+4,"%02d",
  2151.                     block_data_number%100);
  2152.               implied_id_token(&(yyval),unnamed_block_data);
  2153.  
  2154.               def_function(
  2155.                        type_BLOCK_DATA,
  2156.                        size_DEFAULT,
  2157.                        (char *)NULL,
  2158.                        &(yyval),
  2159.                        (Token*)NULL);
  2160.               current_module_hash=
  2161.                 def_curr_module(&(yyval));
  2162.             ;
  2163.     break;}
  2164. case 100:
  2165. #line 760 "fortran.y"
  2166. {
  2167.               def_function(
  2168.                        type_BLOCK_DATA,
  2169.                        size_DEFAULT,
  2170.                        (char *)NULL,
  2171.                        &(yyvsp[-1]),
  2172.                        (Token*)NULL);
  2173.               current_module_hash=
  2174.                 def_curr_module(&(yyvsp[-1]));
  2175.             ;
  2176.     break;}
  2177. case 101:
  2178. #line 773 "fortran.y"
  2179. {
  2180.               check_seq_header(&(yyvsp[0]));
  2181.             ;
  2182.     break;}
  2183. case 102:
  2184. #line 777 "fortran.y"
  2185. {
  2186.               check_seq_header(&(yyvsp[0]));
  2187.             ;
  2188.     break;}
  2189. case 106:
  2190. #line 792 "fortran.y"
  2191. {
  2192.                  def_array_dim(&(yyvsp[-3]),&(yyvsp[-1]));
  2193.             ;
  2194.     break;}
  2195. case 107:
  2196. #line 799 "fortran.y"
  2197. {
  2198.                  yyval.TOK_dims = 1;
  2199.                  yyval.TOK_elts = yyvsp[0].TOK_elts;
  2200.                  yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  2201.             ;
  2202.     break;}
  2203. case 108:
  2204. #line 805 "fortran.y"
  2205. {
  2206.                  yyval.TOK_dims = yyvsp[-2].TOK_dims + 1; /* one more dimension */
  2207.                  yyval.TOK_elts = yyvsp[-2].TOK_elts * yyvsp[0].TOK_elts;
  2208.                  yyval.next_token = append_token(yyvsp[-2].next_token,&(yyvsp[0]));
  2209.             ;
  2210.     break;}
  2211. case 109:
  2212. #line 813 "fortran.y"
  2213. {
  2214.                   if( datatype_of(yyvsp[0].TOK_type) == type_INTEGER
  2215.                  && is_true(EVALUATED_EXPR,yyvsp[0].TOK_flags) )
  2216.                 yyval.TOK_elts = yyvsp[0].value.integer;
  2217.                   else
  2218.                 yyval.TOK_elts = 0;
  2219.             ;
  2220.     break;}
  2221. case 110:
  2222. #line 821 "fortran.y"
  2223. {    /* avoid getting 0 - 0 + 1 = 1 if bounds nonconstant */
  2224.                   if( datatype_of(yyvsp[-2].TOK_type) == type_INTEGER
  2225.                  && is_true(EVALUATED_EXPR,yyvsp[-2].TOK_flags)
  2226.                  && datatype_of(yyvsp[0].TOK_type) == type_INTEGER
  2227.                  && is_true(EVALUATED_EXPR,yyvsp[0].TOK_flags) )
  2228.                 yyval.TOK_elts = yyvsp[0].value.integer - yyvsp[-2].value.integer + 1;
  2229.                   else
  2230.                 yyval.TOK_elts = 0;
  2231.  
  2232.                   yyval.left_token = add_tree_node(&(yyvsp[-1]),&(yyvsp[-2]),&(yyvsp[0]));
  2233.             ;
  2234.     break;}
  2235. case 111:
  2236. #line 833 "fortran.y"
  2237. {
  2238.                  yyval.TOK_elts = 0;
  2239.                  yyval.left_token = (Token *)NULL;
  2240.             ;
  2241.     break;}
  2242. case 112:
  2243. #line 838 "fortran.y"
  2244. {
  2245.                  yyval.TOK_elts = 0;
  2246.                  yyvsp[0].left_token = (Token *)NULL;
  2247.                  yyval.left_token = add_tree_node(&(yyvsp[-1]),&(yyvsp[-2]),&(yyvsp[0]));
  2248.             ;
  2249.     break;}
  2250. case 113:
  2251. #line 846 "fortran.y"
  2252. {equivalence_flag = TRUE;;
  2253.     break;}
  2254. case 114:
  2255. #line 847 "fortran.y"
  2256. {equivalence_flag = FALSE;;
  2257.     break;}
  2258. case 117:
  2259. #line 855 "fortran.y"
  2260. {
  2261.               equivalence(&(yyvsp[-2]), &(yyvsp[0]));
  2262.             ;
  2263.     break;}
  2264. case 118:
  2265. #line 859 "fortran.y"
  2266. {
  2267.               equivalence(&(yyvsp[-2]), &(yyvsp[0]));
  2268.             ;
  2269.     break;}
  2270. case 119:
  2271. #line 866 "fortran.y"
  2272. {
  2273.                  def_equiv_name(&(yyvsp[0]));
  2274.             ;
  2275.     break;}
  2276. case 120:
  2277. #line 870 "fortran.y"
  2278. {
  2279.                  def_equiv_name(&(yyvsp[0]));
  2280.             ;
  2281.     break;}
  2282. case 121:
  2283. #line 874 "fortran.y"
  2284. {
  2285.                  def_equiv_name(&(yyvsp[0]));
  2286.             ;
  2287.     break;}
  2288. case 125:
  2289. #line 889 "fortran.y"
  2290. {
  2291.                  implied_id_token(&(yyval),blank_com_name);
  2292.                  def_com_block(&(yyval), &(yyvsp[-1]));
  2293.                  if(is_true(COMMA_FLAG,yyvsp[-1].TOK_flags))
  2294.                    syntax_error(
  2295.                          yyvsp[-1].line_num,yyvsp[-1].col_num,
  2296.                          "trailing comma");
  2297. #ifdef DEBUG_PARSER
  2298.                  if(debug_parser)
  2299.                 print_comlist("blank common",&(yyvsp[-1]));
  2300. #endif
  2301.  
  2302.             ;
  2303.     break;}
  2304. case 126:
  2305. #line 903 "fortran.y"
  2306. {
  2307.                  if(is_true(COMMA_FLAG,yyvsp[-1].TOK_flags))
  2308.                 syntax_error(
  2309.                          yyvsp[-1].line_num,yyvsp[-1].col_num,
  2310.                          "trailing comma");
  2311.  
  2312.             ;
  2313.     break;}
  2314. case 127:
  2315. #line 911 "fortran.y"
  2316. {
  2317.                  implied_id_token(&(yyval),blank_com_name);
  2318.                  def_com_block(&(yyval),&(yyvsp[-2]));
  2319.                  if(is_true(COMMA_FLAG,yyvsp[-1].TOK_flags))
  2320.                 syntax_error(
  2321.                          yyvsp[-1].line_num,yyvsp[-1].col_num,
  2322.                          "trailing comma");
  2323. #ifdef DEBUG_PARSER
  2324.                  if(debug_parser)
  2325.                 print_comlist("blank common",&(yyvsp[-2]));
  2326. #endif
  2327.             ;
  2328.     break;}
  2329. case 128:
  2330. #line 929 "fortran.y"
  2331. {
  2332.                  yyval.TOK_flags = yyvsp[0].TOK_flags;
  2333.             ;
  2334.     break;}
  2335. case 129:
  2336. #line 933 "fortran.y"
  2337. {
  2338.                  yyval.TOK_flags = yyvsp[0].TOK_flags;
  2339.                  yyval.line_num = yyvsp[0].line_num;
  2340.                  yyval.col_num = yyvsp[0].col_num;
  2341.             ;
  2342.     break;}
  2343. case 130:
  2344. #line 941 "fortran.y"
  2345. {
  2346.                  def_com_block(&(yyvsp[-1]),&(yyvsp[0]));
  2347.                  yyval.TOK_flags = yyvsp[0].TOK_flags;
  2348.                  yyval.line_num = yyvsp[0].line_num;
  2349.                  yyval.col_num = yyvsp[0].col_num;
  2350. #ifdef DEBUG_PARSER
  2351.                  if(debug_parser)
  2352.                 print_comlist("labeled common",&(yyvsp[0]));
  2353. #endif
  2354.             ;
  2355.     break;}
  2356. case 131:
  2357. #line 954 "fortran.y"
  2358. {
  2359.                  yyval = yyvsp[-1];
  2360.             ;
  2361.     break;}
  2362. case 132:
  2363. #line 959 "fortran.y"
  2364. {
  2365.                  implied_id_token(&(yyval),blank_com_name);
  2366.             ;
  2367.     break;}
  2368. case 133:
  2369. #line 963 "fortran.y"
  2370. {
  2371.                  implied_id_token(&(yyval),blank_com_name);
  2372.             ;
  2373.     break;}
  2374. case 134:
  2375. #line 969 "fortran.y"
  2376. {
  2377.                 yyval.TOK_flags = yyvsp[0].TOK_flags;
  2378.                 yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  2379.             ;
  2380.     break;}
  2381. case 135:
  2382. #line 974 "fortran.y"
  2383. {
  2384.                 if(!is_true(COMMA_FLAG,yyvsp[-1].TOK_flags))
  2385.                 syntax_error(
  2386.                     yyvsp[0].line_num,yyvsp[0].col_num-1,
  2387.                     "missing comma");
  2388.                 yyval.TOK_flags = yyvsp[0].TOK_flags;
  2389.                 yyval.line_num = yyvsp[0].line_num;
  2390.                 yyval.col_num = yyvsp[0].col_num;
  2391.                 yyval.next_token = append_token(yyvsp[-1].next_token,&(yyvsp[0]));
  2392.             ;
  2393.     break;}
  2394. case 136:
  2395. #line 987 "fortran.y"
  2396. {               /* no comma */
  2397.                  yyval.TOK_flags = yyvsp[0].TOK_flags;
  2398.                  make_false(COMMA_FLAG,yyval.TOK_flags);
  2399.             ;
  2400.     break;}
  2401. case 137:
  2402. #line 992 "fortran.y"
  2403. {               /* has comma */
  2404.                  yyval.TOK_flags = yyvsp[-1].TOK_flags;
  2405.                  make_true(COMMA_FLAG,yyval.TOK_flags);
  2406.                ;
  2407.     break;}
  2408. case 138:
  2409. #line 999 "fortran.y"
  2410. {
  2411.                  def_com_variable(&(yyvsp[0]));
  2412.                  primary_id_expr(&(yyvsp[0]),&(yyval));
  2413.             ;
  2414.     break;}
  2415. case 139:
  2416. #line 1004 "fortran.y"
  2417. {
  2418.                  def_com_variable(&(yyvsp[0]));
  2419.                  primary_id_expr(&(yyvsp[0]),&(yyval));
  2420.             ;
  2421.     break;}
  2422. case 140:
  2423. #line 1017 "fortran.y"
  2424. {
  2425.                 if(is_true(COMMA_FLAG,yyvsp[-1].TOK_flags))
  2426.                 syntax_error(yyvsp[-1].line_num,
  2427.                  (unsigned)(yyvsp[-1].col_num+strlen(token_name(yyvsp[-1]))),
  2428.                     "trailing comma");
  2429.                 if(f77_namelist) {
  2430.                 nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  2431.                 }
  2432.             ;
  2433.     break;}
  2434. case 142:
  2435. #line 1030 "fortran.y"
  2436. {
  2437.                 yyval = yyvsp[0];
  2438.             ;
  2439.     break;}
  2440. case 143:
  2441. #line 1036 "fortran.y"
  2442. {
  2443.                  def_namelist(&(yyvsp[-1]),&(yyvsp[0]));
  2444.                  yyval = yyvsp[0];
  2445.             ;
  2446.     break;}
  2447. case 144:
  2448. #line 1043 "fortran.y"
  2449. {
  2450.                 yyval = yyvsp[-1];
  2451.             ;
  2452.     break;}
  2453. case 145:
  2454. #line 1049 "fortran.y"
  2455. {
  2456.                  yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  2457.             ;
  2458.     break;}
  2459. case 146:
  2460. #line 1053 "fortran.y"
  2461. {
  2462.                 if(!is_true(COMMA_FLAG,yyvsp[-1].TOK_flags))
  2463.                 syntax_error(
  2464.                     yyvsp[0].line_num,yyvsp[0].col_num-1,
  2465.                     "missing comma");
  2466.                 yyval.TOK_flags = yyvsp[0].TOK_flags;
  2467.                 yyval.line_num = yyvsp[0].line_num;
  2468.                 yyval.col_num = yyvsp[0].col_num;
  2469.                 yyval.next_token = append_token(yyvsp[-1].next_token,&(yyvsp[0]));
  2470.             ;
  2471.     break;}
  2472. case 147:
  2473. #line 1066 "fortran.y"
  2474. {               /* no comma */
  2475.                  def_namelist_item(&(yyvsp[0]));
  2476.                  primary_id_expr(&(yyvsp[0]),&(yyval));
  2477.                  make_false(COMMA_FLAG,yyval.TOK_flags);
  2478.             ;
  2479.     break;}
  2480. case 148:
  2481. #line 1072 "fortran.y"
  2482. {               /* has comma */
  2483.                  def_namelist_item(&(yyvsp[-1]));
  2484.                  primary_id_expr(&(yyvsp[-1]),&(yyval));
  2485.                  make_true(COMMA_FLAG,yyval.TOK_flags);
  2486.             ;
  2487.     break;}
  2488. case 153:
  2489. #line 1087 "fortran.y"
  2490. {
  2491.               current_typesize = size_DEFAULT;
  2492.               current_len_text = NULL;
  2493.             ;
  2494.     break;}
  2495. case 154:
  2496. #line 1093 "fortran.y"
  2497. {
  2498.                 current_typesize = yyvsp[0].value.integer;
  2499.                 current_len_text = NULL;
  2500. #if 0 /* defunct feature */
  2501.                 if(local_wordsize > 0) {
  2502.                   /*  recognize REAL*2w as DOUBLE PRECISION */
  2503.                   if(current_datatype == type_REAL
  2504.                  && yyvsp[0].value.integer == type_size[type_DP])
  2505.                 current_datatype = type_DP;
  2506.                   /*  recognize COMPLEX*4w as DOUBLE COMPLEX */
  2507.                   if(current_datatype == type_COMPLEX
  2508.                  && yyvsp[0].value.integer==type_size[type_DCOMPLEX])
  2509.                 current_datatype = type_DCOMPLEX;
  2510.                 }
  2511. #endif
  2512.                  if(f77_typesize) {
  2513.                 nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  2514.                  }
  2515.             ;
  2516.     break;}
  2517. case 156:
  2518. #line 1117 "fortran.y"
  2519. {
  2520.                  current_datatype = type_INTEGER;
  2521.                  integer_context = TRUE;
  2522.             ;
  2523.     break;}
  2524. case 157:
  2525. #line 1122 "fortran.y"
  2526. {
  2527.                  current_datatype = type_REAL;
  2528.                  integer_context = TRUE;
  2529.             ;
  2530.     break;}
  2531. case 158:
  2532. #line 1127 "fortran.y"
  2533. {
  2534.                  current_datatype = type_COMPLEX;
  2535.                  integer_context = TRUE;
  2536.             ;
  2537.     break;}
  2538. case 159:
  2539. #line 1132 "fortran.y"
  2540. {
  2541.                  current_datatype = type_LOGICAL;
  2542.                  integer_context = TRUE;
  2543.             ;
  2544.     break;}
  2545. case 160:
  2546. #line 1139 "fortran.y"
  2547. {
  2548.                  current_datatype = type_DP;
  2549.                  current_typesize = size_DEFAULT;
  2550.                  current_len_text = NULL;
  2551.             ;
  2552.     break;}
  2553. case 161:
  2554. #line 1145 "fortran.y"
  2555. {
  2556.                  current_datatype = type_DP;
  2557.                  current_typesize = size_DEFAULT;
  2558.                  current_len_text = NULL;
  2559.             ;
  2560.     break;}
  2561. case 162:
  2562. #line 1151 "fortran.y"
  2563. {
  2564.                  current_datatype = type_DCOMPLEX;
  2565.                  current_typesize = size_DEFAULT;
  2566.                  current_len_text = NULL;
  2567.                  if(f77_double_complex) {
  2568.                 nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  2569.                  }
  2570.             ;
  2571.     break;}
  2572. case 163:
  2573. #line 1160 "fortran.y"
  2574. {
  2575.                  current_datatype = type_DCOMPLEX;
  2576.                  current_typesize = size_DEFAULT;
  2577.                  current_len_text = NULL;
  2578.                  if(f77_double_complex) {
  2579.                 nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  2580.                  }
  2581.             ;
  2582.     break;}
  2583. case 164:
  2584. #line 1169 "fortran.y"
  2585. {
  2586.                  current_datatype = type_INTEGER;
  2587.                  current_typesize = 1;
  2588.                  current_len_text = NULL;
  2589.                  if(f77_byte)
  2590.                    nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  2591.             ;
  2592.     break;}
  2593. case 165:
  2594. #line 1179 "fortran.y"
  2595. {
  2596.                  current_datatype = type_STRING;
  2597.                  current_typesize = 1;
  2598.                  current_len_text = NULL;
  2599.                  current_size_is_adjustable = 0;
  2600.                  current_size_is_expression = 0;
  2601.                  integer_context = TRUE;
  2602.             ;
  2603.     break;}
  2604. case 166:
  2605. #line 1190 "fortran.y"
  2606. {
  2607.                  current_typesize = yyvsp[0].value.integer;
  2608.                  current_size_is_adjustable = yyvsp[0].size_is_adjustable;
  2609.                  current_size_is_expression = yyvsp[0].size_is_expression;
  2610.                 /* Save length spec text if expression */
  2611.                  if(current_size_is_expression) {
  2612.                    if(yyvsp[0].left_token == NULL)
  2613.                  current_len_text = new_tree_text(&(yyvsp[0]));
  2614.                    else
  2615.                  current_len_text = new_tree_text(yyvsp[0].left_token);
  2616.                  }
  2617.                  else
  2618.                    current_len_text = NULL;
  2619.             ;
  2620.     break;}
  2621. case 169:
  2622. #line 1211 "fortran.y"
  2623. {
  2624.                  declare_type(&(yyvsp[0]),
  2625.                       current_datatype,
  2626.                       current_typesize,
  2627.                       current_len_text);
  2628.             ;
  2629.     break;}
  2630. case 170:
  2631. #line 1218 "fortran.y"
  2632. {
  2633.                  declare_type(&(yyvsp[0]),
  2634.                       current_datatype,
  2635.                       current_typesize,
  2636.                       current_len_text);
  2637.             ;
  2638.     break;}
  2639. case 173:
  2640. #line 1231 "fortran.y"
  2641. {
  2642.                  yyvsp[0].size_is_adjustable = current_size_is_adjustable;
  2643.                  yyvsp[0].size_is_expression = current_size_is_expression;
  2644.                  declare_type(&(yyvsp[0]),
  2645.                       current_datatype,
  2646.                       current_typesize,
  2647.                       current_len_text);
  2648.             ;
  2649.     break;}
  2650. case 174:
  2651. #line 1240 "fortran.y"
  2652. {
  2653.                  yyvsp[-2].size_is_adjustable = yyvsp[0].size_is_adjustable;
  2654.                  yyvsp[-2].size_is_expression = yyvsp[0].size_is_expression;
  2655.                  declare_type(&(yyvsp[-2]),
  2656.                       current_datatype,
  2657.                       yyvsp[0].value.integer,
  2658.                       new_tree_text(
  2659.                          yyvsp[0].left_token == NULL?
  2660.                          &(yyvsp[0]): yyvsp[0].left_token )
  2661.                       );
  2662.             ;
  2663.     break;}
  2664. case 175:
  2665. #line 1252 "fortran.y"
  2666. {
  2667.                  yyvsp[0].size_is_adjustable = current_size_is_adjustable;
  2668.                  yyvsp[0].size_is_expression = current_size_is_expression;
  2669.                  declare_type(&(yyvsp[0]),
  2670.                       current_datatype,
  2671.                       current_typesize,
  2672.                       current_len_text);
  2673.             ;
  2674.     break;}
  2675. case 176:
  2676. #line 1261 "fortran.y"
  2677. {
  2678.                  yyvsp[-2].size_is_adjustable = yyvsp[0].size_is_adjustable;
  2679.                  yyvsp[-2].size_is_expression = yyvsp[0].size_is_expression;
  2680.                  declare_type(&(yyvsp[-2]),
  2681.                       current_datatype,
  2682.                       yyvsp[0].value.integer,
  2683.                       new_tree_text(
  2684.                          yyvsp[0].left_token == NULL?
  2685.                          &(yyvsp[0]): yyvsp[0].left_token )
  2686.                       );
  2687.             ;
  2688.     break;}
  2689. case 177:
  2690. #line 1276 "fortran.y"
  2691. {implicit_flag=TRUE;;
  2692.     break;}
  2693. case 178:
  2694. #line 1280 "fortran.y"
  2695. {
  2696.                 implicit_flag=FALSE;
  2697.                 if(implicit_none) {
  2698.                 syntax_error(yyvsp[-2].line_num,yyvsp[-2].col_num,
  2699.                      "conflicts with IMPLICIT NONE");
  2700.                 }
  2701.                 else {
  2702.                 implicit_type_given = TRUE;
  2703.                 }
  2704.             ;
  2705.     break;}
  2706. case 179:
  2707. #line 1292 "fortran.y"
  2708. {
  2709.                 implicit_flag=FALSE;
  2710.                 if(implicit_type_given) {
  2711.                     syntax_error(yyvsp[-2].line_num,yyvsp[-2].col_num,
  2712.                      "conflicts with IMPLICIT statement");
  2713.                 }
  2714.                 else {
  2715.                     if(f77_implicit_none)
  2716.                       nonstandard(yyvsp[-1].line_num,yyvsp[-1].col_num);
  2717.                     implicit_none = TRUE;
  2718.                 }
  2719.             ;
  2720.     break;}
  2721. case 181:
  2722. #line 1307 "fortran.y"
  2723. {initial_flag = TRUE;;
  2724.     break;}
  2725. case 183:
  2726. #line 1313 "fortran.y"
  2727. {implicit_letter_flag = TRUE;;
  2728.     break;}
  2729. case 184:
  2730. #line 1314 "fortran.y"
  2731. {implicit_letter_flag = FALSE;;
  2732.     break;}
  2733. case 187:
  2734. #line 1322 "fortran.y"
  2735. {
  2736.               int c1 = (int)yyvsp[0].subclass;
  2737.  
  2738.               if( (f77_dollarsigns && c1=='$')
  2739.                || (f77_underscores && c1=='_') ) {
  2740.                 nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  2741.                 msg_tail(": nonalphabetic character");
  2742.               }
  2743.  
  2744.                set_implicit_type(current_datatype,
  2745.                          current_typesize,
  2746.                          current_len_text,
  2747.                          c1,c1);
  2748.             ;
  2749.     break;}
  2750. case 188:
  2751. #line 1337 "fortran.y"
  2752. {
  2753.               int c1 = (int)yyvsp[-2].subclass,
  2754.                   c2 = (int)yyvsp[0].subclass;
  2755.  
  2756.               if( (f77_dollarsigns && (c1 == '$' || c2 == '$'))
  2757.                || (f77_underscores && (c1 == '_' || c2 == '_')))
  2758.               {
  2759.                 if(!isalpha(c1))
  2760.                   nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  2761.                 else
  2762.                   nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  2763.                 msg_tail(": nonalphabetic character");
  2764.               }
  2765.  
  2766.                set_implicit_type(current_datatype,
  2767.                          current_typesize,
  2768.                          current_len_text,
  2769.                          c1,c2);
  2770.             ;
  2771.     break;}
  2772. case 189:
  2773. #line 1361 "fortran.y"
  2774. {
  2775.                  yyvsp[-1].left_token = (Token *)NULL;
  2776.                  yyval.value.integer = size_ADJUSTABLE;
  2777.                  yyval.size_is_adjustable = 1;
  2778.                  yyval.size_is_expression = 0;
  2779.                 /* Store as a parenthesized expr tree */
  2780.                  yyval.left_token = add_tree_node(&(yyvsp[-2]),&(yyvsp[-1]),
  2781.                               (Token*)NULL);
  2782.             ;
  2783.     break;}
  2784. case 190:
  2785. #line 1371 "fortran.y"
  2786. {
  2787.                  yyval.value.integer = yyvsp[0].value.integer;
  2788.                  yyval.size_is_adjustable = 0;
  2789.                  yyval.size_is_expression = 0;
  2790.             ;
  2791.     break;}
  2792. case 191:
  2793. #line 1377 "fortran.y"
  2794. {
  2795.                  yyval = yyvsp[-1];
  2796.                  yyval.size_is_adjustable = 0;
  2797.                  yyval.size_is_expression = 1;
  2798.                  if( yyval.value.integer <= 0 ){
  2799.                    if(misc_warn) {
  2800.                  warning(yyvsp[-1].line_num,yyvsp[-1].col_num,
  2801.                     "invalid length specification");
  2802.                  msg_tail(": substituting 1");
  2803.                    }
  2804.                    yyval.value.integer = 1;
  2805.                  }
  2806.                  yyval.left_token = add_tree_node(&(yyvsp[-2]),&(yyvsp[-1]),
  2807.                               (Token*)NULL);
  2808.             ;
  2809.     break;}
  2810. case 193:
  2811. #line 1397 "fortran.y"
  2812. {
  2813.                 if(f77_param_noparen)
  2814.                 nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  2815.             ;
  2816.     break;}
  2817. case 196:
  2818. #line 1407 "fortran.y"
  2819. {complex_const_allowed = TRUE;;
  2820.     break;}
  2821. case 197:
  2822. #line 1409 "fortran.y"
  2823. {
  2824.                  def_parameter(&(yyvsp[-3]),&(yyvsp[0]));
  2825.                  primary_id_expr(&(yyvsp[-3]),&(yyvsp[-3]));
  2826.                  assignment_stmt_type(&(yyvsp[-3]),&(yyvsp[-1]),&(yyvsp[0]));
  2827.                  complex_const_allowed = FALSE;
  2828.             ;
  2829.     break;}
  2830. case 199:
  2831. #line 1422 "fortran.y"
  2832. {
  2833.                  def_ext_name(&(yyvsp[0]));
  2834.             ;
  2835.     break;}
  2836. case 200:
  2837. #line 1426 "fortran.y"
  2838. {
  2839.                  def_ext_name(&(yyvsp[0]));
  2840.             ;
  2841.     break;}
  2842. case 202:
  2843. #line 1436 "fortran.y"
  2844. {
  2845.                  def_intrins_name(&(yyvsp[0]));
  2846.             ;
  2847.     break;}
  2848. case 203:
  2849. #line 1440 "fortran.y"
  2850. {
  2851.                  def_intrins_name(&(yyvsp[0]));
  2852.             ;
  2853.     break;}
  2854. case 204:
  2855. #line 1447 "fortran.y"
  2856. {
  2857.           if(f77_cray_pointers)
  2858.             nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  2859.         ;
  2860.     break;}
  2861. case 208:
  2862. #line 1461 "fortran.y"
  2863. {
  2864.                  declare_type(&(yyvsp[0]),type_INTEGER,local_wordsize,
  2865.                       NULL );
  2866.             ;
  2867.     break;}
  2868. case 209:
  2869. #line 1468 "fortran.y"
  2870. {
  2871.                 /* Suppress set/used warnings since
  2872.                    often is accessed only via pointer */
  2873.                      use_lvalue(&(yyvsp[0]));
  2874.                      use_variable(&(yyvsp[0]));
  2875.                 ;
  2876.     break;}
  2877. case 210:
  2878. #line 1475 "fortran.y"
  2879. {
  2880.                      use_lvalue(&(yyvsp[0]));
  2881.                      use_variable(&(yyvsp[0]));
  2882.                 ;
  2883.     break;}
  2884. case 211:
  2885. #line 1483 "fortran.y"
  2886. {
  2887.               global_save = TRUE;
  2888.             ;
  2889.     break;}
  2890. case 215:
  2891. #line 1494 "fortran.y"
  2892. {
  2893.                  save_variable(&(yyvsp[0]));
  2894.             ;
  2895.     break;}
  2896. case 216:
  2897. #line 1498 "fortran.y"
  2898. {
  2899. /***                 def_com_block(&($2),(Token*)NULL);***/
  2900.                  save_com_block(&(yyvsp[-1]));
  2901.             ;
  2902.     break;}
  2903. case 221:
  2904. #line 1514 "fortran.y"
  2905. {complex_const_allowed=TRUE;;
  2906.     break;}
  2907. case 222:
  2908. #line 1516 "fortran.y"
  2909. {complex_const_allowed=FALSE;;
  2910.     break;}
  2911. case 226:
  2912. #line 1525 "fortran.y"
  2913. {
  2914.                  use_lvalue(&(yyvsp[0]));
  2915.             ;
  2916.     break;}
  2917. case 233:
  2918. #line 1541 "fortran.y"
  2919. {
  2920.                  use_parameter(&(yyvsp[0]));
  2921.             ;
  2922.     break;}
  2923. case 235:
  2924. #line 1548 "fortran.y"
  2925. {
  2926.                  use_parameter(&(yyvsp[0]));
  2927.             ;
  2928.     break;}
  2929. case 238:
  2930. #line 1559 "fortran.y"
  2931. {
  2932.                  use_lvalue(&(yyvsp[0]));
  2933.             ;
  2934.     break;}
  2935. case 240:
  2936. #line 1567 "fortran.y"
  2937. {
  2938.                 use_implied_do_index(&(yyvsp[-3]));
  2939.             ;
  2940.     break;}
  2941. case 243:
  2942. #line 1578 "fortran.y"
  2943. {complex_const_allowed = TRUE;
  2944.                     in_assignment_stmt = TRUE;;
  2945.     break;}
  2946. case 244:
  2947. #line 1580 "fortran.y"
  2948. {
  2949.               if( ! (is_true(LVALUE_EXPR,yyvsp[-3].TOK_flags)
  2950.                    || is_true(STMT_FUNCTION_EXPR,yyvsp[-3].TOK_flags) )) {
  2951.                 syntax_error(yyvsp[-3].line_num,yyvsp[-3].col_num,
  2952.                      "left side is not assignable");
  2953.               }
  2954.               else {
  2955.                 assignment_stmt_type(&(yyvsp[-3]),&(yyvsp[-2]),
  2956.                     &(yyvsp[0]));
  2957.               }
  2958.               complex_const_allowed = FALSE;
  2959.               in_assignment_stmt = FALSE;
  2960.             ;
  2961.     break;}
  2962. case 245:
  2963. #line 1594 "fortran.y"
  2964. {
  2965.                 /* Clear u-b-s flags spuriously set */
  2966.               if(is_true(STMT_FUNCTION_EXPR, yyvsp[-5].TOK_flags)
  2967.                      && stmt_sequence_no <= SEQ_STMT_FUN)
  2968.                  stmt_function_stmt(&(yyvsp[-5]));
  2969.                 ;
  2970.     break;}
  2971. case 250:
  2972. #line 1612 "fortran.y"
  2973. {
  2974.                 do_ASSIGN(&(yyvsp[-1]));
  2975.             ;
  2976.     break;}
  2977. case 254:
  2978. #line 1629 "fortran.y"
  2979. {
  2980.                  do_assigned_GOTO(&(yyvsp[-1]));
  2981.             ;
  2982.     break;}
  2983. case 255:
  2984. #line 1633 "fortran.y"
  2985. {
  2986.                  do_assigned_GOTO(&(yyvsp[-4]));
  2987.             ;
  2988.     break;}
  2989. case 256:
  2990. #line 1637 "fortran.y"
  2991. {
  2992.                  do_assigned_GOTO(&(yyvsp[-5]));
  2993.             ;
  2994.     break;}
  2995. case 257:
  2996. #line 1643 "fortran.y"
  2997. {
  2998.                 integer_context=TRUE;
  2999.             ;
  3000.     break;}
  3001. case 258:
  3002. #line 1647 "fortran.y"
  3003. {
  3004.                 integer_context=TRUE;
  3005.             ;
  3006.     break;}
  3007. case 261:
  3008. #line 1659 "fortran.y"
  3009. {
  3010.               int t=datatype_of(yyvsp[-9].class);
  3011.               if(t != type_INTEGER && t != type_REAL
  3012.                  && t != type_DP && t != type_ERROR ) {
  3013.                 syntax_error(yyvsp[-9].line_num,yyvsp[-9].col_num,
  3014.           "integer, real, or double precision expression required");
  3015.               }
  3016.             ;
  3017.     break;}
  3018. case 262:
  3019. #line 1671 "fortran.y"
  3020. {
  3021.               int t=datatype_of(yyvsp[-1].TOK_type);
  3022.               if(t != type_LOGICAL && t != type_ERROR)
  3023.                  syntax_error(yyvsp[-1].line_num,yyvsp[-1].col_num,
  3024.                       "logical expression required");
  3025.             ;
  3026.     break;}
  3027. case 263:
  3028. #line 1681 "fortran.y"
  3029. {
  3030.               int t=datatype_of(yyvsp[-2].TOK_type);
  3031.               if(t != type_LOGICAL && t != type_ERROR)
  3032.                  syntax_error(yyvsp[-2].line_num,yyvsp[-2].col_num,
  3033.                       "logical expression required");
  3034.             ;
  3035.     break;}
  3036. case 264:
  3037. #line 1689 "fortran.y"
  3038. {complex_const_allowed = TRUE;;
  3039.     break;}
  3040. case 265:
  3041. #line 1690 "fortran.y"
  3042. {
  3043.                 if(is_true(ID_EXPR,yyvsp[-1].TOK_flags)){
  3044.                 use_variable(&(yyvsp[-1]));
  3045.                 }
  3046.                 complex_const_allowed = FALSE;
  3047.  
  3048.                 initial_flag = TRUE;    /* for is_keyword */
  3049.                 yyval = yyvsp[-1]; /* Inherit expr for type checking above */
  3050.             ;
  3051.     break;}
  3052. case 267:
  3053. #line 1703 "fortran.y"
  3054. {complex_const_allowed = TRUE;;
  3055.     break;}
  3056. case 268:
  3057. #line 1704 "fortran.y"
  3058. {
  3059.                 if(is_true(ID_EXPR,yyvsp[-1].TOK_flags)){
  3060.                 use_variable(&(yyvsp[-1]));
  3061.                 }
  3062.                 complex_const_allowed = FALSE;
  3063.  
  3064.                 initial_flag = TRUE;
  3065.             ;
  3066.     break;}
  3067. case 273:
  3068. #line 1734 "fortran.y"
  3069. {
  3070.               if( ! is_true(LVALUE_EXPR,yyvsp[-3].TOK_flags) ) {
  3071.                 syntax_error(yyvsp[-3].line_num,yyvsp[-3].col_num,
  3072.                      "index is not assignable");
  3073.               }
  3074.               else {
  3075.                  use_lvalue(&(yyvsp[-3]));
  3076.                  use_variable(&(yyvsp[-3]));
  3077.               }
  3078.  
  3079.                 /* Check for non-integer DO index or bounds */
  3080.                  if(datatype_of(yyvsp[-3].TOK_type) == type_INTEGER
  3081.                 && datatype_of(yyvsp[-1].TOK_type) != type_INTEGER) {
  3082.                    if(misc_warn) {
  3083.                  warning(yyvsp[-2].line_num,yyvsp[-2].col_num,
  3084.                   "type mismatch between DO index and bounds");
  3085.                    }
  3086.                  }
  3087.                  else if(datatype_of(yyvsp[-3].TOK_type) != type_INTEGER)
  3088.                    if(datatype_of(yyvsp[-1].TOK_type) != type_INTEGER) {
  3089.                  if(port_real_do)
  3090.                    nonportable(yyvsp[-1].line_num,yyvsp[-1].col_num,
  3091.                            "non-integer DO loop bounds");
  3092.                    }
  3093.                    else {
  3094.                  if(trunc_real_do_index)
  3095.                    warning(yyvsp[-3].line_num,yyvsp[-3].col_num,
  3096.                        "DO index is not integer");
  3097.                    }
  3098.             ;
  3099.     break;}
  3100. case 274:
  3101. #line 1765 "fortran.y"
  3102. {complex_const_allowed=TRUE;;
  3103.     break;}
  3104. case 275:
  3105. #line 1766 "fortran.y"
  3106. {
  3107.                 if(is_true(ID_EXPR,yyvsp[-2].TOK_flags)){
  3108.                 use_variable(&(yyvsp[-2]));
  3109.                 }
  3110.                 complex_const_allowed=FALSE;
  3111.                 make_true(NONSTD_USAGE_FLAG,yyval.TOK_flags);
  3112.             ;
  3113.     break;}
  3114. case 276:
  3115. #line 1774 "fortran.y"
  3116. {complex_const_allowed=TRUE;;
  3117.     break;}
  3118. case 277:
  3119. #line 1775 "fortran.y"
  3120. {
  3121.                 if(is_true(ID_EXPR,yyvsp[-2].TOK_flags)){
  3122.                 use_variable(&(yyvsp[-2]));
  3123.                 }
  3124.                 complex_const_allowed=FALSE;
  3125.                 make_true(NONSTD_USAGE_FLAG,yyval.TOK_flags);
  3126.             ;
  3127.     break;}
  3128. case 280:
  3129. #line 1787 "fortran.y"
  3130. {
  3131.                 make_true(NONSTD_USAGE_FLAG,yyval.TOK_flags);
  3132.                 integer_context=FALSE;
  3133.             ;
  3134.     break;}
  3135. case 281:
  3136. #line 1794 "fortran.y"
  3137. {
  3138.                 yyval.TOK_type=do_bounds_type(&(yyvsp[-2]),&(yyvsp[0]),&(yyvsp[0]));
  3139.             ;
  3140.     break;}
  3141. case 282:
  3142. #line 1798 "fortran.y"
  3143. {
  3144.                 yyval.TOK_type=do_bounds_type(&(yyvsp[-4]),&(yyvsp[-2]),&(yyvsp[0]));
  3145.             ;
  3146.     break;}
  3147. case 290:
  3148. #line 1822 "fortran.y"
  3149. {
  3150.                  use_variable(&(yyvsp[0]));
  3151.             ;
  3152.     break;}
  3153. case 292:
  3154. #line 1830 "fortran.y"
  3155. {complex_const_allowed = FALSE;;
  3156.     break;}
  3157. case 294:
  3158. #line 1832 "fortran.y"
  3159. {complex_const_allowed = FALSE;;
  3160.     break;}
  3161. case 296:
  3162. #line 1835 "fortran.y"
  3163. {init_io_ctrl_list();;
  3164.     break;}
  3165. case 297:
  3166. #line 1837 "fortran.y"
  3167. {complex_const_allowed = TRUE;;
  3168.     break;}
  3169. case 303:
  3170. #line 1850 "fortran.y"
  3171. {init_io_ctrl_list();;
  3172.     break;}
  3173. case 304:
  3174. #line 1854 "fortran.y"
  3175. {
  3176.                 if(f77_accept_type)
  3177.                 nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  3178.             ;
  3179.     break;}
  3180. case 305:
  3181. #line 1859 "fortran.y"
  3182. {
  3183.                 if(f77_accept_type)
  3184.                 nonstandard(yyvsp[-4].line_num,yyvsp[-4].col_num);
  3185.             ;
  3186.     break;}
  3187. case 307:
  3188. #line 1868 "fortran.y"
  3189. {complex_const_allowed = TRUE;;
  3190.     break;}
  3191. case 308:
  3192. #line 1869 "fortran.y"
  3193. {complex_const_allowed = FALSE;;
  3194.     break;}
  3195. case 310:
  3196. #line 1873 "fortran.y"
  3197. {
  3198.                 if(f77_accept_type)
  3199.                 nonstandard(yyvsp[-2].line_num,yyvsp[-2].col_num);
  3200.             ;
  3201.     break;}
  3202. case 311:
  3203. #line 1878 "fortran.y"
  3204. {complex_const_allowed = TRUE;;
  3205.     break;}
  3206. case 312:
  3207. #line 1879 "fortran.y"
  3208. {complex_const_allowed = FALSE;;
  3209.     break;}
  3210. case 313:
  3211. #line 1880 "fortran.y"
  3212. {
  3213.                 if(f77_accept_type)
  3214.                 nonstandard(yyvsp[-6].line_num,yyvsp[-6].col_num);
  3215.             ;
  3216.     break;}
  3217. case 314:
  3218. #line 1888 "fortran.y"
  3219. {
  3220.                 ++control_item_count;
  3221.             ;
  3222.     break;}
  3223. case 315:
  3224. #line 1892 "fortran.y"
  3225. {
  3226.                 ++control_item_count;
  3227.                 if(! io_warning_given) {
  3228.                   if( io_internal_file ) {
  3229.                 if( (curr_stmt_class == tok_WRITE ||
  3230.                      curr_stmt_class == tok_READ) &&
  3231.                     io_list_directed ) {
  3232.                   if(f77_internal_list_io) {
  3233.                     nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  3234.         msg_tail(": internal file cannot be used with list-directed I/O");
  3235.                   }
  3236.                   io_warning_given = TRUE;
  3237.                 }
  3238.                   }
  3239.                 }
  3240.             ;
  3241.     break;}
  3242. case 316:
  3243. #line 1914 "fortran.y"
  3244. {
  3245.                 use_io_keyword(&(yyvsp[-2]),&(yyvsp[0]),curr_stmt_class);
  3246.             ;
  3247.     break;}
  3248. case 317:
  3249. #line 1918 "fortran.y"
  3250. {
  3251.                 if( yyvsp[0].class == '*' ) {
  3252.                   if(control_item_count == 1) /* format id */
  3253.                 {
  3254.                   io_list_directed = TRUE;
  3255.                 }
  3256.                 }
  3257.                 else if( is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3258.  
  3259.                     /* Handle special cases */
  3260.                 if(control_item_count == 0 &&
  3261.                  datatype_of(yyvsp[0].TOK_type) == type_STRING) {
  3262.                     /* unit id=char variable is
  3263.                        an internal file.  I/O goes in
  3264.                        and out of the variable. */
  3265.                   io_internal_file = TRUE;
  3266.                   if(curr_stmt_class == tok_WRITE) {
  3267.                     use_lvalue(&(yyvsp[0]));
  3268.                   }
  3269.                 }
  3270.  
  3271.                     /* format id=namelist means
  3272.                        I/O with variables of namelist. */
  3273.                 else if( control_item_count == 1 &&
  3274.                  datatype_of(yyvsp[0].TOK_type) == type_NAMELIST) {
  3275.                     ref_namelist(&(yyvsp[0]),curr_stmt_class);
  3276.                 }
  3277.  
  3278.                     /* Handle use of variable */
  3279.                 use_variable(&(yyvsp[0]));
  3280.                 }
  3281.             ;
  3282.     break;}
  3283. case 318:
  3284. #line 1958 "fortran.y"
  3285. {
  3286.                 if( yyvsp[0].class != '*'
  3287.                    && is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3288.                 use_variable(&(yyvsp[0]));
  3289.                 }
  3290.                 ++control_item_count;
  3291.             ;
  3292.     break;}
  3293. case 319:
  3294. #line 1966 "fortran.y"
  3295. {
  3296.                 use_io_keyword(&(yyvsp[-2]),&(yyvsp[0]),curr_stmt_class);
  3297.                 ++control_item_count;
  3298.             ;
  3299.     break;}
  3300. case 320:
  3301. #line 1971 "fortran.y"
  3302. {
  3303.                 ++control_item_count;
  3304.             ;
  3305.     break;}
  3306. case 321:
  3307. #line 1977 "fortran.y"
  3308. {
  3309.                 use_io_keyword(&(yyvsp[-2]),&(yyvsp[0]),curr_stmt_class);
  3310.             ;
  3311.     break;}
  3312. case 322:
  3313. #line 1981 "fortran.y"
  3314. {
  3315.                 use_special_open_keywd(&(yyvsp[0]));
  3316.             ;
  3317.     break;}
  3318. case 325:
  3319. #line 1992 "fortran.y"
  3320. {
  3321.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3322.                 if( curr_stmt_class == tok_READ ||
  3323.                     curr_stmt_class == tok_ACCEPT )
  3324.                     use_lvalue(&(yyvsp[0]));
  3325.                 else
  3326.                     use_variable(&(yyvsp[0]));
  3327.                 }
  3328.             ;
  3329.     break;}
  3330. case 327:
  3331. #line 2006 "fortran.y"
  3332. {
  3333.               if( ! is_true(LVALUE_EXPR,yyvsp[-3].TOK_flags) ) {
  3334.                 syntax_error(yyvsp[-3].line_num,yyvsp[-3].col_num,
  3335.                      "index is not assignable");
  3336.               }
  3337.               else {
  3338.                  use_implied_do_index(&(yyvsp[-3]));
  3339.               }
  3340.             ;
  3341.     break;}
  3342. case 328:
  3343. #line 2018 "fortran.y"
  3344. {init_io_ctrl_list();;
  3345.     break;}
  3346. case 330:
  3347. #line 2023 "fortran.y"
  3348. {init_io_ctrl_list();;
  3349.     break;}
  3350. case 332:
  3351. #line 2028 "fortran.y"
  3352. {init_io_ctrl_list();;
  3353.     break;}
  3354. case 334:
  3355. #line 2034 "fortran.y"
  3356. {
  3357.                 if( yyvsp[-1].class != '*'
  3358.                    && is_true(ID_EXPR,yyvsp[-1].TOK_flags)){
  3359.                 use_variable(&(yyvsp[-1]));
  3360.                 }
  3361.             ;
  3362.     break;}
  3363. case 336:
  3364. #line 2042 "fortran.y"
  3365. {init_io_ctrl_list();;
  3366.     break;}
  3367. case 337:
  3368. #line 2047 "fortran.y"
  3369. {
  3370.                 if( yyvsp[-1].class != '*'
  3371.                    && is_true(ID_EXPR,yyvsp[-1].TOK_flags)){
  3372.                 use_variable(&(yyvsp[-1]));
  3373.                 }
  3374.             ;
  3375.     break;}
  3376. case 339:
  3377. #line 2055 "fortran.y"
  3378. {init_io_ctrl_list();;
  3379.     break;}
  3380. case 340:
  3381. #line 2056 "fortran.y"
  3382. {init_io_ctrl_list();;
  3383.     break;}
  3384. case 341:
  3385. #line 2061 "fortran.y"
  3386. {
  3387.                 if( yyvsp[-1].class != '*'
  3388.                    && is_true(ID_EXPR,yyvsp[-1].TOK_flags)){
  3389.                 use_variable(&(yyvsp[-1]));
  3390.                 }
  3391.             ;
  3392.     break;}
  3393. case 343:
  3394. #line 2069 "fortran.y"
  3395. {init_io_ctrl_list();;
  3396.     break;}
  3397. case 346:
  3398. #line 2083 "fortran.y"
  3399. {
  3400.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3401.                  use_variable(&(yyvsp[0]));
  3402.                 }
  3403.             ;
  3404.     break;}
  3405. case 348:
  3406. #line 2092 "fortran.y"
  3407. {inside_format=TRUE;;
  3408.     break;}
  3409. case 349:
  3410. #line 2093 "fortran.y"
  3411. {
  3412.               inside_format=FALSE;
  3413.             ;
  3414.     break;}
  3415. case 368:
  3416. #line 2129 "fortran.y"
  3417. {
  3418.               if(f77_format_dollarsigns)
  3419.                  nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  3420.             ;
  3421.     break;}
  3422. case 373:
  3423. #line 2144 "fortran.y"
  3424. {inside_format=FALSE;;
  3425.     break;}
  3426. case 374:
  3427. #line 2145 "fortran.y"
  3428. {inside_format=TRUE;;
  3429.     break;}
  3430. case 375:
  3431. #line 2146 "fortran.y"
  3432. {
  3433.               if(f77_variable_format)
  3434.                  nonstandard(yyvsp[-4].line_num,yyvsp[-4].col_num);
  3435.             ;
  3436.     break;}
  3437. case 376:
  3438. #line 2155 "fortran.y"
  3439. {
  3440.               check_stmt_sequence(&(yyvsp[-3]),SEQ_STMT_FUN);
  3441.  
  3442.                 def_stmt_function(&(yyvsp[-3]),&(yyvsp[-1]));
  3443.                     /* make token info */
  3444.                 primary_id_expr(&(yyvsp[-3]),&(yyval));
  3445. #ifdef DEBUG_PARSER
  3446.                 if(debug_parser)
  3447.                   print_exprlist("stmt function",&(yyvsp[-1]));
  3448. #endif
  3449.             ;
  3450.     break;}
  3451. case 377:
  3452. #line 2169 "fortran.y"
  3453. {
  3454.                 yyval.next_token = (Token*)NULL;
  3455.             ;
  3456.     break;}
  3457. case 379:
  3458. #line 2176 "fortran.y"
  3459. {
  3460.                 yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  3461.             ;
  3462.     break;}
  3463. case 380:
  3464. #line 2181 "fortran.y"
  3465. {
  3466.                 yyval.next_token = append_token(yyvsp[-2].next_token,&(yyvsp[0]));
  3467.             ;
  3468.     break;}
  3469. case 382:
  3470. #line 2191 "fortran.y"
  3471. {
  3472.                  call_subr(&(yyvsp[0]),(Token*)NULL);
  3473.                  complex_const_allowed = FALSE;
  3474.             ;
  3475.     break;}
  3476. case 384:
  3477. #line 2197 "fortran.y"
  3478. {
  3479.                  call_subr(&(yyvsp[-2]),(Token*)NULL);
  3480.                  complex_const_allowed = FALSE;
  3481.             ;
  3482.     break;}
  3483. case 386:
  3484. #line 2203 "fortran.y"
  3485. {
  3486.                  call_subr(&(yyvsp[-3]),&(yyvsp[-1]));
  3487. #ifdef DEBUG_PARSER
  3488.                  if(debug_parser)
  3489.                 print_exprlist("call stmt",&(yyvsp[-1]));
  3490. #endif
  3491.                  complex_const_allowed = FALSE;
  3492.             ;
  3493.     break;}
  3494. case 388:
  3495. #line 2214 "fortran.y"
  3496. {
  3497.                  complex_const_allowed = TRUE;
  3498.                  yyval = yyvsp[0];
  3499.             ;
  3500.     break;}
  3501. case 389:
  3502. #line 2220 "fortran.y"
  3503. {
  3504.                 yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  3505.                 yyval.left_token = (Token *)NULL;
  3506.             ;
  3507.     break;}
  3508. case 390:
  3509. #line 2225 "fortran.y"
  3510. {
  3511.                 yyval.next_token = append_token(yyvsp[-2].next_token,&(yyvsp[0]));
  3512.             ;
  3513.     break;}
  3514. case 391:
  3515. #line 2231 "fortran.y"
  3516. {
  3517.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3518.                  use_actual_arg(&(yyvsp[0]));
  3519.                  use_variable(&(yyvsp[0]));
  3520.                 }
  3521.             ;
  3522.     break;}
  3523. case 392:
  3524. #line 2238 "fortran.y"
  3525. {
  3526.               yyval = yyvsp[0];
  3527.               yyval.left_token = (Token *)NULL;
  3528.             ;
  3529.     break;}
  3530. case 393:
  3531. #line 2246 "fortran.y"
  3532. {
  3533.                  do_RETURN(current_module_hash,&(yyvsp[-1]));
  3534.             ;
  3535.     break;}
  3536. case 394:
  3537. #line 2250 "fortran.y"
  3538. {
  3539.                  do_RETURN(current_module_hash,&(yyvsp[-2]));
  3540.             ;
  3541.     break;}
  3542. case 395:
  3543. #line 2257 "fortran.y"
  3544. {
  3545.                    /* restore context */
  3546.                 if(!is_true(COMPLEX_FLAG,yyvsp[-3].TOK_flags))
  3547.                   complex_const_allowed=FALSE;
  3548.                 if(is_true(IN_ASSIGN,yyvsp[-3].TOK_flags))
  3549.                   in_assignment_stmt = TRUE;
  3550.  
  3551.                   /* Change empty arg list to no arg list */
  3552.                 if(yyvsp[-1].next_token == NULL)
  3553.                   call_func(&(yyvsp[-3]),(Token *)NULL);
  3554.                 else
  3555.                   call_func(&(yyvsp[-3]),&(yyvsp[-1]));
  3556.                             /* make token info */
  3557.                 func_ref_expr(&(yyvsp[-3]),&(yyvsp[-1]),&(yyval));
  3558.                 /* Substitute empty token for null arglist */
  3559.                 yyval.left_token = add_tree_node(
  3560.                            &(yyvsp[-2]),&(yyvsp[-3]),
  3561.                            (yyvsp[-1].next_token == NULL?
  3562.                             empty_token(&(yyvsp[-1])) :
  3563.                             yyvsp[-1].next_token) );
  3564. #ifdef DEBUG_PARSER
  3565.                 if(debug_parser)
  3566.                     print_exprlist("function",&(yyvsp[-1]));
  3567. #endif
  3568.             ;
  3569.     break;}
  3570. case 396:
  3571. #line 2285 "fortran.y"
  3572. {
  3573.               if(complex_const_allowed)/* save context */
  3574.                 make_true(COMPLEX_FLAG,yyval.TOK_flags);
  3575.               complex_const_allowed=TRUE;
  3576.               if(in_assignment_stmt)
  3577.                 make_true(IN_ASSIGN,yyval.TOK_flags);
  3578.               in_assignment_stmt = FALSE;
  3579.             ;
  3580.     break;}
  3581. case 397:
  3582. #line 2295 "fortran.y"
  3583. {
  3584.                 yyval.class = 0;
  3585.                 yyval.next_token = (Token *)NULL;
  3586.                 yyval.left_token = (Token *)NULL;
  3587.             ;
  3588.     break;}
  3589. case 399:
  3590. #line 2304 "fortran.y"
  3591. {
  3592.                 yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  3593.                 yyval.left_token = (Token *)NULL;
  3594.             ;
  3595.     break;}
  3596. case 400:
  3597. #line 2309 "fortran.y"
  3598. {
  3599.                 yyval.next_token = append_token(yyvsp[-2].next_token,&(yyvsp[0]));
  3600.             ;
  3601.     break;}
  3602. case 401:
  3603. #line 2318 "fortran.y"
  3604. {
  3605.               int t=datatype_of(yyvsp[0].TOK_type);
  3606.               if( t != type_ERROR){
  3607.                 if( ! is_const_type(t) ) {
  3608.                   syntax_error(yyvsp[0].line_num,yyvsp[0].col_num,
  3609.               "arithmetic, char, or logical expression expected");
  3610.                 }
  3611.                 else {
  3612.                   if( !is_true(PARAMETER_EXPR,yyvsp[0].TOK_flags) ) {
  3613.                 syntax_error(yyvsp[0].line_num,yyvsp[0].col_num,
  3614.                        "constant expression expected");
  3615.                   }
  3616.                 /* Here we allow, with some warnings, expr
  3617.                    containing intrins func or **REAL in
  3618.                    PARAMETER defn. */
  3619.                   else if( !is_true(CONST_EXPR,yyvsp[0].TOK_flags) ) {
  3620.                 if(f77_param_intrinsic) {
  3621.                   nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  3622.                   msg_tail(
  3623.              "intrinsic function or **REAL in PARAMETER defn");
  3624.                 }
  3625.                   }
  3626.                 }
  3627.               }
  3628.             ;
  3629.     break;}
  3630. case 402:
  3631. #line 2347 "fortran.y"
  3632. {
  3633.                 /* Fix it up in case it is used in expr list */
  3634.               yyval.next_token = (Token *) NULL;
  3635. #ifdef DEBUG_PARSER
  3636.                 if(debug_parser) {
  3637.                 (void)fprintf(list_fd,
  3638.                     "\nexpr: class=0x%x subclass=0x%x",
  3639.                     yyvsp[0].class,
  3640.                     yyvsp[0].subclass);
  3641.                 }
  3642. #endif
  3643.             ;
  3644.     break;}
  3645. case 404:
  3646. #line 2364 "fortran.y"
  3647. {
  3648.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3649.                      ,&(yyval));
  3650.             ;
  3651.     break;}
  3652. case 405:
  3653. #line 2369 "fortran.y"
  3654. {
  3655.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3656.                      ,&(yyval));
  3657.             ;
  3658.     break;}
  3659. case 407:
  3660. #line 2378 "fortran.y"
  3661. {
  3662.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3663.                      ,&(yyval));
  3664.             ;
  3665.     break;}
  3666. case 409:
  3667. #line 2387 "fortran.y"
  3668. {
  3669.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3670.                      ,&(yyval));
  3671.             ;
  3672.     break;}
  3673. case 411:
  3674. #line 2396 "fortran.y"
  3675. {
  3676.                 do_unexpr(&(yyvsp[-1]),&(yyvsp[0]),&(yyval));
  3677.             ;
  3678.     break;}
  3679. case 413:
  3680. #line 2404 "fortran.y"
  3681. {
  3682.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3683.                      ,&(yyval));
  3684.             ;
  3685.     break;}
  3686. case 415:
  3687. #line 2414 "fortran.y"
  3688. {
  3689.                 do_unexpr(&(yyvsp[-1]),&(yyvsp[0]),&(yyval));
  3690.             ;
  3691.     break;}
  3692. case 416:
  3693. #line 2418 "fortran.y"
  3694. {
  3695.                 do_unexpr(&(yyvsp[-1]),&(yyvsp[0]),&(yyval));
  3696.             ;
  3697.     break;}
  3698. case 417:
  3699. #line 2422 "fortran.y"
  3700. {
  3701.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3702.                      ,&(yyval));
  3703.             ;
  3704.     break;}
  3705. case 418:
  3706. #line 2427 "fortran.y"
  3707. {
  3708.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3709.                      ,&(yyval));
  3710.             ;
  3711.     break;}
  3712. case 420:
  3713. #line 2436 "fortran.y"
  3714. {
  3715.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3716.                      ,&(yyval));
  3717.                 if(div_check &&
  3718.                    !is_true(CONST_EXPR,yyvsp[0].TOK_flags)){
  3719.                 warning(yyvsp[-1].line_num,yyvsp[-1].col_num,
  3720.                     "Possible division by zero");
  3721.                 }
  3722.             ;
  3723.     break;}
  3724. case 421:
  3725. #line 2446 "fortran.y"
  3726. {
  3727.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3728.                      ,&(yyval));
  3729.             ;
  3730.     break;}
  3731. case 423:
  3732. #line 2455 "fortran.y"
  3733. {
  3734.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3735.                      ,&(yyval));
  3736.             ;
  3737.     break;}
  3738. case 425:
  3739. #line 2464 "fortran.y"
  3740. {
  3741.                 do_binexpr(&(yyvsp[-2]),&(yyvsp[-1]),&(yyvsp[0])
  3742.                      ,&(yyval));
  3743.             ;
  3744.     break;}
  3745. case 430:
  3746. #line 2479 "fortran.y"
  3747. {
  3748.                 yyval.TOK_flags = 0;
  3749.                 yyval.left_token = (Token *)NULL;
  3750.                 make_true(CONST_EXPR,yyval.TOK_flags);
  3751.                 make_true(PARAMETER_EXPR,yyval.TOK_flags);
  3752.                 make_true(LIT_CONST,yyval.TOK_flags);
  3753.                 make_true(EVALUATED_EXPR,yyval.TOK_flags);
  3754.             ;
  3755.     break;}
  3756. case 431:
  3757. #line 2488 "fortran.y"
  3758. {
  3759.                 yyval = yyvsp[-1];
  3760.                 /* (identifier) becomes a non-identifier */
  3761.                 if(is_true(LVALUE_EXPR,yyvsp[-1].TOK_flags)) {
  3762.                 if(pretty_parens) {
  3763.                   ugly_code(yyvsp[-1].line_num,yyvsp[-1].col_num,
  3764.                       "Extraneous parentheses");
  3765.                 }
  3766.                 use_variable(&(yyvsp[-1]));
  3767.                 make_false(LVALUE_EXPR,yyval.TOK_flags);
  3768.                 make_false(ARRAY_ID_EXPR,yyval.TOK_flags);
  3769.                 make_false(ARRAY_ELEMENT_EXPR,yyval.TOK_flags);
  3770.                 make_false(ID_EXPR,yyval.TOK_flags);
  3771.                 }
  3772.                 /* (expr) becomes tree node with root = '(' */
  3773.                 yyval.left_token = add_tree_node(&(yyvsp[-2]),&(yyvsp[-1]),
  3774.                               (Token*)NULL);
  3775.             ;
  3776.     break;}
  3777. case 433:
  3778. #line 2513 "fortran.y"
  3779. {
  3780.                 yyval.TOK_type = type_byte(class_VAR,type_STRING);
  3781.                 /* (size is set in get_string) */
  3782.             ;
  3783.     break;}
  3784. case 434:
  3785. #line 2518 "fortran.y"
  3786. {
  3787.                 yyval.TOK_type = type_byte(class_VAR,type_HOLLERITH);
  3788.                 /* (size is set in get_hollerith) */
  3789.                 if(port_hollerith) {
  3790.                 warning(yyvsp[0].line_num,yyvsp[0].col_num,
  3791.                 "hollerith constant may not be portable");
  3792.                 }
  3793.             ;
  3794.     break;}
  3795. case 435:
  3796. #line 2527 "fortran.y"
  3797. {
  3798.                 yyval.TOK_type = type_byte(class_VAR,type_LOGICAL);
  3799.                 yyval.size = size_DEFAULT;
  3800.             ;
  3801.     break;}
  3802. case 436:
  3803. #line 2534 "fortran.y"
  3804. {
  3805.                 yyval.TOK_type = type_byte(class_VAR,type_INTEGER);
  3806.                 yyval.size = size_DEFAULT;
  3807.             ;
  3808.     break;}
  3809. case 437:
  3810. #line 2539 "fortran.y"
  3811. {
  3812.                 yyval.TOK_type = type_byte(class_VAR,type_REAL);
  3813.                 yyval.size = size_DEFAULT;
  3814.             ;
  3815.     break;}
  3816. case 438:
  3817. #line 2544 "fortran.y"
  3818. {
  3819.                 yyval.TOK_type = type_byte(class_VAR,type_DP);
  3820.                 yyval.size = size_DEFAULT;
  3821.             ;
  3822.     break;}
  3823. case 439:
  3824. #line 2549 "fortran.y"
  3825. {
  3826.                 yyval.TOK_type = type_byte(class_VAR,type_QUAD);
  3827.                 yyval.size = size_QUAD;
  3828.                             if(f77_quad_constants) {
  3829.                               nonstandard(yyvsp[0].line_num,yyvsp[0].col_num);
  3830.                               msg_tail(": quad precision constant");
  3831.                             }
  3832.             ;
  3833.     break;}
  3834. case 440:
  3835. #line 2558 "fortran.y"
  3836. {
  3837.                 yyval.TOK_type = type_byte(class_VAR,type_COMPLEX);
  3838.                 yyval.size = size_DEFAULT;
  3839.             ;
  3840.     break;}
  3841. case 441:
  3842. #line 2563 "fortran.y"
  3843. {
  3844.                 yyval.TOK_type = type_byte(class_VAR,type_DCOMPLEX);
  3845.                 yyval.size = size_DEFAULT;
  3846.             ;
  3847.     break;}
  3848. case 442:
  3849. #line 2571 "fortran.y"
  3850. {
  3851.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3852.                 use_variable(&(yyvsp[0]));
  3853.                 }
  3854.                 if(datatype_of(yyvsp[0].TOK_type) != type_INTEGER) {
  3855.                 syntax_error(
  3856.                     yyvsp[0].line_num,yyvsp[0].col_num,
  3857.                     "expression must be integer type");
  3858.                 }
  3859.             ;
  3860.     break;}
  3861. case 443:
  3862. #line 2585 "fortran.y"
  3863. {
  3864.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3865.                 use_variable(&(yyvsp[0]));
  3866.                 }
  3867.                 {
  3868.                 int t=datatype_of(yyvsp[0].TOK_type);
  3869.                     if(t != type_INTEGER && t != type_REAL
  3870.                     && t != type_DP ) {
  3871.                     syntax_error(
  3872.                       yyvsp[0].line_num,yyvsp[0].col_num,
  3873.         "expression must be integer, real, or double precision type");
  3874.                         }
  3875.                 }
  3876.             ;
  3877.     break;}
  3878. case 444:
  3879. #line 2605 "fortran.y"
  3880. {
  3881.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3882.                 use_variable(&(yyvsp[0]));
  3883.                 }
  3884.                 if( ! is_true(CONST_EXPR,yyvsp[0].TOK_flags) ) {
  3885.                 syntax_error(
  3886.                     yyvsp[0].line_num,yyvsp[0].col_num,
  3887.                     "constant expression expected");
  3888.                 }
  3889.                 else {
  3890.                   if(datatype_of(yyvsp[0].TOK_type) != type_INTEGER){
  3891.                 syntax_error(
  3892.                     yyvsp[0].line_num,yyvsp[0].col_num,
  3893.                     "integer expression expected");
  3894.                   }
  3895.                   else {
  3896.                 yyval.value.integer = int_expr_value(&(yyvsp[0]));
  3897.                   }
  3898.                 }
  3899.             ;
  3900.     break;}
  3901. case 445:
  3902. #line 2629 "fortran.y"
  3903. {
  3904.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3905.                 use_variable(&(yyvsp[0]));
  3906.                 }
  3907.  
  3908.                 if( datatype_of(yyvsp[0].TOK_type) != type_INTEGER ){
  3909.                 syntax_error(
  3910.                     yyvsp[0].line_num,yyvsp[0].col_num,
  3911.                     "integer dimension expected");
  3912.                 yyval.value.integer = 0;
  3913.                 }
  3914.                 else {
  3915.                   if( is_true(EVALUATED_EXPR,yyvsp[0].TOK_flags) )
  3916.                 yyval.value.integer =
  3917.                   int_expr_value(&(yyvsp[0]));
  3918.                   else        /* must be dummy */
  3919.                 yyval.value.integer = 0;
  3920.                 }
  3921.             ;
  3922.     break;}
  3923. case 446:
  3924. #line 2655 "fortran.y"
  3925. {
  3926.                 ref_array(&(yyvsp[-3]),&(yyvsp[-1]));
  3927. #ifdef DEBUG_PARSER
  3928.                 if(debug_parser)
  3929.                     print_exprlist("array lvalue",&(yyvsp[-1]));
  3930. #endif
  3931.                     /* array now becomes scalar */
  3932.                 make_false(ARRAY_ID_EXPR,yyval.TOK_flags);
  3933.                 make_true(ARRAY_ELEMENT_EXPR,yyval.TOK_flags);
  3934.                 yyval.left_token = add_tree_node(
  3935.                            &(yyvsp[-2]),&(yyvsp[-3]),yyvsp[-1].next_token);
  3936.                 yyval.next_token = (Token *) NULL;
  3937.             ;
  3938.     break;}
  3939. case 447:
  3940. #line 2671 "fortran.y"
  3941. {
  3942.                 ref_array(&(yyvsp[-3]),&(yyvsp[-1]));
  3943. #ifdef DEBUG_PARSER
  3944.                 if(debug_parser)
  3945.                     print_exprlist("array",&(yyvsp[-1]));
  3946. #endif
  3947.                     /* array now becomes scalar */
  3948.                 make_false(ARRAY_ID_EXPR,yyval.TOK_flags);
  3949.                 make_true(ARRAY_ELEMENT_EXPR,yyval.TOK_flags);
  3950.                 yyval.left_token = add_tree_node(
  3951.                            &(yyvsp[-2]),&(yyvsp[-3]),yyvsp[-1].next_token);
  3952.                 yyval.next_token = (Token *) NULL;
  3953.             ;
  3954.     break;}
  3955. case 448:
  3956. #line 2687 "fortran.y"
  3957. {
  3958.                 yyval.next_token = append_token((Token*)NULL,&(yyvsp[0]));
  3959.             ;
  3960.     break;}
  3961. case 449:
  3962. #line 2691 "fortran.y"
  3963. {
  3964.                 yyval.next_token = append_token(yyvsp[-2].next_token,&(yyvsp[0]));
  3965.             ;
  3966.     break;}
  3967. case 450:
  3968. #line 2697 "fortran.y"
  3969. {
  3970.                 if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  3971.                  use_variable(&(yyvsp[0]));
  3972.                 }
  3973.                 /* check subscript exprs for integer type */
  3974.                 if(datatype_of(yyvsp[0].TOK_type) != type_INTEGER)
  3975.                   if(trunc_real_subscript)
  3976.                      warning(yyvsp[0].line_num,yyvsp[0].col_num,
  3977.                      "subscript is not integer");
  3978.             ;
  3979.     break;}
  3980. case 451:
  3981. #line 2711 "fortran.y"
  3982. {
  3983.                    /* restore status of complex flag */
  3984.                 if(!is_true(COMPLEX_FLAG,yyvsp[-1].TOK_flags))
  3985.                   complex_const_allowed=FALSE;
  3986.                 /* set flag to keep more than just id for
  3987.                    arg list text */
  3988.                 if(is_true(ID_EXPR,yyvsp[-1].TOK_flags))
  3989.                    make_true(ARRAY_ELEMENT_EXPR,yyval.TOK_flags);
  3990.                 yyval.size=substring_size(&(yyvsp[-1]),&(yyvsp[0]));
  3991.                 yyval.left_token = add_tree_node(
  3992.                            &save_token,&(yyvsp[-1]),&(yyvsp[0]));
  3993.                 yyval.next_token = (Token *) NULL;
  3994.             ;
  3995.     break;}
  3996. case 452:
  3997. #line 2726 "fortran.y"
  3998. {
  3999.                 yyval.size=substring_size(&(yyvsp[-1]),&(yyvsp[0]));
  4000.                 yyval.left_token = add_tree_node(
  4001.                            &save_token,&(yyvsp[-1]),&(yyvsp[0]));
  4002.                 yyval.next_token = (Token *) NULL;
  4003.             ;
  4004.     break;}
  4005. case 453:
  4006. #line 2734 "fortran.y"
  4007. {
  4008.                 yyval.size=substring_size(&(yyvsp[-1]),&(yyvsp[0]));
  4009.                 yyval.left_token = add_tree_node(
  4010.                            &save_token,&(yyvsp[-1]),&(yyvsp[0]));
  4011.                 yyval.next_token = (Token *) NULL;
  4012.             ;
  4013.     break;}
  4014. case 454:
  4015. #line 2743 "fortran.y"
  4016. {
  4017.                 yyval.size=substring_size(&(yyvsp[-1]),&(yyvsp[0]));
  4018.             ;
  4019.     break;}
  4020. case 455:
  4021. #line 2747 "fortran.y"
  4022. {
  4023.                 yyval.size=substring_size(&(yyvsp[-1]),&(yyvsp[0]));
  4024.             ;
  4025.     break;}
  4026. case 456:
  4027. #line 2756 "fortran.y"
  4028. {
  4029.                 yyval.TOK_start=1;
  4030.                 yyval.TOK_end=0; /* 0 means LEN */
  4031.  
  4032.                 save_token = yyvsp[-2]; /* Save the paren for tree node */
  4033.                 yyval.left_token =
  4034.                   add_tree_node(&(yyvsp[-1]),
  4035.                      empty_token(&(yyvsp[-2])),empty_token(&(yyvsp[0])));
  4036.                 /* Nullify next_token so it looks like
  4037.                    a tokenlist */
  4038.                 yyval.next_token = (Token *)NULL;
  4039.             ;
  4040.     break;}
  4041. case 457:
  4042. #line 2770 "fortran.y"
  4043. {
  4044.                 yyval.TOK_start=yyvsp[-2].value.integer;
  4045.                 yyval.TOK_end=0; /* 0 means LEN */
  4046.  
  4047.                 save_token = yyvsp[-3]; /* Save the paren for tree node */
  4048.                 yyval.left_token =
  4049.                   add_tree_node(&(yyvsp[-1]),&(yyvsp[-2]),empty_token(&(yyvsp[0])));
  4050.                 yyval.next_token = (Token *)NULL;
  4051.             ;
  4052.     break;}
  4053. case 458:
  4054. #line 2780 "fortran.y"
  4055. {
  4056.                 yyval.TOK_start=1;
  4057.                 yyval.TOK_end=yyvsp[-1].value.integer;
  4058.  
  4059.                 save_token = yyvsp[-3]; /* Save the paren for tree node */
  4060.                 yyval.left_token =
  4061.                   add_tree_node(&(yyvsp[-2]),empty_token(&(yyvsp[-3])),&(yyvsp[-1]));
  4062.                 yyval.next_token = (Token *)NULL;
  4063.             ;
  4064.     break;}
  4065. case 459:
  4066. #line 2790 "fortran.y"
  4067. {
  4068.                 yyval.TOK_start=yyvsp[-3].value.integer;
  4069.                 yyval.TOK_end=yyvsp[-1].value.integer;
  4070.  
  4071.                 save_token = yyvsp[-4]; /* Save the paren for tree node */
  4072.                 yyval.left_token =
  4073.                   add_tree_node(&(yyvsp[-2]),&(yyvsp[-3]),&(yyvsp[-1]));
  4074.                 yyval.next_token = (Token *)NULL;
  4075.             ;
  4076.     break;}
  4077. case 460:
  4078. #line 2802 "fortran.y"
  4079. {
  4080.               if(is_true(ID_EXPR,yyvsp[0].TOK_flags)){
  4081.                 use_variable(&(yyvsp[0]));
  4082.               }
  4083.                 /* check validity and replace nonconst
  4084.                    value by size_UNKNOWN. */
  4085.               if(is_true(CONST_EXPR,yyvsp[0].TOK_flags)) {
  4086.                 if( (yyval.value.integer=int_expr_value(&(yyvsp[0]))) < 1) {
  4087.                   syntax_error(yyvsp[0].line_num,yyvsp[0].col_num,
  4088.                        "invalid substring index");
  4089.                 }
  4090.               }
  4091.               else  /* (no longer need ID hash index) */
  4092.                 yyval.value.integer=size_UNKNOWN;
  4093.             ;
  4094.     break;}
  4095. case 463:
  4096. #line 2827 "fortran.y"
  4097. {
  4098.                 ref_variable(&(yyvsp[0]));
  4099.                 primary_id_expr(&(yyvsp[0]),&(yyval));
  4100.             ;
  4101.     break;}
  4102. case 464:
  4103. #line 2834 "fortran.y"
  4104. {
  4105.                 ref_variable(&(yyvsp[0]));
  4106.                 primary_id_expr(&(yyvsp[0]),&(yyval));
  4107.             ;
  4108.     break;}
  4109. case 473:
  4110. #line 2860 "fortran.y"
  4111. {
  4112.               if(yyvsp[0].value.integer == 0) {
  4113.                 if(misc_warn) {
  4114.                   warning(yyvsp[0].line_num,yyvsp[0].col_num,
  4115.                     "nonzero integer expected");
  4116.                   msg_tail(": substituting 1");
  4117.                 }
  4118.                 yyval.value.integer = 1;
  4119.               }
  4120.               yyval.left_token = (Token *)NULL;
  4121.             ;
  4122.     break;}
  4123. case 474:
  4124. #line 2878 "fortran.y"
  4125. {
  4126.                 integer_context=TRUE;
  4127.             ;
  4128.     break;}
  4129. case 475:
  4130. #line 2885 "fortran.y"
  4131. {
  4132.                 integer_context=FALSE;
  4133.                 yyval.TOK_type = type_byte(class_LABEL,type_LABEL);
  4134.                 yyval.size = size_DEFAULT;
  4135.                 yyval.TOK_flags = 0;
  4136.             ;
  4137.     break;}
  4138. }
  4139.    /* the action file gets copied in in place of this dollarsign */
  4140. #line 465 "/usr/lib/bison.simple"
  4141.  
  4142.   yyvsp -= yylen;
  4143.   yyssp -= yylen;
  4144. #ifdef YYLSP_NEEDED
  4145.   yylsp -= yylen;
  4146. #endif
  4147.  
  4148. #if YYDEBUG != 0
  4149.   if (yydebug)
  4150.     {
  4151.       short *ssp1 = yyss - 1;
  4152.       fprintf (stderr, "state stack now");
  4153.       while (ssp1 != yyssp)
  4154.     fprintf (stderr, " %d", *++ssp1);
  4155.       fprintf (stderr, "\n");
  4156.     }
  4157. #endif
  4158.  
  4159.   *++yyvsp = yyval;
  4160.  
  4161. #ifdef YYLSP_NEEDED
  4162.   yylsp++;
  4163.   if (yylen == 0)
  4164.     {
  4165.       yylsp->first_line = yylloc.first_line;
  4166.       yylsp->first_column = yylloc.first_column;
  4167.       yylsp->last_line = (yylsp-1)->last_line;
  4168.       yylsp->last_column = (yylsp-1)->last_column;
  4169.       yylsp->text = 0;
  4170.     }
  4171.   else
  4172.     {
  4173.       yylsp->last_line = (yylsp+yylen-1)->last_line;
  4174.       yylsp->last_column = (yylsp+yylen-1)->last_column;
  4175.     }
  4176. #endif
  4177.  
  4178.   /* Now "shift" the result of the reduction.
  4179.      Determine what state that goes to,
  4180.      based on the state we popped back to
  4181.      and the rule number reduced by.  */
  4182.  
  4183.   yyn = yyr1[yyn];
  4184.  
  4185.   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  4186.   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
  4187.     yystate = yytable[yystate];
  4188.   else
  4189.     yystate = yydefgoto[yyn - YYNTBASE];
  4190.  
  4191.   goto yynewstate;
  4192.  
  4193. yyerrlab:   /* here on detecting error */
  4194.  
  4195.   if (! yyerrstatus)
  4196.     /* If not already recovering from an error, report this error.  */
  4197.     {
  4198.       ++yynerrs;
  4199.  
  4200. #ifdef YYERROR_VERBOSE
  4201.       yyn = yypact[yystate];
  4202.  
  4203.       if (yyn > YYFLAG && yyn < YYLAST)
  4204.     {
  4205.       int size = 0;
  4206.       char *msg;
  4207.       int x, count;
  4208.  
  4209.       count = 0;
  4210.       /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
  4211.       for (x = (yyn < 0 ? -yyn : 0);
  4212.            x < (sizeof(yytname) / sizeof(char *)); x++)
  4213.         if (yycheck[x + yyn] == x)
  4214.           size += strlen(yytname[x]) + 15, count++;
  4215.       msg = (char *) malloc(size + 15);
  4216.       if (msg != 0)
  4217.         {
  4218.           strcpy(msg, "parse error");
  4219.  
  4220.           if (count < 5)
  4221.         {
  4222.           count = 0;
  4223.           for (x = (yyn < 0 ? -yyn : 0);
  4224.                x < (sizeof(yytname) / sizeof(char *)); x++)
  4225.             if (yycheck[x + yyn] == x)
  4226.               {
  4227.             strcat(msg, count == 0 ? ", expecting `" : " or `");
  4228.             strcat(msg, yytname[x]);
  4229.             strcat(msg, "'");
  4230.             count++;
  4231.               }
  4232.         }
  4233.           yyerror(msg);
  4234.           free(msg);
  4235.         }
  4236.       else
  4237.         yyerror ("parse error; also virtual memory exceeded");
  4238.     }
  4239.       else
  4240. #endif /* YYERROR_VERBOSE */
  4241.     yyerror("parse error");
  4242.     }
  4243.  
  4244.   goto yyerrlab1;
  4245. yyerrlab1:   /* here on error raised explicitly by an action */
  4246.  
  4247.   if (yyerrstatus == 3)
  4248.     {
  4249.       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
  4250.  
  4251.       /* return failure if at end of input */
  4252.       if (yychar == YYEOF)
  4253.     YYABORT;
  4254.  
  4255. #if YYDEBUG != 0
  4256.       if (yydebug)
  4257.     fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
  4258. #endif
  4259.  
  4260.       yychar = YYEMPTY;
  4261.     }
  4262.  
  4263.   /* Else will try to reuse lookahead token
  4264.      after shifting the error token.  */
  4265.  
  4266.   yyerrstatus = 3;        /* Each real token shifted decrements this */
  4267.  
  4268.   goto yyerrhandle;
  4269.  
  4270. yyerrdefault:  /* current state does not do anything special for the error token. */
  4271.  
  4272. #if 0
  4273.   /* This is wrong; only states that explicitly want error tokens
  4274.      should shift them.  */
  4275.   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  4276.   if (yyn) goto yydefault;
  4277. #endif
  4278.  
  4279. yyerrpop:   /* pop the current state because it cannot handle the error token */
  4280.  
  4281.   if (yyssp == yyss) YYABORT;
  4282.   yyvsp--;
  4283.   yystate = *--yyssp;
  4284. #ifdef YYLSP_NEEDED
  4285.   yylsp--;
  4286. #endif
  4287.  
  4288. #if YYDEBUG != 0
  4289.   if (yydebug)
  4290.     {
  4291.       short *ssp1 = yyss - 1;
  4292.       fprintf (stderr, "Error: state stack now");
  4293.       while (ssp1 != yyssp)
  4294.     fprintf (stderr, " %d", *++ssp1);
  4295.       fprintf (stderr, "\n");
  4296.     }
  4297. #endif
  4298.  
  4299. yyerrhandle:
  4300.  
  4301.   yyn = yypact[yystate];
  4302.   if (yyn == YYFLAG)
  4303.     goto yyerrdefault;
  4304.  
  4305.   yyn += YYTERROR;
  4306.   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
  4307.     goto yyerrdefault;
  4308.  
  4309.   yyn = yytable[yyn];
  4310.   if (yyn < 0)
  4311.     {
  4312.       if (yyn == YYFLAG)
  4313.     goto yyerrpop;
  4314.       yyn = -yyn;
  4315.       goto yyreduce;
  4316.     }
  4317.   else if (yyn == 0)
  4318.     goto yyerrpop;
  4319.  
  4320.   if (yyn == YYFINAL)
  4321.     YYACCEPT;
  4322.  
  4323. #if YYDEBUG != 0
  4324.   if (yydebug)
  4325.     fprintf(stderr, "Shifting error token, ");
  4326. #endif
  4327.  
  4328.   *++yyvsp = yylval;
  4329. #ifdef YYLSP_NEEDED
  4330.   *++yylsp = yylloc;
  4331. #endif
  4332.  
  4333.   yystate = yyn;
  4334.   goto yynewstate;
  4335. }
  4336. #line 2895 "fortran.y"
  4337.  
  4338.  
  4339. void
  4340. init_parser(VOID)            /* Initialize various flags & counters */
  4341. {
  4342.     initial_flag = TRUE;    /* set flag for keyword test */
  4343.     implicit_flag=FALSE;    /* clear flags for IMPLICIT stmt */
  4344.     implicit_letter_flag = FALSE;
  4345.     implicit_type_given = FALSE;
  4346.     implicit_none = FALSE;
  4347.     global_save = FALSE;
  4348.     prev_token_class = EOS;
  4349.     complex_const_allowed = FALSE;
  4350.     stmt_sequence_no = 0;
  4351.     true_prev_stmt_line_num = 0;
  4352. }
  4353.  
  4354.                 /* Handle unary expressions: link
  4355.                    into a tree and propagate type.
  4356.                  */
  4357. PRIVATE void
  4358. #if HAVE_STDC
  4359. do_unexpr(Token *op, Token *expr, Token *result)
  4360. #else /* K&R style */
  4361. do_unexpr(op,expr,result)
  4362.      Token *op,*expr,*result;
  4363. #endif /* HAVE_STDC */
  4364. {
  4365.   unexpr_type(op,expr,result);
  4366.  
  4367.   result->left_token = add_tree_node(op, expr, (Token*)NULL);
  4368. }
  4369.                 /* Handle binary expressions: link
  4370.                    into a tree and propagate type.
  4371.                  */
  4372. PRIVATE void
  4373. #if HAVE_STDC
  4374. do_binexpr(Token *l_expr, Token *op, Token *r_expr, Token *result)
  4375. #else /* K&R style */
  4376. do_binexpr(l_expr,op,r_expr,result)
  4377.      Token *l_expr,*op,*r_expr,*result;
  4378. #endif /* HAVE_STDC */
  4379. {
  4380.   binexpr_type(l_expr,op,r_expr,result); /* Propagate the type */
  4381.  
  4382.   result->left_token = add_tree_node(op, l_expr, r_expr);
  4383. }
  4384.  
  4385.  
  4386.             /* Changes a token to empty and replaces
  4387.                src_text by null string, value by 0.  Other
  4388.                info (line, col, etc.)  unchanged. */
  4389.  
  4390. PRIVATE Token *
  4391. #if HAVE_STDC
  4392. empty_token(Token *t)
  4393. #else /* K&R style */
  4394. empty_token(t)
  4395.      Token *t;
  4396. #endif /* HAVE_STDC */
  4397. {
  4398. #ifdef DEBUG_EMPTY_TOKEN
  4399.   static char *nullstring="(empty)"; /* for debugging.  */
  4400. #else
  4401.   static char *nullstring=""; /* for operation.  */
  4402. #endif
  4403.   t->class = tok_empty;
  4404.   t->subclass = 0;
  4405.   t->value.integer = 0;
  4406.   t->left_token = (Token *) NULL;
  4407.   t->src_text = nullstring;
  4408.  
  4409.   return t;
  4410. }
  4411.  
  4412.         /* Propagate non-integer type if any of DO loop
  4413.            bounds are non-integer. */
  4414. PRIVATE int
  4415. #if HAVE_STDC
  4416. do_bounds_type(Token *t1, Token *t2, Token *t3)
  4417. #else /* K&R style */
  4418. do_bounds_type(t1,t2,t3)
  4419.      Token *t1, *t2, *t3;
  4420. #endif /* HAVE_STDC */
  4421. {
  4422.   int result_type;
  4423.        if(datatype_of(t1->TOK_type) != type_INTEGER)result_type = t1->TOK_type;
  4424.   else if(datatype_of(t2->TOK_type) != type_INTEGER)result_type = t2->TOK_type;
  4425.   else if(datatype_of(t3->TOK_type) != type_INTEGER)result_type = t3->TOK_type;
  4426.   else result_type = t1->TOK_type;
  4427.   return result_type;
  4428. }
  4429.  
  4430.  
  4431. /* Debugging routine: prints the expression list of various productions */
  4432. #ifdef DEBUG_PARSER
  4433. PRIVATE void
  4434. print_exprlist(s,t)
  4435.     char *s;
  4436.     Token *t;
  4437. {
  4438.  
  4439.     (void)fprintf(list_fd,"\n%s arglist: ",s);
  4440.  
  4441.     if(t == NULL)
  4442.         (void)fprintf(list_fd,"(empty)");
  4443.     else {
  4444.           while( (t=t->next_token) != NULL) {
  4445.           fprintf(list_fd,"%s ",type_name[datatype_of(t->TOK_type)]);
  4446.           if( is_true(ID_EXPR,t->TOK_flags) )
  4447.             (void)fprintf(list_fd,"(%s) ",token_name(*t));
  4448.         }
  4449.     }
  4450. }
  4451.  
  4452. PRIVATE void
  4453. print_comlist(s,t)
  4454.     char *s;
  4455.     Token *t;
  4456. {
  4457.  
  4458.     (void)fprintf(list_fd,"\n%s varlist: ",s);
  4459.  
  4460.     if(t == NULL)
  4461.         (void)fprintf(list_fd,"(empty)");
  4462.     else {
  4463.           while( (t=t->next_token) != NULL) {
  4464.           fprintf(list_fd,"%s ",type_name[datatype_of(t->TOK_type)]);
  4465.           if( is_true(ID_EXPR,t->TOK_flags) )
  4466.             (void)fprintf(list_fd,"(%s) ",token_name(*t));
  4467.         }
  4468.       }
  4469. }
  4470. #endif
  4471.  
  4472. /* After having parsed prog_stmt, function_stmt, subroutine_stmt,
  4473.    block_data_stmt, the stmt_sequence_no is set to the value SEQ_HEADER.
  4474. */
  4475.  
  4476. void
  4477. #if HAVE_STDC
  4478. check_seq_header(Token *t)
  4479. #else /* K&R style */
  4480. check_seq_header(t)
  4481.      Token *t;
  4482. #endif /* HAVE_STDC */
  4483. {
  4484.     if(stmt_sequence_no >= SEQ_HEADER) {
  4485.        syntax_error( (t == (Token *) NULL? line_num: t->line_num),
  4486.             NO_COL_NUM,
  4487.             "missing END statement inserted");
  4488.        msg_tail( (t == (Token *) NULL? "at end of file":
  4489.               "prior to statement") );
  4490.  
  4491.        END_processing(t);
  4492.     }
  4493.     stmt_sequence_no = SEQ_HEADER;
  4494. }
  4495.  
  4496. PRIVATE void
  4497. #if HAVE_STDC
  4498. check_stmt_sequence(Token *t, int seq_num)
  4499. #else /* K&R style */
  4500. check_stmt_sequence(t,seq_num)
  4501.      Token *t;
  4502.      int seq_num;
  4503. #endif /* HAVE_STDC */
  4504. {
  4505.     if(stmt_sequence_no > seq_num) {
  4506.       if(f77_stmt_order) {
  4507.     nonstandard(t->line_num, NO_COL_NUM);
  4508.     msg_tail(": Statement out of order.");
  4509.       }
  4510.     }
  4511.             /* If no error, sequence number is updated to new
  4512.                value.  If error, it is rolled back to prevent
  4513.                cascades of error messages.  */
  4514.     stmt_sequence_no = seq_num;
  4515. }
  4516.  
  4517. PRIVATE void
  4518. init_io_ctrl_list(VOID)
  4519. {
  4520.   control_item_count = 0;
  4521.   io_internal_file = FALSE;
  4522.   io_list_directed = FALSE;
  4523.   io_warning_given = FALSE;
  4524. }
  4525.  
  4526.  
  4527.     /* After having parsed end_stmt, common block lists and
  4528.        subprogram argument lists are copied over into global symbol
  4529.        table, the local symbol table is printed out and then cleared,
  4530.        and stmt_sequence_no is set to zero for start of next module.
  4531.     */
  4532.  
  4533. PRIVATE void
  4534. #if HAVE_STDC
  4535. END_processing(Token *t)
  4536. #else /* K&R style */
  4537. END_processing(t)
  4538.     Token *t;
  4539. #endif /* HAVE_STDC */
  4540. {
  4541.   ++tot_module_count;
  4542.   if(current_module_hash != -1) {
  4543.         if(exec_stmt_count == 0 &&
  4544.        current_module_type != type_BLOCK_DATA) {
  4545.       if(misc_warn)
  4546.         warning(t == (Token *)NULL? line_num: t->line_num, NO_COL_NUM,
  4547.           "Module contains no executable statements");
  4548.     }
  4549.     if(do_list && t != (Token *)NULL)
  4550.         (void)flush_line_out(t->line_num);
  4551.     check_loose_ends(current_module_hash);
  4552.     process_lists(current_module_hash);
  4553.     debug_symtabs();
  4554.     print_loc_symbols(current_module_hash);
  4555.     init_symtab();
  4556.   }
  4557.   exec_stmt_count = 0;
  4558.   stmt_sequence_no = 0;
  4559.   current_module_hash = -1;
  4560.   implicit_type_given = FALSE;
  4561.   implicit_none = FALSE;
  4562.   true_prev_stmt_line_num = 0;
  4563.   integer_context = FALSE;
  4564.   global_save = FALSE;
  4565. }
  4566.  
  4567.         /* Routine to create a node for an expr tree.  Returns
  4568.            a pointer to the newly created node.
  4569.          */
  4570. PRIVATE Token *
  4571. #if HAVE_STDC
  4572. add_tree_node(Token *node, Token *left, Token *right)
  4573. #else /* K&R style */
  4574. add_tree_node(node,left,right)
  4575.      Token *node,*left,*right;
  4576. #endif /* HAVE_STDC */
  4577. {
  4578.   Token *new_node, *new_left, *new_right;
  4579.  
  4580.   new_node=new_token();
  4581.  
  4582.   *new_node = *node;        /* Make a permanent copy of root */
  4583.  
  4584.         /* Add the children.  If child's left_token pointer is
  4585.            null, then that expression is a primary.  Otherwise
  4586.            it is the root node of a subtree.
  4587.          */
  4588.   if(left->left_token == (Token *)NULL) {
  4589.     new_left=new_token();
  4590.     *new_left = *left;            /* Copy primary to permanent space */
  4591.   }
  4592.   else {
  4593.     new_left = left->left_token;    /* No copying needed in this case */
  4594.   }
  4595.  
  4596.   if(right == (Token *)NULL) {
  4597.     new_right = (Token *)NULL;        /* No right child */
  4598.   }
  4599.   else if(right->left_token == (Token *)NULL
  4600.       || node->class == '(') { /* Paren means right child is expr list */
  4601.     new_right=new_token();
  4602.     *new_right = *right;        /* Copy primary to permanent space */
  4603.   }
  4604.   else {
  4605.     new_right = right->left_token;    /* No copying needed in this case */
  4606.   }
  4607.  
  4608.   new_node->left_token = new_left;    /* Link children onto the new root */
  4609.   new_node->next_token = new_right;
  4610.   return new_node;
  4611. }
  4612.  
  4613.         /* Routine to add token t to the front of a token list. */
  4614. PRIVATE Token *
  4615. #if HAVE_STDC
  4616. append_token(Token *tlist, Token *t)
  4617. #else /* K&R style */
  4618. append_token(tlist,t)
  4619.      Token *tlist, *t;
  4620. #endif /* HAVE_STDC */
  4621. {
  4622.     Token *tcopy;
  4623.  
  4624.     tcopy=new_token();
  4625.  
  4626.     *tcopy = *t;        /* make permanent copy of token */
  4627.     tcopy->next_token = tlist; /* link it onto front of list */
  4628.     return tcopy;        /* return it as new tlist */
  4629. }
  4630.