Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
00001 /* 00002 00003 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 00004 00005 This program is free software; you can redistribute it and/or modify it 00006 under the terms of version 2 of the GNU General Public License as 00007 published by the Free Software Foundation. 00008 00009 This program is distributed in the hope that it would be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 00013 Further, this software is distributed without any warranty that it is 00014 free of the rightful claim of any third person regarding infringement 00015 or the like. Any license provided herein, whether implied or 00016 otherwise, applies only to this software file. Patent licenses, if 00017 any, provided herein do not apply to combinations of this program with 00018 other software, or any other product whatsoever. 00019 00020 You should have received a copy of the GNU General Public License along 00021 with this program; if not, write the Free Software Foundation, Inc., 59 00022 Temple Place - Suite 330, Boston MA 02111-1307, USA. 00023 00024 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 00025 Mountain View, CA 94043, or: 00026 00027 http://www.sgi.com 00028 00029 For further information regarding this notice, see: 00030 00031 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00032 00033 */ 00034 00035 00036 00037 /* USMID: "\n@(#)5.0_pl/headers/src_input.h 5.3 09/01/99 12:24:50\n" */ 00038 00039 00040 /********************************************\ 00041 |* type specifiers used within this module. *| 00042 \********************************************/ 00043 00044 enum src_file_values {Stdin_Src, 00045 Input_Src, 00046 Include_Src }; 00047 00048 typedef enum src_file_values src_file_type; 00049 00050 struct src_stk_entry {Uint file_line : 32; 00051 Uint file_idx : 32; 00052 src_file_type file_type : 4; 00053 src_form_type prev_src_form : 4; 00054 Uint cif_file_id : 24; 00055 Uint global_line_first_idx : 32; 00056 boolean do_not_fclose; 00057 FILE *file_ptr; 00058 char path_name[MAX_PATH_NAME_SIZE]; 00059 }; 00060 00061 enum dir_prefix_values {Cdir_Dir, 00062 Cmic_Dir, 00063 Cpar_Dir, 00064 Cstar_Dir, 00065 Cdollar_Dir, 00066 Comp_Dir, 00067 Cdbg_Dir, 00068 Csgi_Dir, 00069 Copenad_Dir /* eraxxon: OpenAD directive */ 00070 }; 00071 00072 typedef enum dir_prefix_values dir_prefix_type; 00073 00074 00075 /******************************************************************************\ 00076 |* In the following struct for msg queueing, the value of order *| 00077 |* determines the order of possible str and arg arguments. *| 00078 |* *| 00079 |* order implies *| 00080 |* ----- ------- *| 00081 |* 0 no args *| 00082 |* 1 str *| 00083 |* 2 arg *| 00084 |* 3 str, arg *| 00085 |* 4 arg, str *| 00086 |* *| 00087 \******************************************************************************/ 00088 00089 struct msg_queue_entry {Uint line_num : 24; 00090 Uint col_num : 8; 00091 Uint msg_num : 24; 00092 msg_severities_type sever : 8; 00093 Uint order : 8; 00094 Uint str_len : 24; 00095 Uint next_msg : 32; 00096 long arg; 00097 }; 00098 00099 00100 typedef struct msg_queue_entry msg_queue_type; 00101 typedef struct msg_queue_entry next_msg_queue_type; 00102 typedef struct src_stk_entry src_stk_type; 00103 00104 00105 next_msg_queue_type *next_msg_queue; 00106 long next_msg_queue_idx = NULL_IDX; 00107 int next_msg_queue_inc = 5; 00108 int next_msg_queue_init_size = 5; /* Same as increment */ 00109 long next_msg_queue_limit = OUR_LONG_MAX; 00110 int next_msg_queue_num_wds = NUM_MQ_WDS; 00111 long next_msg_queue_size = 0; 00112 long next_msg_queue_largest_idx = NULL_IDX; 00113 00114 msg_queue_type *msg_queue; 00115 long msg_queue_idx = NULL_IDX; 00116 int msg_queue_inc = 5; 00117 int msg_queue_init_size = 5; /* Same as increment */ 00118 long msg_queue_limit = OUR_LONG_MAX; 00119 int msg_queue_num_wds = NUM_MQ_WDS; 00120 long msg_queue_size = 0; 00121 long msg_queue_largest_idx = NULL_IDX; 00122 00123 00124 src_stk_type * RESTRICT src_stk; 00125 long src_stk_idx = NULL_IDX; 00126 int src_stk_inc = 2; 00127 int src_stk_init_size = 3; 00128 long src_stk_limit = OUR_LONG_MAX; 00129 int src_stk_num_wds = HOST_BYTES_TO_WORDS( 00130 sizeof(src_stk_type)); 00131 long src_stk_size = 0; 00132 long src_stk_largest_idx = NULL_IDX; 00133 00134 00135 /****************************************\ 00136 |* static data used within this module. *| 00137 \****************************************/ 00138 00139 boolean change_source_form = FALSE; 00140 int char_delim; 00141 int continuation_count; 00142 int digit_start; 00143 line_type expected_line; 00144 boolean first_line = TRUE; 00145 boolean first_pound_line = TRUE; 00146 boolean cif_file_rec_issued = FALSE; 00147 int full_include_name_idx = NULL_IDX; 00148 boolean ignore_source_line = FALSE; 00149 00150 char include_file[MAX_FILE_NAME_SIZE]; 00151 int include_stmt_file_line = 0; 00152 int include_stmt_file_col = 0; 00153 boolean include_switch; 00154 boolean include_complete; 00155 boolean include_found; 00156 00157 boolean issue_obsolete_src_form_msg = FALSE; 00158 00159 char pound_file[MAX_FILE_NAME_SIZE]; 00160 boolean change_orig_src_file = FALSE; 00161 00162 int line_size; 00163 int lines_in_buf; 00164 char num_str[5]; 00165 int num_idx; 00166 00167 # ifdef _FRONTEND_CONDITIONAL_COMP 00168 int nxt_line[MAX_STMT_CHAR_SIZE]; 00169 int nxt_line_col[MAX_STMT_CHAR_SIZE]; 00170 # else 00171 int nxt_line[MAX_SRC_LINE_SIZE]; 00172 int nxt_line_col[MAX_SRC_LINE_SIZE]; 00173 # endif 00174 int nxt_line_idx; 00175 boolean nxt_line_label; 00176 int nxt_line_length; 00177 int nxt_line_num; 00178 line_type nxt_line_type; 00179 int nxt_line_EOL; 00180 int nxt_line_prefix_len; 00181 boolean nxt_line_mp_line; 00182 00183 int nxt_line_start_idx[MAX_FIXED_LINES+1]; 00184 int nxt_line_end_idx[MAX_FIXED_LINES+1]; 00185 boolean pp_nxt_line_label[MAX_FIXED_LINES+1]; 00186 int pp_nxt_line_length[MAX_FIXED_LINES+1]; 00187 int pp_nxt_line_num[MAX_FIXED_LINES+1]; 00188 line_type pp_nxt_line_type[MAX_FIXED_LINES+1]; 00189 int pp_nxt_line_EOL[MAX_FIXED_LINES+1]; 00190 int pp_nxt_line_prefix_len[MAX_FIXED_LINES+1]; 00191 int pp_nxt_line_idx[MAX_FIXED_LINES+1]; 00192 boolean pp_nxt_line_mp_line[MAX_FIXED_LINES+1]; 00193 boolean pp_change_source_form[MAX_FIXED_LINES+1]; 00194 dir_prefix_type pp_nxt_line_actual_dir_prefix[MAX_FIXED_LINES+1]; 00195 dir_prefix_type pp_nxt_line_dir_prefix[MAX_FIXED_LINES+1]; 00196 line_type pp_expected_line[MAX_FIXED_LINES+1]; 00197 int pp_orig_line_size[MAX_FIXED_LINES+1]; 00198 00199 int nxt_line_num_lines; 00200 int pp_line_idx; 00201 00202 int extra_nxt_line = NULL_IDX; 00203 00204 int prev_char_delim = 0; 00205 int prev_char_delim_idx; 00206 int previous_char; 00207 boolean seen_lp_eq_slash; 00208 int starting_pt; 00209 00210 int stmt_buf[MAX_STMT_CHAR_SIZE]; 00211 int stmt_buf_col[MAX_STMT_CHAR_SIZE]; 00212 int stmt_buf_idx; 00213 line_type stmt_buf_type; 00214 int stmt_buf_EOS_idx; 00215 int stmt_line_start_idx[MAX_FIXED_LINES+1]; 00216 int stmt_line_end_idx[MAX_FIXED_LINES+1]; 00217 int stmt_line_idx; 00218 int stmt_line_num[MAX_FIXED_LINES+1]; 00219 int stmt_line_offset[MAX_FIXED_LINES+1]; 00220 int stmt_prefix_len; 00221 00222 dir_prefix_type stmt_buf_dir_prefix; 00223 dir_prefix_type nxt_line_dir_prefix; 00224 00225 dir_prefix_type line_dir_prefix[MAX_FIXED_LINES+1]; 00226 dir_prefix_type nxt_line_actual_dir_prefix; 00227 00228 /* chars predefined as ints */ 00229 00230 int lc_a = 'a'; 00231 int uc_a = 'A'; 00232 int lc_b = 'b'; 00233 int uc_b = 'B'; 00234 int lc_c = 'c'; 00235 int uc_c = 'C'; 00236 int lc_d = 'd'; 00237 int uc_d = 'D'; 00238 int lc_e = 'e'; 00239 int uc_e = 'E'; 00240 int lc_f = 'f'; 00241 int uc_f = 'F'; 00242 int lc_g = 'g'; 00243 int uc_g = 'G'; 00244 int lc_h = 'h'; 00245 int uc_h = 'H'; 00246 int lc_i = 'i'; 00247 int uc_i = 'I'; 00248 int lc_l = 'l'; 00249 int uc_l = 'L'; 00250 int lc_m = 'm'; 00251 int uc_m = 'M'; 00252 int lc_n = 'n'; 00253 int uc_n = 'N'; 00254 int lc_o = 'o'; 00255 int uc_o = 'O'; 00256 int lc_p = 'p'; 00257 int uc_p = 'P'; 00258 int lc_r = 'r'; 00259 int uc_r = 'R'; 00260 int lc_s = 's'; 00261 int uc_s = 'S'; 00262 int lc_t = 't'; 00263 int uc_t = 'T'; 00264 int dot = '.'; 00265 int star = '*'; 00266 int quote = '\''; 00267 int db_quote = '"'; 00268 int blank = ' '; 00269 #if 0 00270 int marked_blank = ((1 << SIGN_BIT) | ' '); 00271 #else 00272 /*int marked_blank = (int)(0x80000000 | ' ');*/ 00273 int marked_blank = (int)(((unsigned)1 << SIGN_BIT) | ' '); 00274 #endif 00275 int tab = '\t'; 00276 int newline = '\n'; 00277 int bang = '!'; 00278 int lparen = '('; 00279 int rparen = ')'; 00280 int lbrkt = '['; 00281 int rbrkt = ']'; 00282 int equal = '='; 00283 int slash = '/'; 00284 int underscore = '_'; 00285 int dollar = '$'; 00286 int amp = '&'; 00287 int percent = '%'; 00288 int at_sign = '@'; 00289 int semi_colon = ';'; 00290 int colon = ':'; 00291 int eos = 0; 00292 int one = '1'; 00293 int nine = '9'; 00294 int zero = '0'; 00295 int comma = ','; 00296 int pound = '#'; 00297 int greater = '>'; 00298 int less = '<'; 00299 00300 int format_str[7][2] = { {'F', 'f'}, 00301 {'O', 'o'}, 00302 {'R', 'r'}, 00303 {'M', 'm'}, 00304 {'A', 'a'}, 00305 {'T', 't'}, 00306 {'(', '('}}; 00307 00308 int format_idx = -1; 00309 boolean in_format = FALSE; 00310 int format_start_idx; 00311 00312 /* The following flags allow certain messages to be issued only once. */ 00313 static boolean have_issued_msg_37; 00314 00315 /* The following table is used to identify the class of look ahead characters */ 00316 ch_class_type ch_class[MAX_ASCII_CHARS] = { 00317 Ch_Class_EOS, /* NULL*/ 00318 Ch_Class_Symbol, /* SOH */ 00319 Ch_Class_Symbol, /* STX */ 00320 Ch_Class_Symbol, /* ETX */ 00321 Ch_Class_Symbol, /* EOT */ 00322 Ch_Class_Symbol, /* ENQ */ 00323 Ch_Class_Symbol, /* ACK */ 00324 Ch_Class_Symbol, /* BEL */ 00325 Ch_Class_Symbol, /* BS */ 00326 Ch_Class_Symbol, /* TAB */ 00327 Ch_Class_Symbol, /* LF */ 00328 Ch_Class_Symbol, /* VT */ 00329 Ch_Class_Symbol, /* FF */ 00330 Ch_Class_Symbol, /* CR */ 00331 Ch_Class_Symbol, /* SO */ 00332 Ch_Class_Symbol, /* SI */ 00333 Ch_Class_Symbol, /* DLE */ 00334 Ch_Class_Symbol, /* DC1 */ 00335 Ch_Class_Symbol, /* DC2 */ 00336 Ch_Class_Symbol, /* DC3 */ 00337 Ch_Class_Symbol, /* DC4 */ 00338 Ch_Class_Symbol, /* NAK */ 00339 Ch_Class_Symbol, /* SYN */ 00340 Ch_Class_Symbol, /* ETB */ 00341 Ch_Class_Symbol, /* CAN */ 00342 Ch_Class_Symbol, /* EM */ 00343 Ch_Class_Symbol, /* SUB */ 00344 Ch_Class_Symbol, /* ESC */ 00345 Ch_Class_Symbol, /* FS */ 00346 Ch_Class_Symbol, /* GS */ 00347 Ch_Class_Symbol, /* RS */ 00348 Ch_Class_Symbol, /* US */ 00349 Ch_Class_Symbol, /* SP */ 00350 Ch_Class_Symbol, /* ! */ 00351 Ch_Class_Symbol, /* " */ 00352 Ch_Class_Symbol, /* # */ 00353 Ch_Class_Symbol, /* $ */ 00354 Ch_Class_Symbol, /* % */ 00355 Ch_Class_Symbol, /* & */ 00356 Ch_Class_Symbol, /* ' */ 00357 Ch_Class_Symbol, /* ( */ 00358 Ch_Class_Symbol, /* ) */ 00359 Ch_Class_Symbol, /* * */ 00360 Ch_Class_Symbol, /* + */ 00361 Ch_Class_Symbol, /* , */ 00362 Ch_Class_Symbol, /* - */ 00363 Ch_Class_Symbol, /* . */ 00364 Ch_Class_Symbol, /* / */ 00365 Ch_Class_Digit, /* 0 */ 00366 Ch_Class_Digit, /* 1 */ 00367 Ch_Class_Digit, /* 2 */ 00368 Ch_Class_Digit, /* 3 */ 00369 Ch_Class_Digit, /* 4 */ 00370 Ch_Class_Digit, /* 5 */ 00371 Ch_Class_Digit, /* 6 */ 00372 Ch_Class_Digit, /* 7 */ 00373 Ch_Class_Digit, /* 8 */ 00374 Ch_Class_Digit, /* 9 */ 00375 Ch_Class_Symbol, /* : */ 00376 Ch_Class_Symbol, /* ; */ 00377 Ch_Class_Symbol, /* < */ 00378 Ch_Class_Symbol, /* = */ 00379 Ch_Class_Symbol, /* > */ 00380 Ch_Class_Symbol, /* ? */ 00381 Ch_Class_Symbol, /* @ */ 00382 Ch_Class_Letter, /* A */ 00383 Ch_Class_Letter, /* B */ 00384 Ch_Class_Letter, /* C */ 00385 Ch_Class_Letter, /* D */ 00386 Ch_Class_Letter, /* E */ 00387 Ch_Class_Letter, /* F */ 00388 Ch_Class_Letter, /* G */ 00389 Ch_Class_Letter, /* H */ 00390 Ch_Class_Letter, /* I */ 00391 Ch_Class_Letter, /* J */ 00392 Ch_Class_Letter, /* K */ 00393 Ch_Class_Letter, /* L */ 00394 Ch_Class_Letter, /* M */ 00395 Ch_Class_Letter, /* N */ 00396 Ch_Class_Letter, /* O */ 00397 Ch_Class_Letter, /* P */ 00398 Ch_Class_Letter, /* Q */ 00399 Ch_Class_Letter, /* R */ 00400 Ch_Class_Letter, /* S */ 00401 Ch_Class_Letter, /* T */ 00402 Ch_Class_Letter, /* U */ 00403 Ch_Class_Letter, /* V */ 00404 Ch_Class_Letter, /* W */ 00405 Ch_Class_Letter, /* X */ 00406 Ch_Class_Letter, /* Y */ 00407 Ch_Class_Letter, /* Z */ 00408 Ch_Class_Symbol, /* [ */ 00409 Ch_Class_Symbol, /* \ */ 00410 Ch_Class_Symbol, /* ] */ 00411 Ch_Class_Symbol, /* ^ */ 00412 Ch_Class_Symbol, /* _ */ 00413 Ch_Class_Symbol, /* ` */ 00414 Ch_Class_Letter, /* a */ 00415 Ch_Class_Letter, /* b */ 00416 Ch_Class_Letter, /* c */ 00417 Ch_Class_Letter, /* d */ 00418 Ch_Class_Letter, /* e */ 00419 Ch_Class_Letter, /* f */ 00420 Ch_Class_Letter, /* g */ 00421 Ch_Class_Letter, /* h */ 00422 Ch_Class_Letter, /* i */ 00423 Ch_Class_Letter, /* j */ 00424 Ch_Class_Letter, /* k */ 00425 Ch_Class_Letter, /* l */ 00426 Ch_Class_Letter, /* m */ 00427 Ch_Class_Letter, /* n */ 00428 Ch_Class_Letter, /* o */ 00429 Ch_Class_Letter, /* p */ 00430 Ch_Class_Letter, /* q */ 00431 Ch_Class_Letter, /* r */ 00432 Ch_Class_Letter, /* s */ 00433 Ch_Class_Letter, /* t */ 00434 Ch_Class_Letter, /* u */ 00435 Ch_Class_Letter, /* v */ 00436 Ch_Class_Letter, /* w */ 00437 Ch_Class_Letter, /* x */ 00438 Ch_Class_Letter, /* y */ 00439 Ch_Class_Letter, /* z */ 00440 Ch_Class_Symbol, /* { */ 00441 Ch_Class_Symbol, /* | */ 00442 Ch_Class_Symbol, /* } */ 00443 Ch_Class_Symbol, /* ~ */ 00444 Ch_Class_Symbol, /* DEL */ 00445 Ch_Class_Symbol, /* 128 */ 00446 Ch_Class_Symbol, /* 129 */ 00447 Ch_Class_Symbol, /* 130 */ 00448 Ch_Class_Symbol, /* 131 */ 00449 Ch_Class_Symbol, /* 132 */ 00450 Ch_Class_Symbol, /* 133 */ 00451 Ch_Class_Symbol, /* 134 */ 00452 Ch_Class_Symbol, /* 135 */ 00453 Ch_Class_Symbol, /* 136 */ 00454 Ch_Class_Symbol, /* 137 */ 00455 Ch_Class_Symbol, /* 138 */ 00456 Ch_Class_Symbol, /* 139 */ 00457 Ch_Class_Symbol, /* 140 */ 00458 Ch_Class_Symbol, /* 141 */ 00459 Ch_Class_Symbol, /* 142 */ 00460 Ch_Class_Symbol, /* 143 */ 00461 Ch_Class_Symbol, /* 144 */ 00462 Ch_Class_Symbol, /* 145 */ 00463 Ch_Class_Symbol, /* 146 */ 00464 Ch_Class_Symbol, /* 147 */ 00465 Ch_Class_Symbol, /* 148 */ 00466 Ch_Class_Symbol, /* 149 */ 00467 Ch_Class_Symbol, /* 150 */ 00468 Ch_Class_Symbol, /* 151 */ 00469 Ch_Class_Symbol, /* 152 */ 00470 Ch_Class_Symbol, /* 153 */ 00471 Ch_Class_Symbol, /* 154 */ 00472 Ch_Class_Symbol, /* 155 */ 00473 Ch_Class_Symbol, /* 156 */ 00474 Ch_Class_Symbol, /* 157 */ 00475 Ch_Class_Symbol, /* 158 */ 00476 Ch_Class_Symbol, /* 159 */ 00477 Ch_Class_Symbol, /* 160 */ 00478 Ch_Class_Symbol, /* 161 */ 00479 Ch_Class_Symbol, /* 162 */ 00480 Ch_Class_Symbol, /* 163 */ 00481 Ch_Class_Symbol, /* 164 */ 00482 Ch_Class_Symbol, /* 165 */ 00483 Ch_Class_Symbol, /* 166 */ 00484 Ch_Class_Symbol, /* 167 */ 00485 Ch_Class_Symbol, /* 168 */ 00486 Ch_Class_Symbol, /* 169 */ 00487 Ch_Class_Symbol, /* 170 */ 00488 Ch_Class_Symbol, /* 171 */ 00489 Ch_Class_Symbol, /* 172 */ 00490 Ch_Class_Symbol, /* 173 */ 00491 Ch_Class_Symbol, /* 174 */ 00492 Ch_Class_Symbol, /* 175 */ 00493 Ch_Class_Symbol, /* 176 */ 00494 Ch_Class_Symbol, /* 177 */ 00495 Ch_Class_Symbol, /* 178 */ 00496 Ch_Class_Symbol, /* 179 */ 00497 Ch_Class_Symbol, /* 180 */ 00498 Ch_Class_Symbol, /* 181 */ 00499 Ch_Class_Symbol, /* 182 */ 00500 Ch_Class_Symbol, /* 183 */ 00501 Ch_Class_Symbol, /* 184 */ 00502 Ch_Class_Symbol, /* 185 */ 00503 Ch_Class_Symbol, /* 186 */ 00504 Ch_Class_Symbol, /* 187 */ 00505 Ch_Class_Symbol, /* 188 */ 00506 Ch_Class_Symbol, /* 189 */ 00507 Ch_Class_Symbol, /* 190 */ 00508 Ch_Class_Symbol, /* 191 */ 00509 Ch_Class_Symbol, /* 192 */ 00510 Ch_Class_Symbol, /* 193 */ 00511 Ch_Class_Symbol, /* 194 */ 00512 Ch_Class_Symbol, /* 195 */ 00513 Ch_Class_Symbol, /* 196 */ 00514 Ch_Class_Symbol, /* 197 */ 00515 Ch_Class_Symbol, /* 198 */ 00516 Ch_Class_Symbol, /* 199 */ 00517 Ch_Class_Symbol, /* 200 */ 00518 Ch_Class_Symbol, /* 201 */ 00519 Ch_Class_Symbol, /* 202 */ 00520 Ch_Class_Symbol, /* 203 */ 00521 Ch_Class_Symbol, /* 204 */ 00522 Ch_Class_Symbol, /* 205 */ 00523 Ch_Class_Symbol, /* 206 */ 00524 Ch_Class_Symbol, /* 207 */ 00525 Ch_Class_Symbol, /* 208 */ 00526 Ch_Class_Symbol, /* 209 */ 00527 Ch_Class_Symbol, /* 210 */ 00528 Ch_Class_Symbol, /* 211 */ 00529 Ch_Class_Symbol, /* 212 */ 00530 Ch_Class_Symbol, /* 213 */ 00531 Ch_Class_Symbol, /* 214 */ 00532 Ch_Class_Symbol, /* 215 */ 00533 Ch_Class_Symbol, /* 216 */ 00534 Ch_Class_Symbol, /* 217 */ 00535 Ch_Class_Symbol, /* 218 */ 00536 Ch_Class_Symbol, /* 219 */ 00537 Ch_Class_Symbol, /* 220 */ 00538 Ch_Class_Symbol, /* 221 */ 00539 Ch_Class_Symbol, /* 222 */ 00540 Ch_Class_Symbol, /* 223 */ 00541 Ch_Class_Symbol, /* 224 */ 00542 Ch_Class_Symbol, /* 225 */ 00543 Ch_Class_Symbol, /* 226 */ 00544 Ch_Class_Symbol, /* 227 */ 00545 Ch_Class_Symbol, /* 228 */ 00546 Ch_Class_Symbol, /* 229 */ 00547 Ch_Class_Symbol, /* 230 */ 00548 Ch_Class_Symbol, /* 231 */ 00549 Ch_Class_Symbol, /* 232 */ 00550 Ch_Class_Symbol, /* 233 */ 00551 Ch_Class_Symbol, /* 234 */ 00552 Ch_Class_Symbol, /* 235 */ 00553 Ch_Class_Symbol, /* 236 */ 00554 Ch_Class_Symbol, /* 237 */ 00555 Ch_Class_Symbol, /* 238 */ 00556 Ch_Class_Symbol, /* 239 */ 00557 Ch_Class_Symbol, /* 240 */ 00558 Ch_Class_Symbol, /* 241 */ 00559 Ch_Class_Symbol, /* 242 */ 00560 Ch_Class_Symbol, /* 243 */ 00561 Ch_Class_Symbol, /* 244 */ 00562 Ch_Class_Symbol, /* 245 */ 00563 Ch_Class_Symbol, /* 246 */ 00564 Ch_Class_Symbol, /* 247 */ 00565 Ch_Class_Symbol, /* 248 */ 00566 Ch_Class_Symbol, /* 249 */ 00567 Ch_Class_Symbol, /* 250 */ 00568 Ch_Class_Symbol, /* 251 */ 00569 Ch_Class_Symbol, /* 252 */ 00570 Ch_Class_Symbol, /* 253 */ 00571 Ch_Class_Symbol, /* 254 */ 00572 Ch_Class_EOF }; /* 255 */ 00573 00574 /* The following table is just to see if a character is in the "valid" */ 00575 /* Fortran 90 character set. */ 00576 00577 static boolean valid_f90_char[MAX_ASCII_CHARS] = { 00578 FALSE, /* NULL*/ 00579 FALSE, /* SOH */ 00580 FALSE, /* STX */ 00581 FALSE, /* ETX */ 00582 FALSE, /* EOT */ 00583 FALSE, /* ENQ */ 00584 FALSE, /* ACK */ 00585 FALSE, /* BEL */ 00586 FALSE, /* BS */ 00587 TRUE , /* TAB */ 00588 FALSE, /* LF */ 00589 FALSE, /* VT */ 00590 FALSE, /* FF */ 00591 FALSE, /* CR */ 00592 FALSE, /* SO */ 00593 FALSE, /* SI */ 00594 FALSE, /* DLE */ 00595 FALSE, /* DC1 */ 00596 FALSE, /* DC2 */ 00597 FALSE, /* DC3 */ 00598 FALSE, /* DC4 */ 00599 FALSE, /* NAK */ 00600 FALSE, /* SYN */ 00601 FALSE, /* ETB */ 00602 FALSE, /* CAN */ 00603 FALSE, /* EM */ 00604 FALSE, /* SUB */ 00605 FALSE, /* ESC */ 00606 FALSE, /* FS */ 00607 FALSE, /* GS */ 00608 FALSE, /* RS */ 00609 FALSE, /* US */ 00610 TRUE , /* SP */ 00611 TRUE , /* ! */ 00612 TRUE , /* " */ 00613 FALSE, /* # */ 00614 TRUE , /* $ */ 00615 TRUE , /* % */ 00616 TRUE , /* & */ 00617 TRUE , /* ' */ 00618 TRUE , /* ( */ 00619 TRUE , /* ) */ 00620 TRUE , /* * */ 00621 TRUE , /* + */ 00622 TRUE , /* , */ 00623 TRUE , /* - */ 00624 TRUE , /* . */ 00625 TRUE , /* / */ 00626 TRUE , /* 0 */ 00627 TRUE , /* 1 */ 00628 TRUE , /* 2 */ 00629 TRUE , /* 3 */ 00630 TRUE , /* 4 */ 00631 TRUE , /* 5 */ 00632 TRUE , /* 6 */ 00633 TRUE , /* 7 */ 00634 TRUE , /* 8 */ 00635 TRUE , /* 9 */ 00636 TRUE , /* : */ 00637 TRUE , /* ; */ 00638 TRUE , /* < */ 00639 TRUE , /* = */ 00640 TRUE , /* > */ 00641 TRUE , /* ? */ 00642 FALSE, /* @ */ 00643 TRUE , /* A */ 00644 TRUE , /* B */ 00645 TRUE , /* C */ 00646 TRUE , /* D */ 00647 TRUE , /* E */ 00648 TRUE , /* F */ 00649 TRUE , /* G */ 00650 TRUE , /* H */ 00651 TRUE , /* I */ 00652 TRUE , /* J */ 00653 TRUE , /* K */ 00654 TRUE , /* L */ 00655 TRUE , /* M */ 00656 TRUE , /* N */ 00657 TRUE , /* O */ 00658 TRUE , /* P */ 00659 TRUE , /* Q */ 00660 TRUE , /* R */ 00661 TRUE , /* S */ 00662 TRUE , /* T */ 00663 TRUE , /* U */ 00664 TRUE , /* V */ 00665 TRUE , /* W */ 00666 TRUE , /* X */ 00667 TRUE , /* Y */ 00668 TRUE , /* Z */ 00669 FALSE, /* [ */ 00670 FALSE, /* \ */ 00671 FALSE, /* ] */ 00672 FALSE, /* ^ */ 00673 TRUE , /* _ */ 00674 FALSE, /* ` */ 00675 TRUE , /* a */ 00676 TRUE , /* b */ 00677 TRUE , /* c */ 00678 TRUE , /* d */ 00679 TRUE , /* e */ 00680 TRUE , /* f */ 00681 TRUE , /* g */ 00682 TRUE , /* h */ 00683 TRUE , /* i */ 00684 TRUE , /* j */ 00685 TRUE , /* k */ 00686 TRUE , /* l */ 00687 TRUE , /* m */ 00688 TRUE , /* n */ 00689 TRUE , /* o */ 00690 TRUE , /* p */ 00691 TRUE , /* q */ 00692 TRUE , /* r */ 00693 TRUE , /* s */ 00694 TRUE , /* t */ 00695 TRUE , /* u */ 00696 TRUE , /* v */ 00697 TRUE , /* w */ 00698 TRUE , /* x */ 00699 TRUE , /* y */ 00700 TRUE , /* z */ 00701 FALSE, /* { */ 00702 FALSE, /* | */ 00703 FALSE, /* } */ 00704 FALSE, /* ~ */ 00705 FALSE, /* DEL */ 00706 FALSE, /* 128 */ 00707 FALSE, /* 129 */ 00708 FALSE, /* 130 */ 00709 FALSE, /* 131 */ 00710 FALSE, /* 132 */ 00711 FALSE, /* 133 */ 00712 FALSE, /* 134 */ 00713 FALSE, /* 135 */ 00714 FALSE, /* 136 */ 00715 FALSE, /* 137 */ 00716 FALSE, /* 138 */ 00717 FALSE, /* 139 */ 00718 FALSE, /* 140 */ 00719 FALSE, /* 141 */ 00720 FALSE, /* 142 */ 00721 FALSE, /* 143 */ 00722 FALSE, /* 144 */ 00723 FALSE, /* 145 */ 00724 FALSE, /* 146 */ 00725 FALSE, /* 147 */ 00726 FALSE, /* 148 */ 00727 FALSE, /* 149 */ 00728 FALSE, /* 150 */ 00729 FALSE, /* 151 */ 00730 FALSE, /* 152 */ 00731 FALSE, /* 153 */ 00732 FALSE, /* 154 */ 00733 FALSE, /* 155 */ 00734 FALSE, /* 156 */ 00735 FALSE, /* 157 */ 00736 FALSE, /* 158 */ 00737 FALSE, /* 159 */ 00738 FALSE, /* 160 */ 00739 FALSE, /* 161 */ 00740 FALSE, /* 162 */ 00741 FALSE, /* 163 */ 00742 FALSE, /* 164 */ 00743 FALSE, /* 165 */ 00744 FALSE, /* 166 */ 00745 FALSE, /* 167 */ 00746 FALSE, /* 168 */ 00747 FALSE, /* 169 */ 00748 FALSE, /* 170 */ 00749 FALSE, /* 171 */ 00750 FALSE, /* 172 */ 00751 FALSE, /* 173 */ 00752 FALSE, /* 174 */ 00753 FALSE, /* 175 */ 00754 FALSE, /* 176 */ 00755 FALSE, /* 177 */ 00756 FALSE, /* 178 */ 00757 FALSE, /* 179 */ 00758 FALSE, /* 180 */ 00759 FALSE, /* 181 */ 00760 FALSE, /* 182 */ 00761 FALSE, /* 183 */ 00762 FALSE, /* 184 */ 00763 FALSE, /* 185 */ 00764 FALSE, /* 186 */ 00765 FALSE, /* 187 */ 00766 FALSE, /* 188 */ 00767 FALSE, /* 189 */ 00768 FALSE, /* 190 */ 00769 FALSE, /* 191 */ 00770 FALSE, /* 192 */ 00771 FALSE, /* 193 */ 00772 FALSE, /* 194 */ 00773 FALSE, /* 195 */ 00774 FALSE, /* 196 */ 00775 FALSE, /* 197 */ 00776 FALSE, /* 198 */ 00777 FALSE, /* 199 */ 00778 FALSE, /* 200 */ 00779 FALSE, /* 201 */ 00780 FALSE, /* 202 */ 00781 FALSE, /* 203 */ 00782 FALSE, /* 204 */ 00783 FALSE, /* 205 */ 00784 FALSE, /* 206 */ 00785 FALSE, /* 207 */ 00786 FALSE, /* 208 */ 00787 FALSE, /* 209 */ 00788 FALSE, /* 210 */ 00789 FALSE, /* 211 */ 00790 FALSE, /* 212 */ 00791 FALSE, /* 213 */ 00792 FALSE, /* 214 */ 00793 FALSE, /* 215 */ 00794 FALSE, /* 216 */ 00795 FALSE, /* 217 */ 00796 FALSE, /* 218 */ 00797 FALSE, /* 219 */ 00798 FALSE, /* 220 */ 00799 FALSE, /* 221 */ 00800 FALSE, /* 222 */ 00801 FALSE, /* 223 */ 00802 FALSE, /* 224 */ 00803 FALSE, /* 225 */ 00804 FALSE, /* 226 */ 00805 FALSE, /* 227 */ 00806 FALSE, /* 228 */ 00807 FALSE, /* 229 */ 00808 FALSE, /* 230 */ 00809 FALSE, /* 231 */ 00810 FALSE, /* 232 */ 00811 FALSE, /* 233 */ 00812 FALSE, /* 234 */ 00813 FALSE, /* 235 */ 00814 FALSE, /* 236 */ 00815 FALSE, /* 237 */ 00816 FALSE, /* 238 */ 00817 FALSE, /* 239 */ 00818 FALSE, /* 240 */ 00819 FALSE, /* 241 */ 00820 FALSE, /* 242 */ 00821 FALSE, /* 243 */ 00822 FALSE, /* 244 */ 00823 FALSE, /* 245 */ 00824 FALSE, /* 246 */ 00825 FALSE, /* 247 */ 00826 FALSE, /* 248 */ 00827 FALSE, /* 249 */ 00828 FALSE, /* 250 */ 00829 FALSE, /* 251 */ 00830 FALSE, /* 252 */ 00831 FALSE, /* 253 */ 00832 FALSE, /* 254 */ 00833 FALSE }; /* 255 */ 00834 00835 00836 # ifdef _DEBUG 00837 static char *line_type_str[] = { 00838 "Comment_Line", /* Comment_Line */ 00839 "Include_Line", /* Include_Line */ 00840 "Cond_Comp_Line", /* Cond_Comp_Line */ 00841 "Dir_Line", /* Dir_Line */ 00842 "Regular_Line", /* Regular_Line */ 00843 "Continuation_Line", /* Continuation_Line */ 00844 "EOF_Line" /* EOF_Line */ 00845 }; 00846 00847 static char *ch_str[] = { 00848 "EOS", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", 00849 "BS", "TAB", "LF", "VT", "FF", "CR", "SO", "SI", 00850 "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", 00851 "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US", 00852 "SP", "!", "\"", "#", "$", "%", "&", "'", 00853 "(", ")", "*", "+", ",", "-", ".", "/", 00854 "0", "1", "2", "3", "4", "5", "6", "7", 00855 "8", "9", ":", ";", "<", "=", ">", "?", 00856 "@", "A", "B", "C", "D", "E", "F", "G", 00857 "H", "I", "J", "K", "L", "M", "N", "O", 00858 "P", "Q", "R", "S", "T", "U", "V", "W", 00859 "X", "Y", "Z", "[", "\\", "]", "^", "_", 00860 "`", "a", "b", "c", "d", "e", "f", "g", 00861 "h", "i", "j", "k", "l", "m", "n", "o", 00862 "p", "q", "r", "s", "t", "u", "v", "w", 00863 "x", "y", "z", "{", "|", "}", "~", "DEL", 00864 "128", "129", "130", "131", "132", "133", "134", "135", 00865 "136", "137", "138", "139", "140", "141", "142", "143", 00866 "144", "145", "146", "147", "148", "149", "150", "151", 00867 "152", "153", "154", "155", "156", "157", "158", "159", 00868 "160", "161", "162", "163", "164", "165", "166", "167", 00869 "168", "169", "170", "171", "172", "173", "174", "175", 00870 "176", "177", "178", "179", "180", "181", "182", "183", 00871 "184", "185", "186", "187", "188", "189", "190", "191", 00872 "192", "193", "194", "195", "196", "197", "198", "199", 00873 "200", "201", "202", "203", "204", "205", "206", "207", 00874 "208", "209", "210", "211", "212", "213", "214", "215", 00875 "216", "217", "218", "219", "220", "221", "222", "223", 00876 "224", "225", "226", "227", "228", "229", "230", "231", 00877 "232", "233", "234", "235", "236", "237", "238", "239", 00878 "240", "241", "242", "243", "244", "245", "246", "247", 00879 "248", "249", "250", "251", "252", "253", "254", "EOF" 00880 }; 00881 # endif 00882 00883 /*************************************\ 00884 |* objects referenced by this module *| 00885 \*************************************/ 00886 extern boolean sig_blank; 00887 extern la_type stmt_EOS_la_ch; 00888 00889 static boolean havent_issued_tab_ansi; 00890 static boolean havent_issued_at_ansi; 00891 static boolean havent_issued_dollar_ansi; 00892 00893 extern boolean parse_cc_line(void); 00894 extern boolean is_par_directive (int); 00895 extern boolean is_dollar_directive (int); 00896 extern boolean is_star_directive (int); 00897 00898 extern boolean scan_fortran_stmt(void); 00899 extern boolean scan_fixed_comment(void); 00900 00901 extern void check_for_continued_macro(void); 00902 00903 FILE *dot_i_fptr; 00904 00905 boolean angle_brkt_include = FALSE; 00906 00907 /* save variables */ 00908 int save_prev_char_delim; 00909 int save_prev_char_delim_idx; 00910 int save_previous_char; 00911 boolean save_seen_lp_eq_slash; 00912 int save_char_delim; 00913 int save_digit_start; 00914 int save_format_idx; 00915 boolean save_in_format; 00916 line_type save_expected_line; 00917 boolean save_first_line; 00918 00919 boolean issue_pound_exit_line = FALSE; 00920 00921 extern char cc_stmt_buf[MAX_STMT_CHAR_SIZE]; 00922 extern int cc_stmt_buf_idx; 00923 extern cc_stmt_buf_line_type cc_stmt_buf_line[200]; 00924 extern long cc_stmt_buf_num_lines; 00925 00926 long previous_global_line;