Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
src_input.h
Go to the documentation of this file.
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;
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines