home *** CD-ROM | disk | FTP | other *** search
-
- # line 9 "fortran.y"
-
- /*
- fortran.c:
-
- Copyright (C) 1991 by Robert K. Moniot.
- This program is free software. Permission is granted to
- modify it and/or redistribute it. There is no warranty
- for this program.
-
-
- This grammar is ANSI standard-conforming, except for:
- -- Sensitive to whitespace, which is used in lexical analysis
- to separate keywords and identifiers from context. This
- is a design feature. Rules are the same as for Pascal.
- (Of course stmt fields and end-of-line still honored.)
- Note: a complex constant cannot be split across lines.
- -- Currently, some keywords are partially reserved: may
- only be used for scalar variables. (See keywords.c) This
- is the fault of the lexical analyzer (too little lookahead).
-
- Extensions supported:
- -- Case insensitive.
- -- Hollerith constants.
- -- Variable names may be longer than 6 characters. Also
- allows underscores in names.
- -- DO ... ENDDO and DO WHILE loop forms allowed.
- -- TYPE and ACCEPT I/O statements allowed.
- -- Tabs are permitted in input, and (except in character data)
- expand into blanks up to the next column equal to 1 mod 8.
- -- Type declarations INTEGER*2, REAL*8, etc. are allowed.
- REAL*8 becomes DOUBLE PRECISION. For others, length spec
- is ignored.
- -- IMPLICIT NONE allowed.
- */
-
- /* Author: R. Moniot
- * Date: August 1988
- * Last revision: June 1991
- */
-
- #include <stdio.h>
- #include <string.h>
- #include "forchek.h"
- #include "symtab.h"
- void exit();
-
-
-
- int current_datatype, /* set when parse type_name or type_stmt */
- stmt_sequence_no, /* set when parsing, reset to 0 at end_stmt */
- control_item_count; /* count of items in control_info_list */
-
- int current_module_hash = -1, /* hashtable index of current module name */
- current_module_type,
- executable_stmt=FALSE,
- prev_stmt_class=0,
- /* flags for lexer */
- complex_const_allowed=FALSE, /* for help in lookahead for these */
- inside_format=FALSE, /* when inside parens of FORMAT */
- integer_context=FALSE, /* says integers-only are to follow */
- prev_goto=FALSE,
- goto_flag=FALSE; /* if unconditional GOTO was encountered */
-
- long exec_stmt_count=0; /* count of executable stmts in program */
-
- PRIVATE void
- print_comlist(), print_exprlist(), END_processing();
- PRIVATE Token *
- append_token();
-
- /* Uses of Token fields for nonterminals: */
- /*
- 1. dim_bound_lists: dimensioning info for arrays:
- token.class = no. of dimensions,
- token.subclass = no. of elements
- 2. expressions
- token.class = type_byte = storage_class << 4 + datatype
- token.subclass = flags: CONST_EXPR, LVALUE_EXPR, etc.
- 3. common variable lists
- token.subclass = flag: COMMA_FLAG used to handle extra/missing commas
- */
-
- #define seq_header 1
- #define seq_implicit 2
- #define seq_specif 3
- #define seq_stmt_fun 4
- #define seq_exec 5
- #define seq_end 6
-
- #define DBG(S) if(debug_parser) fprintf(list_fd,"\nproduction: S");
- #define DBGstr(S,str) \
- if(debug_parser) fprintf(list_fd,"\nproduction: S%s",str);
-
- # define tok_identifier 257
- # define tok_label 258
- # define tok_integer_const 259
- # define tok_real_const 260
- # define tok_dp_const 261
- # define tok_complex_const 262
- # define tok_logical_const 263
- # define tok_string 264
- # define tok_hollerith 265
- # define tok_edit_descriptor 266
- # define tok_letter 267
- # define tok_relop 268
- # define tok_AND 269
- # define tok_OR 270
- # define tok_EQV 271
- # define tok_NEQV 272
- # define tok_NOT 273
- # define tok_power 274
- # define tok_concat 275
- # define tok_ASSIGN 276
- # define tok_ACCEPT 277
- # define tok_BACKSPACE 278
- # define tok_BLOCK 279
- # define tok_CALL 280
- # define tok_CHARACTER 281
- # define tok_CLOSE 282
- # define tok_COMMON 283
- # define tok_COMPLEX 284
- # define tok_CONTINUE 285
- # define tok_DATA 286
- # define tok_DIMENSION 287
- # define tok_DO 288
- # define tok_DOUBLE 289
- # define tok_DOWHILE 290
- # define tok_ELSE 291
- # define tok_ELSEIF 292
- # define tok_END 293
- # define tok_ENDDO 294
- # define tok_ENDFILE 295
- # define tok_ENDIF 296
- # define tok_ENTRY 297
- # define tok_EQUIVALENCE 298
- # define tok_EXTERNAL 299
- # define tok_FORMAT 300
- # define tok_FUNCTION 301
- # define tok_GO 302
- # define tok_GOTO 303
- # define tok_IF 304
- # define tok_IMPLICIT 305
- # define tok_INCLUDE 306
- # define tok_INQUIRE 307
- # define tok_INTEGER 308
- # define tok_INTRINSIC 309
- # define tok_LOGICAL 310
- # define tok_OPEN 311
- # define tok_PARAMETER 312
- # define tok_PAUSE 313
- # define tok_PRECISION 314
- # define tok_PRINT 315
- # define tok_PROGRAM 316
- # define tok_READ 317
- # define tok_REAL 318
- # define tok_RETURN 319
- # define tok_REWIND 320
- # define tok_SAVE 321
- # define tok_STOP 322
- # define tok_SUBROUTINE 323
- # define tok_TO 324
- # define tok_TYPE 325
- # define tok_THEN 326
- # define tok_WHILE 327
- # define tok_WRITE 328
- # define tok_illegal 329
- # define EOS 127
- # define REDUCE 331
- #define yyclearin yychar = -1
- #define yyerrok yyerrflag = 0
- extern int yychar;
- extern int yyerrflag;
- #ifndef YYMAXDEPTH
- #define YYMAXDEPTH 150
- #endif
- #ifndef YYSTYPE
- #define YYSTYPE int
- #endif
- YYSTYPE yylval, yyval;
- typedef int yytabelem;
- # define YYERRCODE 256
-
- # line 2197 "fortran.y"
-
- void
- init_parser() /* Initialize various flags & counters */
- {
- initial_flag = TRUE; /* set flag for keyword test */
- implicit_flag=FALSE; /* clear flags for IMPLICIT stmt */
- implicit_letter_flag = FALSE;
- implicit_type_given = FALSE;
- implicit_none = FALSE;
- prev_token_class = EOS;
- complex_const_allowed = FALSE;
- stmt_sequence_no = 0;
- }
-
- /* Debugging routine: prints the expression list of various productions */
-
- PRIVATE void
- print_exprlist(s,t)
- char *s;
- Token *t;
- {
-
- fprintf(list_fd,"\n%s arglist: ",s);
-
- if(t == NULL)
- fprintf(list_fd,"(empty)");
- else {
- while( (t=t->next_token) != NULL) {
- fprintf(list_fd,"%s ",type_name[datatype_of(t->class)]);
- if( is_true(ID_EXPR,t->subclass) )
- fprintf(list_fd,"(%s) ",token_name(*t));
- }
- }
- }
-
- PRIVATE void
- print_comlist(s,t)
- char *s;
- Token *t;
- {
-
- fprintf(list_fd,"\n%s varlist: ",s);
-
- if(t == NULL)
- fprintf(list_fd,"(empty)");
- else {
- while( (t=t->next_token) != NULL) {
- fprintf(list_fd,"%s ",type_name[datatype_of(t->class)]);
- if( is_true(ID_EXPR,t->subclass) )
- fprintf(list_fd,"(%s) ",token_name(*t));
- }
- }
- }
-
- /* After having parsed prog_stmt, function_stmt, subroutine_stmt,
- block_data_stmt, the stmt_sequence_no is set to the value seq_header.
- */
-
- void
- check_seq_header(t)
- Token *t;
- {
- if(stmt_sequence_no >= seq_header) {
- syntax_error( (t == (Token *) NULL? line_num: t->line_num),
- NO_COL_NUM,
- "missing END statement inserted");
- msg_tail( (t == (Token *) NULL? "at end of file":
- "prior to statement") );
-
- END_processing(t);
- }
- stmt_sequence_no = seq_header;
- }
-
-
-
-
- /* After having parsed end_stmt, common block lists and
- subprogram argument lists are copied over into global symbol
- table, the local symbol table is printed out and then cleared,
- and stmt_sequence_no is set to zero for start of next module.
- */
-
- PRIVATE void
- END_processing(t)
- Token *t;
- {
- if(current_module_hash != -1) {
- if(exec_stmt_count == 0 &&
- current_module_type != type_BLOCK_DATA) {
- warning(t == (Token *)NULL? line_num: t->line_num, NO_COL_NUM,
- "Module contains no executable statements");
- }
-
- if(do_list && t != (Token *)NULL)
- flush_line_out(t->line_num);
- process_lists(current_module_hash);
- debug_symtabs();
- print_loc_symbols(current_module_hash);
- init_symtab();
- }
- exec_stmt_count = 0;
- stmt_sequence_no = 0;
- current_module_hash = -1;
- implicit_type_given = FALSE;
- implicit_none = FALSE;
- }
-
- /* Routine to add token t to the front of a token list. */
- PRIVATE Token *
- append_token(tlist,t)
- Token *tlist, *t;
- {
- Token *tcopy;
- if((tcopy=new_token()) == (Token *)NULL){
- fprintf(stderr,
- "Out of token space at line %u\n",
- line_num);
- exit(1);
- }
-
- *tcopy = *t; /* make permanent copy of token */
- tcopy->next_token = tlist; /* link it onto front of list */
- return tcopy; /* return it as new tlist */
- }
- yytabelem yyexca[] ={
- -1, 1,
- 0, -1,
- -2, 0,
- -1, 504,
- 268, 0,
- -2, 354,
- -1, 570,
- 42, 201,
- -2, 203,
- -1, 578,
- 42, 405,
- -2, 375,
- };
- # define YYNPROD 407
- # define YYLAST 1247
- yytabelem yyact[]={
-
- 246, 473, 524, 523, 224, 563, 136, 268, 340, 567,
- 235, 566, 427, 457, 463, 464, 458, 442, 543, 357,
- 439, 236, 541, 367, 356, 77, 369, 374, 76, 75,
- 154, 437, 247, 304, 221, 115, 128, 115, 365, 242,
- 220, 197, 250, 115, 244, 172, 173, 338, 137, 243,
- 703, 181, 208, 354, 186, 288, 162, 81, 177, 241,
- 294, 293, 316, 143, 271, 282, 386, 178, 114, 178,
- 372, 133, 387, 148, 149, 178, 135, 178, 388, 168,
- 687, 176, 182, 187, 187, 192, 194, 198, 160, 116,
- 205, 564, 164, 213, 213, 131, 158, 134, 339, 157,
- 156, 269, 201, 203, 206, 132, 115, 155, 396, 372,
- 382, 383, 141, 153, 279, 280, 281, 546, 276, 115,
- 254, 258, 260, 137, 165, 212, 202, 641, 312, 163,
- 214, 167, 341, 291, 183, 188, 188, 114, 204, 275,
- 133, 199, 237, 285, 286, 135, 574, 292, 573, 325,
- 147, 199, 137, 298, 441, 468, 171, 328, 305, 228,
- 229, 230, 231, 170, 131, 333, 134, 708, 705, 679,
- 702, 701, 425, 381, 132, 698, 633, 176, 165, 697,
- 625, 381, 176, 696, 190, 332, 359, 423, 381, 621,
- 360, 491, 683, 682, 115, 681, 421, 187, 680, 675,
- 319, 381, 185, 337, 579, 674, 352, 137, 462, 202,
- 400, 310, 301, 398, 673, 672, 327, 163, 329, 377,
- 664, 195, 662, 368, 145, 582, 82, 89, 124, 206,
- 126, 560, 97, 371, 184, 85, 256, 256, 256, 492,
- 144, 120, 351, 349, 661, 125, 347, 337, 311, 188,
- 375, 384, 119, 118, 120, 317, 699, 98, 318, 424,
- 637, 96, 368, 87, 667, 91, 368, 121, 368, 100,
- 123, 607, 86, 358, 422, 92, 208, 137, 122, 137,
- 137, 394, 395, 420, 605, 429, 477, 688, 432, 635,
- 389, 461, 426, 399, 402, 179, 397, 179, 404, 300,
- 406, 622, 376, 179, 617, 179, 613, 612, 440, 611,
- 557, 593, 189, 558, 546, 685, 370, 341, 542, 550,
- 497, 553, 451, 460, 436, 350, 348, 326, 168, 346,
- 344, 465, 555, 415, 548, 410, 405, 403, 176, 331,
- 474, 137, 182, 547, 187, 401, 379, 115, 337, 115,
- 319, 137, 364, 363, 478, 137, 479, 202, 198, 366,
- 137, 137, 228, 229, 230, 231, 575, 576, 577, 137,
- 163, 450, 163, 329, 429, 137, 378, 327, 452, 335,
- 455, 488, 493, 385, 486, 362, 495, 470, 496, 483,
- 475, 476, 471, 480, 183, 137, 188, 137, 366, 382,
- 383, 448, 366, 498, 366, 317, 382, 383, 318, 413,
- 382, 383, 321, 494, 368, 368, 368, 137, 525, 382,
- 383, 382, 383, 505, 506, 345, 502, 431, 440, 533,
- 440, 336, 440, 504, 521, 507, 508, 503, 355, 509,
- 308, 368, 499, 500, 307, 299, 515, 516, 517, 297,
- 296, 305, 295, 528, 572, 529, 570, 530, 571, 557,
- 278, 274, 334, 546, 540, 210, 142, 542, 550, 211,
- 553, 84, 158, 537, 417, 157, 156, 561, 559, 200,
- 373, 555, 14, 155, 393, 269, 481, 57, 314, 392,
- 469, 313, 594, 588, 589, 320, 482, 368, 646, 240,
- 601, 669, 249, 602, 248, 596, 684, 390, 390, 391,
- 391, 390, 598, 391, 603, 251, 431, 694, 710, 604,
- 585, 609, 610, 498, 217, 704, 534, 306, 629, 693,
- 390, 548, 391, 549, 665, 631, 608, 485, 551, 552,
- 547, 644, 634, 381, 645, 490, 440, 648, 623, 554,
- 256, 256, 256, 599, 586, 616, 209, 215, 490, 522,
- 636, 539, 527, 639, 640, 638, 535, 207, 501, 233,
- 411, 414, 249, 272, 248, 453, 536, 256, 650, 651,
- 474, 653, 460, 460, 7, 435, 600, 361, 429, 270,
- 465, 615, 465, 465, 490, 654, 269, 431, 657, 655,
- 660, 658, 659, 663, 218, 218, 614, 218, 218, 490,
- 330, 649, 597, 668, 232, 485, 252, 253, 584, 666,
- 580, 585, 519, 581, 525, 520, 678, 514, 513, 512,
- 490, 490, 490, 256, 489, 256, 484, 490, 443, 485,
- 676, 444, 322, 233, 342, 707, 249, 343, 248, 185,
- 283, 686, 695, 572, 572, 570, 691, 571, 692, 690,
- 689, 428, 233, 619, 620, 249, 628, 248, 557, 624,
- 525, 627, 546, 700, 626, 606, 591, 550, 632, 553,
- 548, 590, 549, 538, 531, 287, 587, 551, 552, 547,
- 555, 583, 487, 454, 474, 706, 434, 233, 554, 257,
- 249, 418, 248, 643, 409, 525, 408, 709, 407, 373,
- 322, 474, 711, 16, 137, 8, 137, 324, 228, 229,
- 230, 231, 227, 225, 226, 309, 261, 302, 257, 249,
- 431, 248, 245, 82, 89, 124, 110, 126, 114, 97,
- 74, 133, 85, 71, 72, 127, 135, 105, 101, 102,
- 17, 106, 125, 103, 67, 73, 78, 68, 129, 119,
- 118, 120, 111, 11, 98, 131, 79, 134, 96, 69,
- 87, 289, 91, 63, 121, 132, 100, 123, 80, 86,
- 130, 284, 92, 16, 137, 122, 137, 277, 228, 229,
- 230, 231, 227, 225, 226, 259, 273, 257, 249, 266,
- 248, 151, 245, 82, 89, 124, 110, 126, 114, 97,
- 74, 133, 85, 71, 72, 127, 135, 105, 101, 102,
- 17, 106, 125, 103, 67, 73, 78, 68, 129, 119,
- 118, 120, 111, 233, 98, 131, 79, 134, 96, 69,
- 87, 430, 91, 63, 121, 132, 100, 123, 80, 86,
- 130, 255, 92, 257, 249, 122, 248, 223, 222, 239,
- 137, 10, 228, 229, 230, 231, 227, 225, 226, 240,
- 140, 9, 249, 618, 248, 3, 245, 412, 138, 137,
- 139, 228, 229, 230, 231, 227, 225, 226, 518, 548,
- 574, 549, 573, 265, 99, 245, 551, 552, 547, 233,
- 556, 545, 249, 544, 248, 150, 93, 554, 95, 94,
- 264, 263, 262, 238, 137, 671, 228, 229, 230, 231,
- 227, 225, 226, 233, 511, 656, 249, 670, 248, 510,
- 245, 88, 233, 290, 459, 249, 380, 248, 234, 90,
- 419, 526, 233, 137, 219, 228, 229, 230, 231, 227,
- 225, 226, 233, 630, 104, 249, 677, 248, 416, 245,
- 433, 233, 83, 117, 249, 595, 248, 592, 353, 652,
- 233, 532, 315, 249, 569, 248, 568, 647, 565, 233,
- 449, 472, 249, 161, 248, 159, 196, 193, 233, 191,
- 642, 249, 445, 248, 303, 562, 447, 446, 233, 152,
- 70, 249, 113, 248, 112, 180, 428, 174, 233, 175,
- 467, 249, 137, 248, 228, 229, 230, 231, 227, 225,
- 226, 216, 466, 219, 323, 169, 456, 166, 245, 66,
- 438, 109, 65, 108, 107, 64, 146, 62, 61, 60,
- 59, 58, 56, 55, 54, 53, 52, 51, 50, 49,
- 137, 48, 228, 229, 230, 231, 227, 225, 226, 47,
- 46, 45, 44, 43, 42, 41, 40, 39, 137, 38,
- 228, 229, 230, 231, 227, 225, 226, 37, 36, 35,
- 34, 33, 32, 31, 245, 267, 137, 30, 228, 229,
- 230, 231, 227, 225, 226, 29, 28, 27, 26, 25,
- 24, 23, 245, 22, 137, 21, 578, 229, 230, 231,
- 575, 576, 577, 20, 19, 18, 137, 15, 228, 229,
- 230, 231, 227, 225, 226, 13, 12, 6, 5, 4,
- 2, 1, 245, 0, 0, 0, 0, 0, 0, 0,
- 137, 0, 228, 229, 230, 231, 227, 225, 226, 137,
- 0, 228, 229, 230, 231, 227, 225, 226, 0, 137,
- 0, 228, 229, 230, 231, 227, 225, 226, 0, 137,
- 0, 228, 229, 230, 231, 227, 225, 226, 137, 0,
- 228, 229, 230, 231, 227, 225, 226, 137, 0, 228,
- 229, 230, 231, 227, 225, 226, 137, 0, 228, 229,
- 230, 231, 227, 225, 226, 137, 0, 228, 229, 230,
- 231, 227, 225, 226, 0, 137, 0, 228, 229, 230,
- 231, 227, 225, 226, 0, 137, 0, 228, 229, 230,
- 231, 227, 225, 226, 0, 0, 0, 0, 137, 0,
- 228, 229, 230, 231, 227, 225, 226 };
- yytabelem yypact[]={
-
- 457, -1000, 457, -1000, -1000, -1000, -1000, -1000, 527, -1000,
- -1000, -152, -1000, -1000, -1000, -1000, 339, -64, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, 23, -105, -1000, 761,
- -144, 138, -105, -1000, 20, -105, 160, 140, -105, -105,
- 94, 418, -133, 98, -50, 338, -134, -134, 981, 902,
- 829, 902, 902, 811, 755, 686, -1000, -1000, -1000, 759,
- 958, -63, 756, 334, -209, 747, 333, -105, -105, -105,
- -221, -1000, 608, -1000, -1000, 741, 645, -1000, -1000, -269,
- 731, -1000, -1000, -1000, -1000, -1000, -105, -133, -240, -1000,
- -1000, -1000, -1000, -1000, -1000, -254, -1000, -1000, -1000, -1000,
- -1000, 325, -1000, -1000, 323, 322, -105, -1000, 318, 172,
- 687, -105, 400, 313, -1000, 685, -1000, 607, -1000, 84,
- -1000, 444, -1000, -1000, -1000, 138, 368, -1000, 670, 677,
- 22, 30, -1000, -1000, 566, -105, 670, -1000, 118, -1000,
- 335, -1000, 670, -1000, 304, 58, -1000, 602, 605, 203,
- -105, 202, -1000, 199, -1000, -1000, 198, -1000, -1000, -105,
- -1000, -271, -1000, 311, -133, 146, 543, -1000, 258, -133,
- -1000, 226, -1000, -1000, -1000, 225, 657, 189, -205, -1000,
- -1000, 669, 645, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 175, 859, 219, 499, -1000, -161, -1000, -1000,
- 829, -204, -197, -1000, -190, 968, 464, 442, 793, 793,
- -1000, -166, 169, 166, 218, 657, -161, -1000, 210, 657,
- 209, 657, 668, 666, 664, 208, 529, -1000, 206, 464,
- -1000, -1000, -274, -1000, -1000, 413, 661, -1000, -1000, 156,
- 147, 132, -1000, -127, 603, -1000, -1000, 948, -1000, -1000,
- 656, -1000, 541, -1000, -1000, -1000, -1000, -1000, 197, -1000,
- -1000, 112, -1000, 597, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 138, -1000, 138, 138, 531, -1000, -1000, 653,
- -1000, -105, 892, 164, -105, -1000, 28, -1000, -1000, -1000,
- -1000, -105, 443, -1000, -1000, -105, -1000, -105, -1000, 939,
- -1000, -1000, 58, 58, -1000, 159, -1000, -105, -1000, -105,
- -1000, 104, 439, 859, -105, -1000, 595, -1000, -1000, -133,
- 652, -133, -1000, -1000, -1000, 593, -161, -1000, 178, -1000,
- -1000, 829, 793, 603, -1000, -1000, -1000, 829, 150, -1000,
- 193, 829, 859, 859, 524, 150, 859, 859, 968, -190,
- 793, 793, 793, 793, 442, 442, 793, -1000, -1000, -1000,
- -1000, -1000, 588, -1000, 587, -1000, 586, 657, 657, 657,
- -1000, -1000, 581, -161, -133, -1000, 859, 968, -1000, 859,
- -1000, 112, -1000, 112, -1000, 112, -1000, 643, 930, 468,
- 522, -161, 468, 859, 657, -1000, -1000, 642, 517, -1000,
- -1000, -1000, 423, 186, -105, 170, -213, -176, -1000, 847,
- -1000, 143, -1000, -1000, 859, -1000, 579, -1000, 167, -1000,
- 464, -1000, 651, 577, 510, 646, 645, -1000, -1000, -1000,
- -1000, -1000, 640, 635, 464, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -161, 184, 921, -133, 571, -133, 509, 459,
- 657, -1000, 657, 157, -1000, 634, 144, -1000, -1000, -204,
- -204, 829, -197, -1000, -1000, 442, 442, -1000, -1000, -1000,
- 829, 829, 182, 180, 179, 565, 550, 514, 177, -1000,
- 622, -1000, 148, 174, 504, 464, 859, 139, 633, 630,
- 625, -1000, -1000, 487, 912, 859, 135, 501, 162, 112,
- 133, -1000, 632, -1000, 77, -1000, -1000, -1000, -1000, -1000,
- -132, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- 859, -1000, 500, -1000, 453, 503, -1000, -1000, 569, -1000,
- -1000, -1000, -1000, -100, -100, -1000, -1000, -1000, -1000, 968,
- -1000, 892, 883, -105, -1000, -105, -105, 603, -1000, -1000,
- -1000, -1000, 117, -1000, 95, 968, -1000, 93, 493, -133,
- -1000, 137, 829, -1000, -1000, -1000, -1000, -1000, 440, 499,
- 499, -1000, -1000, -1000, 88, 87, 78, -1000, 72, -161,
- -133, -1000, -1000, 968, 128, 71, 68, 66, 65, -1000,
- -1000, 465, -161, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- 274, -1000, -1000, -161, -1000, -176, -187, 240, 847, 103,
- -1000, -1000, 617, 485, -1000, -1000, -1000, 476, -1000, -1000,
- 611, -1000, -1000, 56, -1000, 52, 48, -1000, 129, 968,
- 44, 43, -1000, -1000, -1000, -1000, -1000, -276, 481, 41,
- -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, 968, -1000, -1000, -1000, -1000, -1000, -1000,
- 604, -1000, -1000, 40, 968, -1000, 474, -1000, -1000, -1000,
- 968, -1000 };
- yytabelem yypgo[]={
-
- 0, 1131, 1130, 875, 1129, 1128, 1127, 871, 1126, 1125,
- 482, 1117, 1115, 1114, 1113, 1105, 861, 1103, 1101, 1100,
- 1099, 1098, 1097, 1096, 1095, 1087, 1083, 1082, 1081, 1080,
- 1079, 1078, 1077, 1069, 1067, 1066, 1065, 1064, 1063, 1062,
- 1061, 1060, 1059, 1051, 1049, 1048, 1047, 1046, 1045, 1044,
- 1043, 1042, 487, 1041, 1040, 1039, 1038, 1037, 1036, 6,
- 31, 1035, 1034, 1033, 36, 29, 28, 25, 1032, 1031,
- 1030, 20, 1029, 1027, 58, 1026, 13, 16, 1025, 1024,
- 14, 15, 1022, 1010, 12, 27, 163, 156, 46, 1009,
- 45, 1007, 1005, 234, 1004, 8, 1002, 47, 51, 54,
- 1000, 999, 30, 997, 996, 995, 5, 1, 994, 33,
- 992, 990, 989, 987, 986, 41, 985, 88, 983, 980,
- 978, 977, 56, 57, 92, 11, 9, 976, 974, 972,
- 969, 62, 89, 968, 142, 967, 34, 963, 19, 962,
- 24, 7, 471, 960, 958, 956, 954, 3, 941, 940,
- 2, 469, 939, 938, 10, 936, 933, 38, 931, 524,
- 929, 927, 924, 915, 23, 26, 21, 913, 912, 911,
- 910, 909, 908, 906, 515, 905, 17, 22, 18, 903,
- 901, 900, 894, 893, 888, 877, 873, 859, 59, 39,
- 49, 44, 0, 32, 42, 40, 858, 857, 4, 841 };
- yytabelem yyr1[]={
-
- 0, 1, 1, 2, 2, 3, 3, 3, 3, 4,
- 4, 7, 7, 7, 7, 7, 8, 8, 8, 8,
- 5, 5, 16, 6, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 11, 11,
- 11, 11, 11, 11, 11, 58, 12, 17, 17, 13,
- 61, 61, 61, 61, 62, 63, 64, 64, 64, 14,
- 68, 68, 69, 60, 60, 70, 70, 71, 71, 15,
- 15, 72, 22, 73, 73, 74, 75, 75, 76, 76,
- 76, 76, 78, 23, 79, 79, 80, 80, 81, 81,
- 81, 82, 83, 83, 24, 24, 24, 87, 87, 88,
- 89, 89, 89, 86, 86, 90, 90, 91, 91, 25,
- 25, 25, 25, 65, 65, 65, 94, 94, 94, 94,
- 96, 66, 67, 92, 92, 98, 98, 93, 93, 99,
- 99, 99, 99, 100, 20, 20, 101, 103, 101, 104,
- 102, 105, 105, 106, 106, 97, 97, 97, 19, 108,
- 108, 110, 109, 26, 112, 112, 27, 113, 113, 28,
- 28, 114, 114, 115, 115, 21, 116, 116, 116, 119,
- 121, 117, 118, 118, 122, 122, 120, 120, 125, 125,
- 127, 127, 126, 126, 124, 130, 130, 129, 129, 131,
- 131, 133, 135, 29, 123, 123, 123, 30, 31, 32,
- 32, 33, 33, 33, 139, 139, 140, 140, 34, 51,
- 52, 143, 142, 53, 144, 145, 53, 54, 55, 55,
- 56, 148, 56, 149, 56, 146, 146, 146, 147, 147,
- 57, 57, 35, 36, 37, 151, 151, 151, 151, 153,
- 40, 155, 40, 156, 152, 38, 38, 38, 38, 38,
- 158, 39, 39, 41, 160, 161, 41, 42, 162, 163,
- 42, 157, 157, 164, 164, 154, 154, 166, 166, 167,
- 168, 46, 169, 47, 170, 48, 44, 44, 171, 45,
- 45, 172, 43, 43, 173, 165, 165, 159, 159, 175,
- 18, 176, 176, 176, 177, 177, 177, 178, 178, 178,
- 180, 180, 180, 180, 180, 180, 181, 179, 179, 183,
- 49, 184, 49, 186, 49, 182, 185, 185, 185, 185,
- 50, 50, 111, 134, 187, 187, 187, 188, 188, 189,
- 189, 190, 190, 191, 191, 192, 192, 192, 192, 192,
- 193, 193, 193, 194, 194, 174, 174, 195, 195, 195,
- 195, 195, 195, 195, 195, 198, 198, 198, 198, 141,
- 150, 107, 77, 132, 196, 84, 84, 199, 199, 197,
- 197, 137, 137, 85, 85, 85, 85, 136, 59, 128,
- 128, 128, 128, 128, 128, 95, 138 };
- yytabelem yyr2[]={
-
- 0, 2, 0, 2, 4, 3, 3, 2, 2, 5,
- 3, 3, 3, 3, 3, 5, 3, 3, 3, 3,
- 2, 4, 4, 7, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 1, 9, 7, 13, 2,
- 7, 13, 7, 13, 5, 3, 2, 2, 2, 2,
- 7, 13, 3, 1, 2, 3, 7, 3, 3, 4,
- 7, 5, 6, 2, 6, 9, 3, 7, 3, 7,
- 3, 7, 1, 9, 6, 10, 7, 7, 3, 3,
- 3, 8, 4, 4, 7, 7, 9, 3, 5, 5,
- 7, 5, 3, 3, 5, 3, 5, 3, 3, 6,
- 6, 6, 8, 2, 7, 2, 3, 3, 3, 3,
- 5, 3, 7, 2, 6, 3, 3, 2, 6, 3,
- 7, 3, 7, 3, 7, 7, 2, 1, 8, 1,
- 11, 2, 6, 3, 7, 6, 2, 6, 10, 2,
- 6, 1, 9, 6, 3, 7, 6, 3, 7, 4,
- 6, 2, 6, 3, 7, 6, 2, 4, 6, 1,
- 1, 12, 2, 6, 3, 2, 2, 6, 2, 6,
- 2, 3, 2, 3, 13, 6, 10, 4, 4, 3,
- 2, 1, 1, 13, 2, 2, 2, 11, 6, 12,
- 14, 7, 13, 15, 2, 4, 2, 6, 14, 4,
- 6, 1, 11, 4, 1, 1, 16, 4, 4, 6,
- 11, 1, 15, 1, 13, 4, 6, 3, 6, 10,
- 7, 5, 4, 6, 6, 0, 2, 3, 2, 1,
- 6, 1, 8, 1, 11, 10, 12, 14, 6, 10,
- 3, 7, 11, 6, 1, 1, 14, 7, 1, 1,
- 15, 3, 7, 7, 3, 2, 6, 3, 2, 15,
- 1, 12, 1, 12, 1, 12, 6, 10, 3, 6,
- 10, 3, 6, 10, 3, 2, 2, 3, 2, 1,
- 13, 0, 4, 6, 2, 4, 2, 6, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2, 4, 1,
- 6, 1, 10, 1, 12, 5, 3, 5, 7, 9,
- 5, 7, 3, 3, 2, 7, 7, 2, 7, 2,
- 7, 2, 5, 2, 7, 2, 5, 5, 7, 7,
- 2, 7, 7, 2, 7, 2, 7, 3, 2, 2,
- 3, 3, 3, 3, 7, 3, 3, 3, 3, 3,
- 3, 3, 3, 9, 9, 1, 2, 3, 7, 4,
- 4, 4, 4, 6, 9, 9, 11, 3, 2, 2,
- 4, 4, 2, 2, 2, 2, 3 };
- yytabelem yychk[]={
-
- -1000, -1, -2, -3, -4, -5, -6, 127, 258, -7,
- -16, 306, -8, -9, -10, -11, 256, 293, -12, -13,
- -14, -15, -17, -18, -19, -20, -21, -22, -23, -24,
- -25, -26, -27, -28, -29, -30, -31, -32, -33, -34,
- -35, -36, -37, -38, -39, -40, -41, -42, -43, -44,
- -45, -46, -47, -48, -49, -50, -51, -52, -53, -54,
- -55, -56, -57, 316, -61, -68, -72, 297, 300, 312,
- -100, 286, 287, 298, 283, -65, -66, -67, 299, 309,
- 321, -123, 276, -139, -142, 285, 322, 313, -158, 277,
- -152, 315, 325, -173, -171, -172, 311, 282, 307, -182,
- 319, 291, 292, 296, -146, 290, 294, -62, -63, -69,
- 279, 305, -94, -96, 281, -136, -132, -137, 303, 302,
- 304, 317, 328, 320, 278, 295, 280, 288, -64, 301,
- 323, 308, 318, 284, 310, 289, -59, 257, -3, -7,
- -16, 264, 127, 127, 304, 288, -58, 127, -59, -59,
- -175, 40, -101, 257, -102, -64, -65, -66, -67, -116,
- -117, -118, -122, -123, -124, 40, -73, -74, -59, -78,
- -86, -87, -90, -88, -91, -89, -59, -74, 47, 275,
- -92, -98, -59, -74, -93, 42, -99, -59, -74, -93,
- 44, -112, -59, -113, -59, 127, -114, -115, -59, 47,
- 61, -138, 259, -138, 40, -59, -138, -10, 326, -142,
- 127, -151, 259, -59, 264, -151, 40, -159, -174, 42,
- -195, -136, -196, -197, -198, 264, 265, 263, 259, 260,
- 261, 262, -159, 40, -153, -154, -166, -134, -167, -187,
- 40, -188, -189, -190, -191, 273, -192, -193, 45, 43,
- -194, -174, -159, -159, -165, 40, -134, 42, -165, 40,
- -165, 40, -168, -169, -170, -183, 40, 127, -141, -192,
- -52, 127, -142, 40, 127, -136, 327, 40, 127, -59,
- -59, -59, 286, 42, 40, -85, -85, 40, 324, 40,
- -156, -59, -138, 301, 314, 127, 127, 127, -59, 127,
- 127, 40, 40, -108, -109, -59, 127, 44, 127, 40,
- 127, -117, 44, 47, 44, -129, -131, -132, -124, -136,
- 127, 44, 40, -79, 40, 127, -87, -90, 127, -88,
- 44, -86, -59, 47, 127, 44, 127, 44, -97, 40,
- -95, 259, 42, 42, 127, -93, 127, 44, 127, 44,
- 127, 44, -59, -133, 324, 127, -140, -138, 127, 40,
- 44, 44, 127, 127, 127, -157, -134, -164, -59, -165,
- 127, 44, 275, 40, -85, -85, 127, 44, -134, 127,
- -155, 44, 271, 272, -154, -134, 270, 269, 268, -191,
- 43, 45, 47, 42, -193, -193, 274, 127, 44, 127,
- 44, 127, -157, 127, -157, 127, -157, 40, 40, 40,
- 127, 41, -185, -134, 42, 127, -144, 61, 40, -149,
- 127, 40, 127, 40, 127, 40, -95, -84, 58, -192,
- -199, -134, -192, -143, 40, 44, 127, -60, -70, -71,
- -59, 42, -176, 41, 44, -110, -103, -104, -117, -119,
- -122, -59, -131, 44, 40, -74, -75, -76, -77, 42,
- -192, 127, 44, -80, -81, -59, -82, -83, 127, 47,
- -98, -99, 42, -107, -192, -97, -97, 127, -59, -59,
- -115, 47, -134, -136, 41, 44, -140, 40, -138, 41,
- 44, 41, 61, -154, -195, -84, -154, 127, -166, -188,
- -188, 44, -189, -190, -191, -193, -193, -194, -194, -194,
- -160, -162, 41, 41, 41, -157, -157, -157, -184, 41,
- 44, -138, -134, -147, -150, -192, -148, -134, -60, -60,
- -60, 41, 41, -192, 58, 44, -134, -157, 41, 44,
- 41, -177, 44, -178, -179, -180, 40, 266, 257, 259,
- 45, 264, 265, 47, 275, 58, -181, 36, 127, -109,
- 61, -102, -105, -106, 267, -120, -125, -126, -127, -128,
- -59, -95, -198, 45, 43, 263, 264, 265, 259, 61,
- 41, 44, 58, 40, 41, 44, 44, 40, -85, -85,
- 41, 41, -135, 127, -141, 44, -138, 41, -140, 44,
- 127, -154, 44, -164, -165, 127, 41, 127, -136, -154,
- -154, 127, 127, 127, 41, 41, 41, 127, -186, -134,
- 42, 41, 127, 44, -134, 41, 41, 41, 41, 41,
- 41, -192, -134, 41, 41, 127, -71, 127, -177, -178,
- -176, 259, -111, -134, 41, 44, 45, -121, 44, 42,
- -198, -198, -130, -107, -76, -77, 42, -80, -81, -81,
- -84, 127, 127, -141, 127, 41, -138, 127, -154, 61,
- -161, -163, 127, 127, 127, 127, -138, -145, -150, 41,
- 127, 127, 127, 127, 41, 41, -106, 267, 47, -125,
- -126, -59, 41, 44, 41, 41, 127, 127, 127, 127,
- -147, 127, 127, 326, 44, 127, -107, 41, 127, -150,
- 44, -107 };
- yytabelem yydef[]={
-
- 2, -2, 1, 3, 5, 6, 7, 8, 0, 10,
- 20, 0, 11, 12, 13, 14, 0, 0, 16, 17,
- 18, 19, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 69, 79, 0, 0, 309, 0,
- 0, 0, 0, 102, 0, 76, 77, 78, 0, 0,
- 0, 0, 0, 0, 0, 0, 255, 255, 0, 0,
- 259, 0, 0, 0, 0, 0, 290, 292, 294, 329,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 153, 133, 135, 141, 214, 215, 216, 224, 0,
- 0, 270, 263, 304, 298, 301, 0, 247, 0, 75,
- 82, 136, 137, 138, 139, 0, 397, 398, 4, 9,
- 21, 0, 15, 22, 0, 0, 0, 89, 0, 0,
- 0, 0, 0, 0, 156, 0, 76, 77, 78, 0,
- 186, 0, 192, 194, 195, 0, 0, 93, 0, 0,
- 0, 0, 123, 117, 125, 0, 127, 128, 0, 122,
- 0, 143, 145, 146, 0, 0, 147, 149, 151, 0,
- 0, 0, 174, 0, 177, 179, 0, 181, 183, 0,
- 211, 0, 406, 0, 0, 0, 0, 229, 0, 0,
- 252, 0, 256, 257, 258, 0, 0, 0, 307, 308,
- 365, 367, 368, 369, 370, 371, 372, 373, 375, 376,
- 377, 378, 0, 0, 0, 261, 285, 287, 288, 343,
- 0, 344, 347, 349, 351, 0, 353, 355, 0, 0,
- 360, 363, 0, 0, 0, 0, 305, 306, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 340, 0, 379,
- 233, 237, 0, 234, 238, 0, 0, 243, 251, 0,
- 0, 0, 91, 0, 385, 391, 392, 0, 225, 231,
- 0, 335, 245, 74, 140, 23, 239, 250, 0, 90,
- 67, 83, 311, 0, 169, 171, 154, 157, 155, 159,
- 185, 187, 0, 189, 0, 0, 0, 209, 210, 0,
- 92, 0, 0, 0, 0, 114, 0, 124, 115, 118,
- 126, 119, 0, 121, 129, 0, 130, 0, 142, 0,
- 166, 405, 0, 0, 131, 0, 173, 0, 176, 0,
- 180, 0, 0, 0, 0, 218, 0, 226, 221, 0,
- 0, 0, 230, 253, 254, 0, 305, 281, 397, 284,
- 268, 0, 0, 385, 389, 390, 271, 0, 0, 260,
- 0, 0, 0, 0, 0, 287, 0, 0, 0, 352,
- 0, 0, 0, 0, 356, 357, 0, 273, 274, 277,
- 278, 302, 0, 296, 0, 299, 0, 0, 0, 0,
- 330, 331, 0, 336, 0, 341, 0, 0, 241, 0,
- 70, 83, 72, 83, 80, 83, 134, 0, 0, 353,
- 386, 387, 0, 0, 0, 246, 66, 0, 84, 85,
- 87, 88, 0, 0, 0, 0, 0, 0, 188, 0,
- 193, 397, 208, 207, 385, 94, 0, 96, 98, 100,
- 382, 103, 0, 0, 0, 108, 109, 110, 116, 120,
- 144, 148, 0, 0, 381, 150, 152, 132, 175, 178,
- 182, 184, 212, 0, 0, 0, 0, 0, 0, 0,
- 0, 374, 0, 0, 366, 0, 0, 262, 286, 345,
- 346, 0, 348, 350, -2, 358, 359, 361, 362, 364,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
- 0, 337, 0, 0, 0, 380, 0, 0, 0, 0,
- 0, 383, 393, 0, 0, 0, 0, 0, 0, 0,
- 0, 312, 0, 314, 0, 316, 311, 318, 319, 327,
- 0, 320, 321, 322, 323, 324, 325, 326, 168, 170,
- 0, 158, 0, 161, 163, 190, 196, 198, 0, 202,
- -2, 200, 399, 0, 0, 402, 403, 404, -2, 0,
- 95, 0, 0, 0, 104, 0, 0, 385, 112, 113,
- 165, 167, 0, 217, 0, 0, 227, 0, 0, 0,
- 265, 0, 0, 282, 283, 269, 384, 272, 367, 275,
- 279, 303, 297, 300, 0, 0, 0, 332, 0, 338,
- 0, 235, 240, 0, 0, 0, 0, 0, 0, 395,
- 394, 0, 388, 232, 264, 68, 86, 310, 313, 315,
- 0, 328, 172, 342, 160, 0, 0, 0, 0, 0,
- 400, 401, 0, 0, 97, 99, 101, 0, 107, 106,
- 0, 213, 219, 0, 222, 0, 0, 266, 0, 0,
- 0, 0, 291, 293, 295, 334, 339, 0, 248, 0,
- 244, 71, 73, 81, 396, 317, 162, 164, 191, 197,
- 199, 203, 204, 0, 105, 111, 220, 223, 228, 267,
- 0, 276, 280, 0, 0, 242, 205, 289, 236, 249,
- 0, 206 };
- typedef struct { char *t_name; int t_val; } yytoktype;
- #ifndef YYDEBUG
- # define YYDEBUG 0 /* don't allow debugging */
- #endif
-
- /* @(#)yaccpar 1.3 com/cmd/lang/yacc,3.1,9021 9/7/89 18:46:37 */
- /*
- ** Skeleton parser driver for yacc output
- */
-
- /*
- ** yacc user known macros and defines
- */
- #ifdef YYSPLIT
- # define YYERROR return(-2)
- #else
- # define YYERROR goto yyerrlab
- #endif
-
- #define YYACCEPT return(0)
- #define YYABORT return(1)
- #define YYBACKUP( newtoken, newvalue )\
- {\
- if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
- {\
- yyerror( "syntax error - cannot backup" );\
- goto yyerrlab;\
- }\
- yychar = newtoken;\
- yystate = *yyps;\
- yylval = newvalue;\
- goto yynewstate;\
- }
- #define YYRECOVERING() (!!yyerrflag)
- #ifndef YYDEBUG
- # define YYDEBUG 1 /* make debugging available */
- #endif
-
- /*
- ** user known globals
- */
- int yydebug; /* set to 1 to get debugging */
-
- /*
- ** driver internal defines
- */
- #define YYFLAG (-1000)
-
- #ifdef YYSPLIT
- # define YYSCODE { \
- extern int (*yyf[])(); \
- register int yyret; \
- if (yyf[yytmp]) \
- if ((yyret=(*yyf[yytmp])()) == -2) \
- goto yyerrlab; \
- else if (yyret>=0) return(yyret); \
- }
- #endif
-
- /*
- ** global variables used by the parser
- */
- YYSTYPE yyv[ YYMAXDEPTH ]; /* value stack */
- int yys[ YYMAXDEPTH ]; /* state stack */
-
- YYSTYPE *yypv; /* top of value stack */
- YYSTYPE *yypvt; /* top of value stack for $vars */
- int *yyps; /* top of state stack */
-
- int yystate; /* current state */
- int yytmp; /* extra var (lasts between blocks) */
-
- int yynerrs; /* number of errors */
- int yyerrflag; /* error recovery flag */
- int yychar; /* current input token number */
-
-
-
- /*
- ** yyparse - return 0 if worked, 1 if syntax error not recovered from
- */
- int
- yyparse()
- {
- /*
- ** Initialize externals - yyparse may be called more than once
- */
- yypv = &yyv[-1];
- yyps = &yys[-1];
- yystate = 0;
- yytmp = 0;
- yynerrs = 0;
- yyerrflag = 0;
- yychar = -1;
-
- goto yystack;
- {
- register YYSTYPE *yy_pv; /* top of value stack */
- register int *yy_ps; /* top of state stack */
- register int yy_state; /* current state */
- register int yy_n; /* internal state number info */
-
- /*
- ** get globals into registers.
- ** branch to here only if YYBACKUP was called.
- */
- yynewstate:
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
- goto yy_newstate;
-
- /*
- ** get globals into registers.
- ** either we just started, or we just finished a reduction
- */
- yystack:
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
-
- /*
- ** top of for (;;) loop while no reductions done
- */
- yy_stack:
- /*
- ** put a state and value onto the stacks
- */
- if ( ++yy_ps >= &yys[ YYMAXDEPTH ] ) /* room on stack? */
- {
- yyerror( "yacc stack overflow" );
- YYABORT;
- }
- *yy_ps = yy_state;
- *++yy_pv = yyval;
-
- /*
- ** we have a new state - find out what to do
- */
- yy_newstate:
- if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
- goto yydefault; /* simple state */
- if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
- yychar = 0; /* reached EOF */
- if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
- goto yydefault;
- if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar ) /*valid shift*/
- {
- yychar = -1;
- yyval = yylval;
- yy_state = yy_n;
- if ( yyerrflag > 0 )
- yyerrflag--;
- goto yy_stack;
- }
-
- yydefault:
- if ( ( yy_n = yydef[ yy_state ] ) == -2 )
- {
- if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
- yychar = 0; /* reached EOF */
- /*
- ** look through exception table
- */
- {
- register int *yyxi = yyexca;
-
- while ( ( *yyxi != -1 ) ||
- ( yyxi[1] != yy_state ) )
- {
- yyxi += 2;
- }
- while ( ( *(yyxi += 2) >= 0 ) &&
- ( *yyxi != yychar ) )
- ;
- if ( ( yy_n = yyxi[1] ) < 0 )
- YYACCEPT;
- }
- }
-
- /*
- ** check for syntax error
- */
- if ( yy_n == 0 ) /* have an error */
- {
- /* no worry about speed here! */
- switch ( yyerrflag )
- {
- case 0: /* new error */
- yyerror( "syntax error" );
- goto skip_init;
- yyerrlab:
- /*
- ** get globals into registers.
- ** we have a user generated syntax type error
- */
- yy_pv = yypv;
- yy_ps = yyps;
- yy_state = yystate;
- yynerrs++;
- skip_init:
- case 1:
- case 2: /* incompletely recovered error */
- /* try again... */
- yyerrflag = 3;
- /*
- ** find state where "error" is a legal
- ** shift action
- */
- while ( yy_ps >= yys )
- {
- yy_n = yypact[ *yy_ps ] + YYERRCODE;
- if ( yy_n >= 0 && yy_n < YYLAST &&
- yychk[yyact[yy_n]] == YYERRCODE) {
- /*
- ** simulate shift of "error"
- */
- yy_state = yyact[ yy_n ];
- goto yy_stack;
- }
- /*
- ** current state has no shift on
- ** "error", pop stack
- */
- yy_ps--;
- yy_pv--;
- }
- /*
- ** there is no state on stack with "error" as
- ** a valid shift. give up.
- */
- YYABORT;
- case 3: /* no shift yet; eat a token */
- if ( yychar == 0 ) /* reached EOF. quit */
- YYABORT;
- yychar = -1;
- goto yy_newstate;
- }
- }/* end if ( yy_n == 0 ) */
- /*
- ** reduction by production yy_n
- ** put stack tops, etc. so things right after switch
- */
- yytmp = yy_n; /* value to switch over */
- yypvt = yy_pv; /* $vars top of value stack */
- /*
- ** Look in goto table for next state
- ** Sorry about using yy_state here as temporary
- ** register variable, but why not, if it works...
- ** If yyr2[ yy_n ] doesn't have the low order bit
- ** set, then there is no action to be done for
- ** this reduction. So, no saving & unsaving of
- ** registers done. The only difference between the
- ** code just after the if and the body of the if is
- ** the goto yy_stack in the body. This way the test
- ** can be made before the choice of what to do is needed.
- */
- {
- /* length of production doubled with extra bit */
- register int yy_len = yyr2[ yy_n ];
-
- if ( !( yy_len & 01 ) )
- {
- yy_len >>= 1;
- yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
- yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
- *( yy_ps -= yy_len ) + 1;
- if ( yy_state >= YYLAST ||
- yychk[ yy_state =
- yyact[ yy_state ] ] != -yy_n )
- {
- yy_state = yyact[ yypgo[ yy_n ] ];
- }
- goto yy_stack;
- }
- yy_len >>= 1;
- yyval = ( yy_pv -= yy_len )[1]; /* $$ = $1 */
- yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
- *( yy_ps -= yy_len ) + 1;
- if ( yy_state >= YYLAST ||
- yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
- {
- yy_state = yyact[ yypgo[ yy_n ] ];
- }
- }
- /* save until reenter driver code */
- yystate = yy_state;
- yyps = yy_ps;
- yypv = yy_pv;
- }
- /*
- ** code supplied by user is placed in this switch
- */
-
- switch(yytmp){
-
- case 5:
- # line 204 "fortran.y"
- {
- /* Create id token for prog if unnamed. */
- if(current_module_hash == -1) {
- implied_id_token(&(yypvt[-0]),unnamed_prog);
- def_function(
- type_PROGRAM,&(yypvt[-0]),(Token*)NULL);
- current_module_hash =
- def_curr_module(&(yypvt[-0]));
- current_module_type = type_PROGRAM;
- }
- prev_stmt_class = curr_stmt_class;
- integer_context = FALSE;
- } /*NOTREACHED*/ break;
- case 6:
- # line 218 "fortran.y"
- {
- if(current_module_hash == -1) {
- implied_id_token(&(yypvt[-0]),unnamed_prog);
- def_function(
- type_PROGRAM,&(yypvt[-0]),(Token*)NULL);
- current_module_hash =
- def_curr_module(&(yypvt[-0]));
- current_module_type = type_PROGRAM;
- }
- if(prev_stmt_class != tok_RETURN)
- do_RETURN(current_module_hash,&(yypvt[-0]));
- END_processing(&(yyval));
- goto_flag = prev_goto = FALSE;
- prev_stmt_class = curr_stmt_class;
- } /*NOTREACHED*/ break;
- case 9:
- # line 243 "fortran.y"
- {
- if(executable_stmt)
- prev_goto = goto_flag;
- } /*NOTREACHED*/ break;
- case 10:
- # line 248 "fortran.y"
- {
- if(executable_stmt) {
- if(prev_goto)
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "No path to this statement");
- prev_goto = goto_flag;
- }
- } /*NOTREACHED*/ break;
- case 11:
- # line 259 "fortran.y"
- {
- exec_stmt_count = 0;
- executable_stmt = FALSE;
- } /*NOTREACHED*/ break;
- case 12:
- # line 264 "fortran.y"
- {
- executable_stmt = FALSE;
- } /*NOTREACHED*/ break;
- case 13:
- # line 268 "fortran.y"
- { /* handle statement functions correctly */
- if(is_true(STMT_FUNCTION_EXPR, yypvt[-0].subclass)
- && stmt_sequence_no <= seq_stmt_fun) {
- stmt_sequence_no = seq_stmt_fun;
- executable_stmt = FALSE;
- }
- else {
- stmt_sequence_no = seq_exec;
- ++exec_stmt_count;
- executable_stmt = TRUE;
- }
- } /*NOTREACHED*/ break;
- case 14:
- # line 281 "fortran.y"
- {
- stmt_sequence_no = seq_exec;
- ++exec_stmt_count;
- executable_stmt = TRUE;
- } /*NOTREACHED*/ break;
- case 15:
- # line 287 "fortran.y"
- {
- executable_stmt = TRUE;
- if(stmt_sequence_no == 0)
- stmt_sequence_no = seq_header;
- complex_const_allowed = FALSE; /* turn off flags */
- inside_format=FALSE;
- integer_context = FALSE;
- yyerrok; /* (error message already given) */
- } /*NOTREACHED*/ break;
- case 16:
- # line 299 "fortran.y"
- {
- current_module_type = type_PROGRAM;
- } /*NOTREACHED*/ break;
- case 17:
- # line 303 "fortran.y"
- {
- current_module_type = type_SUBROUTINE;
- } /*NOTREACHED*/ break;
- case 18:
- # line 307 "fortran.y"
- {
- current_module_type = type_SUBROUTINE;
- } /*NOTREACHED*/ break;
- case 19:
- # line 311 "fortran.y"
- {
- current_module_type = type_BLOCK_DATA;
- } /*NOTREACHED*/ break;
- case 23:
- # line 324 "fortran.y"
- {
- #ifdef ALLOW_INCLUDE
- if(f77_standard) {
- nonstandard(yypvt[-2].line_num,yypvt[-2].col_num);
- }
- open_include_file(yypvt[-1].value.string);
- #else
- syntax_error(yypvt[-2].line_num,yypvt[-2].col_num,
- "statement not permitted");
- #endif
- } /*NOTREACHED*/ break;
- case 24:
- # line 344 "fortran.y"
- {
- if(stmt_sequence_no < seq_implicit) {
- stmt_sequence_no = seq_implicit;
- }
- goto_flag = prev_goto = FALSE;
- } /*NOTREACHED*/ break;
- case 25:
- # line 351 "fortran.y"
- {
- if(stmt_sequence_no < seq_implicit) {
- stmt_sequence_no = seq_implicit;
- }
- } /*NOTREACHED*/ break;
- case 26:
- # line 357 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- if(stmt_sequence_no < seq_implicit) {
- stmt_sequence_no = seq_implicit;
- }
- }
- } /*NOTREACHED*/ break;
- case 27:
- # line 369 "fortran.y"
- {
- if(stmt_sequence_no > seq_implicit) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_implicit;
- }
- } /*NOTREACHED*/ break;
- case 28:
- # line 379 "fortran.y"
- {
- if(stmt_sequence_no < seq_stmt_fun) {
- stmt_sequence_no = seq_stmt_fun;
- }
- } /*NOTREACHED*/ break;
- case 29:
- # line 385 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 30:
- # line 395 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 31:
- # line 405 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 32:
- # line 415 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 33:
- # line 425 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 34:
- # line 435 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 35:
- # line 445 "fortran.y"
- {
- if(stmt_sequence_no > seq_specif) {
- syntax_error(yypvt[-0].line_num, NO_COL_NUM,
- "Statement out of order.");
- }
- else {
- stmt_sequence_no = seq_specif;
- }
- } /*NOTREACHED*/ break;
- case 36:
- # line 460 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 37:
- # line 464 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 38:
- # line 468 "fortran.y"
- {
- goto_flag=TRUE;
- } /*NOTREACHED*/ break;
- case 39:
- # line 472 "fortran.y"
- {
- goto_flag=FALSE; /* fallthru allowed */
- } /*NOTREACHED*/ break;
- case 40:
- # line 476 "fortran.y"
- {
- goto_flag=TRUE;
- } /*NOTREACHED*/ break;
- case 41:
- # line 480 "fortran.y"
- {
- goto_flag=TRUE;
- } /*NOTREACHED*/ break;
- case 42:
- # line 484 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 43:
- # line 488 "fortran.y"
- {
- goto_flag=TRUE;
- } /*NOTREACHED*/ break;
- case 44:
- # line 492 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 45:
- # line 496 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 46:
- # line 500 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 47:
- # line 504 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 48:
- # line 508 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 49:
- # line 512 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 50:
- # line 516 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 51:
- # line 520 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 52:
- # line 524 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 53:
- # line 528 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 54:
- # line 532 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 55:
- # line 536 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 56:
- # line 540 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 57:
- # line 544 "fortran.y"
- {
- goto_flag=TRUE;
- } /*NOTREACHED*/ break;
- case 58:
- # line 551 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 59:
- # line 555 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 60:
- # line 559 "fortran.y"
- {
- prev_goto = goto_flag =FALSE;
- } /*NOTREACHED*/ break;
- case 61:
- # line 563 "fortran.y"
- {
- prev_goto = goto_flag =FALSE;
- } /*NOTREACHED*/ break;
- case 62:
- # line 567 "fortran.y"
- {
- prev_goto = goto_flag =FALSE;
- } /*NOTREACHED*/ break;
- case 63:
- # line 571 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 64:
- # line 575 "fortran.y"
- {
- goto_flag=FALSE;
- } /*NOTREACHED*/ break;
- case 65:
- # line 581 "fortran.y"
- {check_seq_header(&(yypvt[-0]));} /*NOTREACHED*/ break;
- case 66:
- # line 583 "fortran.y"
- {
- def_function(
- type_PROGRAM,&(yypvt[-1]),(Token*)NULL);
- current_module_hash =
- def_curr_module(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 67:
- # line 596 "fortran.y"
- {
- do_ENTRY(&(yypvt[-1]),(Token*)NULL
- ,current_module_hash);
- } /*NOTREACHED*/ break;
- case 68:
- # line 601 "fortran.y"
- {
- do_ENTRY(&(yypvt[-4]),&(yypvt[-2])
- ,current_module_hash);
- if(debug_parser)
- print_exprlist("entry stmt",&(yypvt[-2]));
- } /*NOTREACHED*/ break;
- case 70:
- # line 615 "fortran.y"
- {
- def_function(
- current_datatype,&(yypvt[-1]),(Token*)NULL);
- current_module_hash=
- def_curr_module(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 71:
- # line 623 "fortran.y"
- {
- def_function(
- current_datatype,&(yypvt[-4]),&(yypvt[-2]));
- current_module_hash=
- def_curr_module(&(yypvt[-4]));
- if(debug_parser)
- print_exprlist("function stmt",&(yypvt[-2]));
- } /*NOTREACHED*/ break;
- case 72:
- # line 632 "fortran.y"
- {
- def_function(
- type_UNDECL,&(yypvt[-1]),(Token*)NULL);
- current_module_hash=
- def_curr_module(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 73:
- # line 640 "fortran.y"
- {
- def_function(
- type_UNDECL,&(yypvt[-4]),&(yypvt[-2]));
- current_module_hash=
- def_curr_module(&(yypvt[-4]));
- if(debug_parser)
- print_exprlist("function stmt",&(yypvt[-2]));
- } /*NOTREACHED*/ break;
- case 74:
- # line 652 "fortran.y"
- {
- check_seq_header(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 75:
- # line 659 "fortran.y"
- {
- check_seq_header(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 80:
- # line 678 "fortran.y"
- {
- def_function(
- type_SUBROUTINE,&(yypvt[-1]),(Token*)NULL);
- current_module_hash=
- def_curr_module(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 81:
- # line 686 "fortran.y"
- {
- def_function(
- type_SUBROUTINE,&(yypvt[-4]),&(yypvt[-2]));
- current_module_hash=
- def_curr_module(&(yypvt[-4]));
- if(debug_parser)
- print_exprlist("subroutine stmt",&(yypvt[-2]));
- } /*NOTREACHED*/ break;
- case 82:
- # line 697 "fortran.y"
- {
- check_seq_header(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 83:
- # line 703 "fortran.y"
- {
- yyval.next_token = (Token*)NULL;
- } /*NOTREACHED*/ break;
- case 85:
- # line 710 "fortran.y"
- {
- yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 86:
- # line 714 "fortran.y"
- {
- yyval.next_token = append_token(yypvt[-2].next_token,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 87:
- # line 720 "fortran.y"
- {
- def_arg_name(&(yypvt[-0]));
- primary_id_expr(&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 88:
- # line 725 "fortran.y"
- {
- yyval.class = type_byte(class_LABEL,type_LABEL);
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 90:
- # line 736 "fortran.y"
- {
- def_function(
- type_BLOCK_DATA,&(yypvt[-1]),(Token*)NULL);
- current_module_hash=
- def_curr_module(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 91:
- # line 745 "fortran.y"
- {
- check_seq_header(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 95:
- # line 759 "fortran.y"
- {
- def_array_dim(&(yypvt[-3]),&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 96:
- # line 766 "fortran.y"
- {
- yyval.class = 1;
- yyval.subclass = yypvt[-0].subclass;
- } /*NOTREACHED*/ break;
- case 97:
- # line 771 "fortran.y"
- {
- yyval.class = yypvt[-2].class + 1;
- yyval.subclass = yypvt[-2].subclass *
- yypvt[-0].subclass;
- } /*NOTREACHED*/ break;
- case 98:
- # line 779 "fortran.y"
- {
- yyval.subclass = yypvt[-0].value.integer;
- } /*NOTREACHED*/ break;
- case 99:
- # line 783 "fortran.y"
- {
- yyval.subclass = yypvt[-0].value.integer -
- yypvt[-2].value.integer + 1;
- } /*NOTREACHED*/ break;
- case 100:
- # line 788 "fortran.y"
- {
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 101:
- # line 792 "fortran.y"
- {
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 102:
- # line 798 "fortran.y"
- {equivalence_flag = TRUE;} /*NOTREACHED*/ break;
- case 103:
- # line 799 "fortran.y"
- {equivalence_flag = FALSE;} /*NOTREACHED*/ break;
- case 106:
- # line 807 "fortran.y"
- {
- equivalence(&(yypvt[-2]), &(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 107:
- # line 811 "fortran.y"
- {
- equivalence(&(yypvt[-2]), &(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 108:
- # line 818 "fortran.y"
- {
- def_equiv_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 109:
- # line 822 "fortran.y"
- {
- def_equiv_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 110:
- # line 826 "fortran.y"
- {
- def_equiv_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 114:
- # line 841 "fortran.y"
- {
- implied_id_token(&(yyval),blank_com_name);
- def_com_block(&(yyval), &(yypvt[-1]));
- if(is_true(COMMA_FLAG,yypvt[-1].subclass))
- syntax_error(
- yypvt[-1].line_num,yypvt[-1].col_num,
- "trailing comma");
- if(debug_parser)
- print_comlist("blank common",&(yypvt[-1]));
-
- } /*NOTREACHED*/ break;
- case 115:
- # line 853 "fortran.y"
- {
- if(is_true(COMMA_FLAG,yypvt[-1].subclass))
- syntax_error(
- yypvt[-1].line_num,yypvt[-1].col_num,
- "trailing comma");
-
- } /*NOTREACHED*/ break;
- case 116:
- # line 861 "fortran.y"
- {
- implied_id_token(&(yyval),blank_com_name);
- def_com_block(&(yyval),&(yypvt[-2]));
- if(is_true(COMMA_FLAG,yypvt[-1].subclass))
- syntax_error(
- yypvt[-1].line_num,yypvt[-1].col_num,
- "trailing comma");
- if(debug_parser)
- print_comlist("blank common",&(yypvt[-2]));
-
- } /*NOTREACHED*/ break;
- case 117:
- # line 878 "fortran.y"
- {
- yyval.subclass = yypvt[-0].subclass;
- } /*NOTREACHED*/ break;
- case 118:
- # line 882 "fortran.y"
- {
- yyval.subclass = yypvt[-0].subclass;
- yyval.line_num = yypvt[-0].line_num;
- yyval.col_num = yypvt[-0].col_num;
- } /*NOTREACHED*/ break;
- case 119:
- # line 890 "fortran.y"
- {
- def_com_block(&(yypvt[-1]),&(yypvt[-0]));
- yyval.subclass = yypvt[-0].subclass;
- yyval.line_num = yypvt[-0].line_num;
- yyval.col_num = yypvt[-0].col_num;
- if(debug_parser)
- print_comlist("labeled common",&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 120:
- # line 901 "fortran.y"
- {
- yyval = yypvt[-1];
- } /*NOTREACHED*/ break;
- case 121:
- # line 906 "fortran.y"
- {
- implied_id_token(&(yyval),blank_com_name);
- } /*NOTREACHED*/ break;
- case 122:
- # line 910 "fortran.y"
- {
- implied_id_token(&(yyval),blank_com_name);
- } /*NOTREACHED*/ break;
- case 123:
- # line 916 "fortran.y"
- {
- yyval.subclass = yypvt[-0].subclass;
- yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 124:
- # line 921 "fortran.y"
- {
- if(!is_true(COMMA_FLAG,yypvt[-1].subclass))
- syntax_error(
- yypvt[-1].line_num,yypvt[-1].col_num,
- "missing comma");
- yyval.subclass = yypvt[-0].subclass;
- yyval.line_num = yypvt[-0].line_num;
- yyval.col_num = yypvt[-0].col_num;
- yyval.next_token = append_token(yypvt[-1].next_token,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 125:
- # line 934 "fortran.y"
- { /* no comma */
- yyval.subclass = yypvt[-0].subclass;
- make_false(COMMA_FLAG,yyval.subclass);
- } /*NOTREACHED*/ break;
- case 126:
- # line 939 "fortran.y"
- { /* has comma */
- yyval.subclass = yypvt[-1].subclass;
- make_true(COMMA_FLAG,yyval.subclass);
- } /*NOTREACHED*/ break;
- case 127:
- # line 946 "fortran.y"
- {
- def_com_variable(&(yypvt[-0]));
- primary_id_expr(&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 128:
- # line 951 "fortran.y"
- {
- def_com_variable(&(yypvt[-0]));
- primary_id_expr(&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 134:
- # line 969 "fortran.y"
- {
- /* Only REAL*8 is actually recognized */
- if(current_datatype == type_REAL
- && yypvt[-0].value.integer == 8)
- current_datatype = type_DP;
-
- if(f77_standard) {
- nonstandard(yypvt[-0].line_num,yypvt[-0].col_num);
- }
- } /*NOTREACHED*/ break;
- case 136:
- # line 984 "fortran.y"
- {
- current_datatype = type_INTEGER;
- integer_context = TRUE;
- } /*NOTREACHED*/ break;
- case 137:
- # line 989 "fortran.y"
- {
- current_datatype = type_REAL;
- integer_context = TRUE;
- } /*NOTREACHED*/ break;
- case 138:
- # line 994 "fortran.y"
- {
- current_datatype = type_COMPLEX;
- integer_context = TRUE;
- } /*NOTREACHED*/ break;
- case 139:
- # line 999 "fortran.y"
- {
- current_datatype = type_LOGICAL;
- integer_context = TRUE;
- } /*NOTREACHED*/ break;
- case 140:
- # line 1006 "fortran.y"
- {
- current_datatype = type_DP;
- } /*NOTREACHED*/ break;
- case 141:
- # line 1012 "fortran.y"
- {
- current_datatype = type_STRING;
- integer_context = TRUE;
- } /*NOTREACHED*/ break;
- case 142:
- # line 1019 "fortran.y"
- {
- current_datatype = type_STRING;
- } /*NOTREACHED*/ break;
- case 145:
- # line 1029 "fortran.y"
- {
- declare_type(&(yypvt[-0]),current_datatype);
- } /*NOTREACHED*/ break;
- case 146:
- # line 1033 "fortran.y"
- {
- declare_type(&(yypvt[-0]),current_datatype);
- } /*NOTREACHED*/ break;
- case 149:
- # line 1043 "fortran.y"
- {
- declare_type(&(yypvt[-0]),current_datatype);
- } /*NOTREACHED*/ break;
- case 150:
- # line 1047 "fortran.y"
- {
- declare_type(&(yypvt[-2]),current_datatype);
- } /*NOTREACHED*/ break;
- case 151:
- # line 1051 "fortran.y"
- {
- declare_type(&(yypvt[-0]),current_datatype);
- } /*NOTREACHED*/ break;
- case 152:
- # line 1055 "fortran.y"
- {
- declare_type(&(yypvt[-2]),current_datatype);
- } /*NOTREACHED*/ break;
- case 153:
- # line 1062 "fortran.y"
- {implicit_flag=TRUE;} /*NOTREACHED*/ break;
- case 154:
- # line 1066 "fortran.y"
- {
- {implicit_flag=FALSE;}
- if(implicit_none) {
- syntax_error(yypvt[-2].line_num,yypvt[-2].col_num,
- "conflicts with IMPLICIT NONE");
- }
- else {
- implicit_type_given = TRUE;
- }
- } /*NOTREACHED*/ break;
- case 155:
- # line 1077 "fortran.y"
- {
- int h=yypvt[-1].value.integer;
- {implicit_flag=FALSE;}
- if( strcmp(hashtab[h].name,"NONE") == 0 ) {
- if(implicit_type_given) {
- syntax_error(yypvt[-2].line_num,yypvt[-2].col_num,
- "conflicts with IMPLICIT statement");
- }
- else {
- if(f77_standard)
- nonstandard(yypvt[-1].line_num,yypvt[-1].col_num);
- implicit_none = TRUE;
- }
- }
- else {
- syntax_error(yypvt[-1].line_num,yypvt[-1].col_num,
- "unknown keyword -- ignored");
- }
- } /*NOTREACHED*/ break;
- case 157:
- # line 1099 "fortran.y"
- {initial_flag = TRUE;} /*NOTREACHED*/ break;
- case 159:
- # line 1105 "fortran.y"
- {implicit_letter_flag = TRUE;} /*NOTREACHED*/ break;
- case 160:
- # line 1106 "fortran.y"
- {implicit_letter_flag = FALSE;} /*NOTREACHED*/ break;
- case 163:
- # line 1114 "fortran.y"
- {
- set_implicit_type(current_datatype,
- yypvt[-0].subclass,yypvt[-0].subclass);
- } /*NOTREACHED*/ break;
- case 164:
- # line 1119 "fortran.y"
- {
- set_implicit_type(current_datatype,
- yypvt[-2].subclass,yypvt[-0].subclass);
- } /*NOTREACHED*/ break;
- case 171:
- # line 1140 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 172:
- # line 1142 "fortran.y"
- {
- def_parameter(&(yypvt[-3]),&(yypvt[-0]));
- complex_const_allowed = FALSE;
- } /*NOTREACHED*/ break;
- case 174:
- # line 1153 "fortran.y"
- {
- def_ext_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 175:
- # line 1157 "fortran.y"
- {
- def_ext_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 177:
- # line 1167 "fortran.y"
- {
- def_intrins_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 178:
- # line 1171 "fortran.y"
- {
- def_intrins_name(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 183:
- # line 1186 "fortran.y"
- {
- ref_variable(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 184:
- # line 1190 "fortran.y"
- {
- def_com_block(&(yypvt[-1]),(Token*)NULL);
- } /*NOTREACHED*/ break;
- case 189:
- # line 1205 "fortran.y"
- {complex_const_allowed=TRUE;} /*NOTREACHED*/ break;
- case 190:
- # line 1207 "fortran.y"
- {complex_const_allowed=FALSE;} /*NOTREACHED*/ break;
- case 194:
- # line 1216 "fortran.y"
- {
- use_lvalue(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 201:
- # line 1232 "fortran.y"
- {
- use_parameter(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 203:
- # line 1239 "fortran.y"
- {
- use_parameter(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 204:
- # line 1245 "fortran.y"
- {
- use_implied_do_index(&(yypvt[-3]));
- } /*NOTREACHED*/ break;
- case 209:
- # line 1259 "fortran.y"
- {
- use_lvalue(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 211:
- # line 1267 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 212:
- # line 1268 "fortran.y"
- {
- assignment_stmt_type(&(yypvt[-3]),&(yypvt[-2]),
- &(yypvt[-0]));
- complex_const_allowed = FALSE;
- } /*NOTREACHED*/ break;
- case 213:
- # line 1274 "fortran.y"
- {
- /* Clear u-b-s flags spuriously set */
- if(is_true(STMT_FUNCTION_EXPR, yypvt[-5].subclass)
- && stmt_sequence_no <= seq_stmt_fun)
- stmt_function_stmt(&(yypvt[-5]));
- } /*NOTREACHED*/ break;
- case 217:
- # line 1291 "fortran.y"
- {
- do_ASSIGN(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 221:
- # line 1308 "fortran.y"
- {
- do_assigned_GOTO(&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 222:
- # line 1312 "fortran.y"
- {
- do_assigned_GOTO(&(yypvt[-4]));
- } /*NOTREACHED*/ break;
- case 223:
- # line 1316 "fortran.y"
- {
- do_assigned_GOTO(&(yypvt[-5]));
- } /*NOTREACHED*/ break;
- case 231:
- # line 1341 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 232:
- # line 1342 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-1].subclass)){
- use_variable(&(yypvt[-1]));
- }
- complex_const_allowed = FALSE;
-
- initial_flag = TRUE; /* for is_keyword */
- } /*NOTREACHED*/ break;
- case 234:
- # line 1354 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 235:
- # line 1355 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-1].subclass)){
- use_variable(&(yypvt[-1]));
- }
- complex_const_allowed = FALSE;
-
- initial_flag = TRUE;
- } /*NOTREACHED*/ break;
- case 240:
- # line 1385 "fortran.y"
- {
- use_lvalue(&(yypvt[-3]));
- use_variable(&(yypvt[-3]));
- } /*NOTREACHED*/ break;
- case 241:
- # line 1390 "fortran.y"
- {complex_const_allowed=TRUE;} /*NOTREACHED*/ break;
- case 242:
- # line 1391 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-2].subclass)){
- use_variable(&(yypvt[-2]));
- }
- complex_const_allowed=FALSE;
- /* (N.B. nonportability flagged in do_handle) */
- } /*NOTREACHED*/ break;
- case 243:
- # line 1399 "fortran.y"
- {complex_const_allowed=TRUE;} /*NOTREACHED*/ break;
- case 244:
- # line 1400 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-2].subclass)){
- use_variable(&(yypvt[-2]));
- }
- complex_const_allowed=FALSE;
- #ifdef ALLOW_DO_ENDO
- if(f77_standard)
- nonstandard(yypvt[-5].line_num,yypvt[-5].col_num);
- #else
- syntax_error(yypvt[-5].line_num,yypvt[-5].col_num,
- "Nonstandard syntax");
- #endif
- } /*NOTREACHED*/ break;
- case 247:
- # line 1418 "fortran.y"
- {
- #ifdef ALLOW_DO_ENDO
- if(f77_standard)
- nonstandard(yypvt[-0].line_num,yypvt[-0].col_num);
- #else
- syntax_error(yypvt[-0].line_num,yypvt[-0].col_num,
- "Nonstandard syntax");
- #endif
- } /*NOTREACHED*/ break;
- case 250:
- # line 1434 "fortran.y"
- {
- #ifdef ALLOW_DO_ENDO
- if(f77_standard)
- nonstandard(yypvt[-1].line_num,yypvt[-1].col_num);
- #else
- syntax_error(yypvt[-1].line_num,yypvt[-1].col_num,
- "Nonstandard syntax");
- #endif
- } /*NOTREACHED*/ break;
- case 251:
- # line 1444 "fortran.y"
- {
- #ifdef ALLOW_DO_ENDO
- if(f77_standard)
- nonstandard(yypvt[-1].line_num,yypvt[-1].col_num);
- #else
- syntax_error(yypvt[-1].line_num,yypvt[-1].col_num,
- "Nonstandard syntax");
- #endif
- } /*NOTREACHED*/ break;
- case 257:
- # line 1470 "fortran.y"
- {
- use_variable(&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 259:
- # line 1478 "fortran.y"
- {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
- case 261:
- # line 1480 "fortran.y"
- {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
- case 263:
- # line 1483 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 264:
- # line 1485 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 270:
- # line 1498 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 271:
- # line 1502 "fortran.y"
- {
- if(f77_standard)
- nonstandard(yypvt[-2].line_num,yypvt[-2].col_num);
- } /*NOTREACHED*/ break;
- case 272:
- # line 1507 "fortran.y"
- {
- if(f77_standard)
- nonstandard(yypvt[-4].line_num,yypvt[-4].col_num);
- } /*NOTREACHED*/ break;
- case 274:
- # line 1516 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 275:
- # line 1517 "fortran.y"
- {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
- case 277:
- # line 1521 "fortran.y"
- {
- if(f77_standard)
- nonstandard(yypvt[-2].line_num,yypvt[-2].col_num);
- } /*NOTREACHED*/ break;
- case 278:
- # line 1526 "fortran.y"
- {complex_const_allowed = TRUE;} /*NOTREACHED*/ break;
- case 279:
- # line 1527 "fortran.y"
- {complex_const_allowed = FALSE;} /*NOTREACHED*/ break;
- case 280:
- # line 1528 "fortran.y"
- {
- if(f77_standard)
- nonstandard(yypvt[-6].line_num,yypvt[-6].col_num);
- } /*NOTREACHED*/ break;
- case 281:
- # line 1536 "fortran.y"
- {
- ++control_item_count;
- } /*NOTREACHED*/ break;
- case 282:
- # line 1540 "fortran.y"
- {
- ++control_item_count;
- } /*NOTREACHED*/ break;
- case 283:
- # line 1549 "fortran.y"
- {
- /* This section awaits writing of code
- to handle i/o keywords. For now, just
- assume unit_id is used, whatever it is. */
- /** if( $3.class != '*'
- ** && is_true(ID_EXPR,$3.subclass)){
- ** use_variable(&($3));
- ** }
- */
- use_io_keyword(&(yypvt[-2]),&(yypvt[-0]),curr_stmt_class);
- } /*NOTREACHED*/ break;
- case 284:
- # line 1561 "fortran.y"
- {
- if( yypvt[-0].class != '*'
- && is_true(ID_EXPR,yypvt[-0].subclass)){
- /* WRITE(string,...) means store
- output in the string */
- if(curr_stmt_class == tok_WRITE
- && control_item_count == 0
- && datatype_of(yypvt[-0].class) == type_STRING)
- use_lvalue(&(yypvt[-0]));
-
- use_variable(&(yypvt[-0]));
- }
- } /*NOTREACHED*/ break;
- case 287:
- # line 1582 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- if( curr_stmt_class == tok_READ ||
- curr_stmt_class == tok_ACCEPT )
- use_lvalue(&(yypvt[-0]));
- else
- use_variable(&(yypvt[-0]));
- }
- } /*NOTREACHED*/ break;
- case 289:
- # line 1596 "fortran.y"
- {
- use_implied_do_index(&(yypvt[-3]));
- } /*NOTREACHED*/ break;
- case 290:
- # line 1602 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 292:
- # line 1607 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 294:
- # line 1612 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 298:
- # line 1620 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 301:
- # line 1627 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 304:
- # line 1634 "fortran.y"
- {control_item_count = 0;} /*NOTREACHED*/ break;
- case 307:
- # line 1648 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_variable(&(yypvt[-0]));
- }
- } /*NOTREACHED*/ break;
- case 309:
- # line 1657 "fortran.y"
- {inside_format=TRUE;} /*NOTREACHED*/ break;
- case 310:
- # line 1658 "fortran.y"
- {
- inside_format=FALSE;
- } /*NOTREACHED*/ break;
- case 325:
- # line 1685 "fortran.y"
- {
- if(f77_standard)
- nonstandard(yypvt[-0].line_num,yypvt[-0].col_num);
- } /*NOTREACHED*/ break;
- case 329:
- # line 1702 "fortran.y"
- {
- call_subr(&(yypvt[-0]),(Token*)NULL);
- complex_const_allowed = FALSE;
- } /*NOTREACHED*/ break;
- case 331:
- # line 1708 "fortran.y"
- {
- call_subr(&(yypvt[-2]),(Token*)NULL);
- complex_const_allowed = FALSE;
- } /*NOTREACHED*/ break;
- case 333:
- # line 1714 "fortran.y"
- {
- call_subr(&(yypvt[-3]),&(yypvt[-1]));
- if(debug_parser)
- print_exprlist("call stmt",&(yypvt[-1]));
- complex_const_allowed = FALSE;
- } /*NOTREACHED*/ break;
- case 335:
- # line 1723 "fortran.y"
- {
- complex_const_allowed = TRUE;
- yyval = yypvt[-0];
- } /*NOTREACHED*/ break;
- case 336:
- # line 1729 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_actual_arg(&(yypvt[-0]));
- use_variable(&(yypvt[-0]));
- }
- yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 337:
- # line 1737 "fortran.y"
- {
- yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 338:
- # line 1741 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_actual_arg(&(yypvt[-0]));
- use_variable(&(yypvt[-0]));
- }
- yyval.next_token = append_token(yypvt[-2].next_token,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 339:
- # line 1749 "fortran.y"
- {
- yyval.next_token = append_token(yypvt[-3].next_token,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 340:
- # line 1756 "fortran.y"
- {
- do_RETURN(current_module_hash,&(yypvt[-1]));
- } /*NOTREACHED*/ break;
- case 341:
- # line 1760 "fortran.y"
- {
- do_RETURN(current_module_hash,&(yypvt[-2]));
- } /*NOTREACHED*/ break;
- case 342:
- # line 1771 "fortran.y"
- {
- if( ! is_true(CONST_EXPR,yypvt[-0].subclass) ) {
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "constant expression expected");
- }
- else if( ! is_const_type(yypvt[-0].class) ){
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "arithmetic, char, or logical expression expected");
- }
- } /*NOTREACHED*/ break;
- case 343:
- # line 1787 "fortran.y"
- {
- if(debug_parser) {
- fprintf(list_fd,
- "\nexpr: class=0x%x subclass=0x%x",
- yypvt[-0].class,
- yypvt[-0].subclass);
- }
- } /*NOTREACHED*/ break;
- case 345:
- # line 1800 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 346:
- # line 1805 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 348:
- # line 1814 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 350:
- # line 1823 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 352:
- # line 1832 "fortran.y"
- {
- unexpr_type(&(yypvt[-1]),&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 354:
- # line 1840 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 356:
- # line 1850 "fortran.y"
- {
- unexpr_type(&(yypvt[-1]),&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 357:
- # line 1854 "fortran.y"
- {
- unexpr_type(&(yypvt[-1]),&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 358:
- # line 1858 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 359:
- # line 1863 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 361:
- # line 1872 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- if(div_check &&
- !is_true(CONST_EXPR,yypvt[-0].subclass)){
- warning(yypvt[-1].line_num,yypvt[-1].col_num,
- "Possible division by zero");
- }
- } /*NOTREACHED*/ break;
- case 362:
- # line 1882 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 364:
- # line 1891 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 366:
- # line 1900 "fortran.y"
- {
- binexpr_type(&(yypvt[-2]),&(yypvt[-1]),&(yypvt[-0])
- ,&(yyval));
- } /*NOTREACHED*/ break;
- case 367:
- # line 1907 "fortran.y"
- {
- DBGstr(primary<--id=,token_name(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 370:
- # line 1915 "fortran.y"
- {
- make_true(CONST_EXPR,yyval.subclass);
- make_true(NUM_CONST,yyval.subclass);
- } /*NOTREACHED*/ break;
- case 371:
- # line 1920 "fortran.y"
- {
- DBGstr(primary<--str=,yypvt[-0].value.string)
- yyval.class = type_byte(class_VAR,type_STRING);
- yyval.subclass = 0;
- make_true(CONST_EXPR,yyval.subclass);
- } /*NOTREACHED*/ break;
- case 372:
- # line 1927 "fortran.y"
- {
- DBGstr(primary<--h=,yypvt[-0].value.string)
- yyval.class = type_byte(class_VAR,type_HOLLERITH);
- yyval.subclass = 0;
- make_true(CONST_EXPR,yyval.subclass);
- if(port_check) {
- warning(yypvt[-0].line_num,yypvt[-0].col_num,
- "hollerith constant may not be portable");
- }
- } /*NOTREACHED*/ break;
- case 373:
- # line 1938 "fortran.y"
- {
- DBGstr(primary<--log=,yypvt[-0].value.string)
- yyval.class = type_byte(class_VAR,type_LOGICAL);
- yyval.subclass = 0;
- make_true(CONST_EXPR,yyval.subclass);
- } /*NOTREACHED*/ break;
- case 374:
- # line 1945 "fortran.y"
- {
- yyval = yypvt[-1];
- } /*NOTREACHED*/ break;
- case 375:
- # line 1951 "fortran.y"
- {
- yyval.class = type_byte(class_VAR,type_INTEGER);
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 376:
- # line 1956 "fortran.y"
- {
- yyval.class = type_byte(class_VAR,type_REAL);
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 377:
- # line 1961 "fortran.y"
- {
- yyval.class = type_byte(class_VAR,type_DP);
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 378:
- # line 1966 "fortran.y"
- {
- yyval.class = type_byte(class_VAR,type_COMPLEX);
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- case 379:
- # line 1974 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_variable(&(yypvt[-0]));
- }
- if(datatype_of(yypvt[-0].class) != type_INTEGER) {
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "expression must be integer type");
- }
- } /*NOTREACHED*/ break;
- case 380:
- # line 1988 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_variable(&(yypvt[-0]));
- }
- {
- int t=datatype_of(yypvt[-0].class);
- if(t != type_INTEGER && t != type_REAL
- && t != type_DP ) {
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "expression must be integer, real, or double precision type");
- }
- }
- } /*NOTREACHED*/ break;
- case 381:
- # line 2008 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_variable(&(yypvt[-0]));
- }
- if( ! is_true(CONST_EXPR,yypvt[-0].subclass) ) {
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "constant expression expected");
- }
- else
- if(datatype_of(yypvt[-0].class) != type_INTEGER){
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "integer expression expected");
- }
-
- } /*NOTREACHED*/ break;
- case 382:
- # line 2029 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_variable(&(yypvt[-0]));
- }
-
- if( datatype_of(yypvt[-0].class) != type_INTEGER ){
- syntax_error(
- yypvt[-0].line_num,yypvt[-0].col_num,
- "integer dimension expected");
- yyval.value.integer = 0;
- }
- else {
- if( is_true(CONST_EXPR,yypvt[-0].subclass) )
- yyval.value.integer =
- int_expr_value(&(yypvt[-0]));
- else /* must be dummy */
- yyval.value.integer = 0;
- }
- } /*NOTREACHED*/ break;
- case 383:
- # line 2055 "fortran.y"
- {
- if( is_true (ARRAY_ID_EXPR, yypvt[-3].subclass)){
- ref_array(&(yypvt[-3]),&(yypvt[-1]));
- if(debug_parser)
- print_exprlist("array lvalue",&(yypvt[-1]));
- /* array now becomes scalar */
- make_false(ARRAY_ID_EXPR,yyval.subclass);
- }
- else { /* statement-function */
- if(stmt_sequence_no > seq_stmt_fun) {
- syntax_error(
- yypvt[-3].line_num, NO_COL_NUM,
- "statement out of order");
- }
- def_stmt_function(&(yypvt[-3]),&(yypvt[-1]));
- /* remake token info */
- primary_id_expr(&(yypvt[-3]),&(yyval));
- if(debug_parser)
- print_exprlist("stmt function",&(yypvt[-1]));
- }
- } /*NOTREACHED*/ break;
- case 384:
- # line 2078 "fortran.y"
- {
-
- if( is_true(ARRAY_ID_EXPR,yypvt[-3].subclass) ) {
- ref_array(&(yypvt[-3]),&(yypvt[-1]));
- if(debug_parser)
- print_exprlist("array",&(yypvt[-1]));
- /* array now becomes scalar */
- make_false(ARRAY_ID_EXPR,yyval.subclass);
- }
- else {
- call_func(&(yypvt[-3]),&(yypvt[-1]));
- /* remake token info */
- func_ref_expr(&(yypvt[-3]),&(yypvt[-1])
- ,&(yyval));
- if(debug_parser)
- print_exprlist("function",&(yypvt[-1]));
- }
- } /*NOTREACHED*/ break;
- case 385:
- # line 2099 "fortran.y"
- {
- yyval.class = 0;
- yyval.next_token = NULL;
- } /*NOTREACHED*/ break;
- case 387:
- # line 2107 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_var_as_subscr(&(yypvt[-0]));
- }
- yyval.next_token = append_token((Token*)NULL,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 388:
- # line 2114 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-0].subclass)){
- use_var_as_subscr(&(yypvt[-0]));
- }
- yyval.next_token = append_token(yypvt[-2].next_token,&(yypvt[-0]));
- } /*NOTREACHED*/ break;
- case 394:
- # line 2133 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-2].subclass)){
- use_variable(&(yypvt[-2]));
- }
- } /*NOTREACHED*/ break;
- case 395:
- # line 2139 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-1].subclass)){
- use_variable(&(yypvt[-1]));
- }
- } /*NOTREACHED*/ break;
- case 396:
- # line 2145 "fortran.y"
- {
- if(is_true(ID_EXPR,yypvt[-3].subclass)){
- use_variable(&(yypvt[-3]));
- }
- if(is_true(ID_EXPR,yypvt[-1].subclass)){
- use_variable(&(yypvt[-1]));
- }
-
- } /*NOTREACHED*/ break;
- case 397:
- # line 2160 "fortran.y"
- {
- ref_variable(&(yypvt[-0]));
- primary_id_expr(&(yypvt[-0]),&(yyval));
- } /*NOTREACHED*/ break;
- case 406:
- # line 2189 "fortran.y"
- {
- yyval.class = type_byte(class_LABEL,type_LABEL);
- yyval.subclass = 0;
- } /*NOTREACHED*/ break;
- }
-
-
- goto yystack; /* reset registers in driver code */
- }
-