/* stb.c -- Implementation File (module.c template V1.0)
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
- Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
+ Contributed by James Craig Burley.
This file is part of GNU Fortran.
/* Include files. */
#include "proj.h"
-#include <ctype.h>
#include "stb.h"
#include "bad.h"
#include "expr.h"
dimlist;
struct
{
- char *badname;
+ const char *badname;
ffestrFirst first_kw;
bool is_subr;
}
ffesttTokenList toklist;/* For ambiguity resolution. */
ffesttImpList imps; /* List of IMPLICIT letters. */
ffelexHandler imp_handler; /* Call if paren list wasn't letters. */
- char *badname;
+ const char *badname;
ffestrOther kw; /* INTENT(IN/OUT/INOUT). */
ffestpType type;
bool parameter; /* If PARAMETER attribute seen (governs =expr
ffestb_do (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexHandler next;
ffelexToken nt;
ffestrSecond kw;
goto bad_1; /* :::::::::::::::::::: */
case FFELEX_typeOPEN_PAREN: /* Must be "DO" label "WHILE". */
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
goto bad_i; /* :::::::::::::::::::: */
ffesta_tokens[1] = ffelex_token_number_from_names (ffesta_tokens[0],
i);
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_do2_;
}
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
goto bad_i; /* :::::::::::::::::::: */
ffesta_tokens[1] = ffelex_token_number_from_names (ffesta_tokens[0],
i);
return (ffelexHandler) ffestb_do2_;
case FFELEX_typeEQUALS:
- if (isdigit (*p))
+ if (ISDIGIT (*p))
{
ffesta_tokens[1]
= ffelex_token_number_from_names (ffesta_tokens[0], i);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
- if (isdigit (*p))
+ if (ISDIGIT (*p))
{
ffesta_tokens[1]
= ffelex_token_number_from_names (ffesta_tokens[0], i);
ffestb_dowhile (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexHandler next;
ffelexToken nt;
ffestb_else (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_elsexyz (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_else3_ (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelex_set_names (FALSE);
ffestb_endxyz (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_goto (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexHandler next;
ffelexToken nt;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlGOTO)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlGOTO);
- if (isdigit (*p))
+ if (ISDIGIT (*p))
{
nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (nt);
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
- if (ffesta_first_kw == FFESTR_firstSTOP)
- ffestc_R842 (expr, ft);
- else
- ffestc_R843 (expr, ft);
+ {
+ if (ffesta_first_kw == FFESTR_firstSTOP)
+ ffestc_R842 (expr, ft);
+ else
+ ffestc_R843 (expr, ft);
+ }
return (ffelexHandler) ffesta_zero (t);
default:
ffelexHandler next;
bool vxtparam; /* TRUE if it might really be a VXT PARAMETER
stmt. */
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_type (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_type1_ (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelex_set_names (FALSE);
ffestb_varlist (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
ffelexHandler
ffestb_R423B (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffestb_R522 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
ffelexHandler
ffestb_R528 (ffelexToken t)
{
- char *p;
+ unsigned const char *p;
ffeTokenLength i;
ffelexToken nt;
ffelexHandler next;
case FFELEX_typeASTERISK:
if (expr == NULL)
break;
- ffestb_local_.data.expr = expr;
+ ffestb_local_.data.expr = ffeexpr_convert (expr, ft, t,
+ FFEINFO_basictypeINTEGER,
+ FFEINFO_kindtypeINTEGER1,
+ 0,
+ FFETARGET_charactersizeNONE,
+ FFEEXPR_contextLET);
ffesta_tokens[1] = ffelex_token_use (ft);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
ffelexHandler
ffestb_R542 (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffestb_R834 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_R835 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffelexHandler
ffestb_R838 (ffelexToken t)
{
- char *p;
+ unsigned const char *p;
ffeTokenLength i;
ffelexHandler next;
ffelexToken et; /* First token in target. */
case FFELEX_typePERCENT:
case FFELEX_typeOPEN_PAREN:
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlASSIGN);
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
goto bad_i; /* :::::::::::::::::::: */
ffesta_tokens[1]
= ffelex_token_number_from_names (ffesta_tokens[0], i);
ffelexHandler
ffestb_R841 (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffestb_R1102 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_blockdata (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_R1212 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexHandler next;
ffelexToken nt;
ffelexHandler
ffestb_R1228 (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffelexHandler
ffestb_V009 (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffestb_module (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexToken nt;
ffelexToken mt; /* Name in MODULE PROCEDUREname, i.e.
includes "PROCEDURE". */
ffestb_R809 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_R810 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
{
ffesttFormatList f;
ffeTokenLength i;
- char *p;
+ const char *p;
ffestrFormat kw;
ffelex_set_expecting_hollerith (0, '\0',
}
if (ffestb_local_.format.sign)
{
- for (i = 0; i < ffelex_token_length (t); ++i)
+ for (i = ffelex_token_length (t) + 1; i > 0; --i)
ffestb_local_.format.pre.u.signed_val *= 10;
ffestb_local_.format.pre.u.signed_val += strtoul (ffelex_token_text (t),
NULL, 10);
}
else
{
- for (i = 0; i < ffelex_token_length (t); ++i)
+ for (i = ffelex_token_length (t) + 1; i > 0; --i)
ffestb_local_.format.pre.u.unsigned_val *= 10;
ffestb_local_.format.pre.u.unsigned_val += strtoul (ffelex_token_text (t),
NULL, 10);
p = ffelex_token_text (t) + i;
if (*p == '\0')
return (ffelexHandler) ffestb_R10015_;
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
{
if (ffestb_local_.format.current == FFESTP_formattypeH)
p = strpbrk (p, "0123456789");
i += ffelex_token_length (ffestb_local_.format.post.t);
if (*p == '\0')
return (ffelexHandler) ffestb_R10016_;
- if ((kw != FFESTR_formatP) || !ffelex_is_firstnamechar (*p))
+ if ((kw != FFESTR_formatP) ||
+ !ffelex_is_firstnamechar ((unsigned char)*p))
{
if (ffestb_local_.format.current != FFESTP_formattypeH)
ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
p = ffelex_token_text (t) + i;
if (*p == '\0')
return (ffelexHandler) ffestb_R10015_;
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
{
ffestb_local_.format.current = FFESTP_formattypeNone;
p = strpbrk (p, "0123456789");
bool split_pea; /* New NAMES requires splitting kP from new
edit desc. */
ffestrFormat kw;
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (t))
p = ffelex_token_text (t) + i;
if (*p == '\0')
return (ffelexHandler) ffestb_R10015_;
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
{
ffestb_local_.format.current = FFESTP_formattypeNone;
p = strpbrk (p, "0123456789");
ffebad_finish ();
return (ffelexHandler) ffestb_R10016_;
}
- for (i = 0; i < ffelex_token_length (t); ++i)
+ for (i = ffelex_token_length (t) + 1; i > 0; --i)
ffestb_local_.format.post.u.unsigned_val *= 10;
ffestb_local_.format.post.u.unsigned_val += strtoul (ffelex_token_text (t),
NULL, 10);
ffestb_R10018_ (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
switch (ffelex_token_type (t))
{
ffebad_finish ();
return (ffelexHandler) ffestb_R10018_;
}
- for (i = 0; i < ffelex_token_length (t); ++i)
+ for (i = ffelex_token_length (t) + 1; i > 0; --i)
ffestb_local_.format.dot.u.unsigned_val *= 10;
ffestb_local_.format.dot.u.unsigned_val += strtoul (ffelex_token_text (t),
NULL, 10);
if (*++p == '\0')
return (ffelexHandler) ffestb_R10019_; /* Go get NUMBER. */
i = 1;
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
{
ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, 1, NULL);
return (ffelexHandler) ffestb_R10018_;
ffebad_finish ();
return (ffelexHandler) ffestb_R100110_;
}
- for (i = 0; i < ffelex_token_length (t); ++i)
+ for (i = ffelex_token_length (t) + 1; i > 0; --i)
ffestb_local_.format.exp.u.unsigned_val *= 10;
ffestb_local_.format.exp.u.unsigned_val += strtoul (ffelex_token_text (t),
NULL, 10);
return (ffelexHandler) ffestb_R100111_ (t);
default:
- assert (FALSE);
+ assert ("bad format item" == NULL);
err = FFEBAD_FORMAT_BAD_H_SPEC;
pre = disallowed;
post = disallowed;
ffestb_R1107 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_R1202 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
static ffelexHandler
ffestb_R12026_ (ffelexToken t)
{
- char *p;
+ const char *p;
switch (ffelex_token_type (t))
{
default:
for (p = ffelex_token_text (ffesta_tokens[2]); *p != '\0'; ++p)
{
- if (!isalpha (*p))
+ if (! ISALPHA (*p))
{
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffestb_S3P4 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexHandler next;
ffelexToken nt;
ffelexToken ut;
ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextINCLUDE,
(ffeexprCallback) ffestb_S3P41_)))
(t);
- if (!isdigit (*p))
+ if (! ISDIGIT (*p))
goto bad_i; /* :::::::::::::::::::: */
nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (nt);
ffelexHandler
ffestb_V012 (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffestb_V014 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
ffestb_V025 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexToken nt;
ffelexHandler next;
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDEFINEFILE);
- if (isdigit (*p))
+ if (ISDIGIT (*p))
nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
else if (ffesrc_is_name_init (*p))
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
static ffelexHandler
ffestb_V0255_ (ffelexToken t)
{
- char *p;
+ const char *p;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
- if (ffestb_local_.read.context == FFEEXPR_contextFILEFORMAT)
- ffestp_file.read.read_spec[ffestb_local_.read.ix]
- .value_is_label = TRUE;
- else
- break;
+ {
+ if (ffestb_local_.read.context == FFEEXPR_contextFILEFORMAT)
+ ffestp_file.read.read_spec[ffestb_local_.read.ix]
+ .value_is_label = TRUE;
+ else
+ break;
+ }
ffestp_file.read.read_spec[ffestb_local_.read.ix].value_present
= TRUE;
ffestp_file.read.read_spec[ffestb_local_.read.ix].value
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
- if (ffestb_local_.write.context == FFEEXPR_contextFILEFORMAT)
- ffestp_file.write.write_spec[ffestb_local_.write.ix]
- .value_is_label = TRUE;
- else
- break;
+ {
+ if (ffestb_local_.write.context == FFEEXPR_contextFILEFORMAT)
+ ffestp_file.write.write_spec[ffestb_local_.write.ix]
+ .value_is_label = TRUE;
+ else
+ break;
+ }
ffestp_file.write.write_spec[ffestb_local_.write.ix].value_present
= TRUE;
ffestp_file.write.write_spec[ffestb_local_.write.ix].value
ffestb_V020 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexHandler next;
ffestpTypeIx ix;
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlTYPE);
- if (isdigit (*p))
+ if (ISDIGIT (*p))
ffesta_confirmed (); /* Else might be '90 TYPE statement. */
for (ix = 0; ix < FFESTP_typeix; ++ix)
ffestp_file.type.type_spec[ix].kw_or_val_present = FALSE;
ffestb_dimlist (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexToken nt;
ffelexHandler next;
ffestb_dummy (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
ffestb_R524 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
ffestb_R547 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
ffestb_decl_chartype (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
ffestb_local_.decl.recursive = NULL;
ffestb_decl_dbltype (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffestb_local_.decl.type = ffestb_args.decl.type;
ffestb_local_.decl.recursive = NULL;
ffestb_decl_gentype (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffestb_local_.decl.type = ffestb_args.decl.type;
ffestb_local_.decl.recursive = NULL;
ffestb_decl_recursive (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexToken nt;
ffelexToken ot;
ffelexHandler next;
{
ffelexToken nt;
bool asterisk_ok;
- char *p;
+ unsigned const char *p;
ffeTokenLength i;
switch (ffelex_token_type (t))
static ffelexHandler
ffestb_decl_func_ (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
ffelex_set_names (FALSE);
ffestb_V003 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ const char *p;
ffelexToken nt;
ffelexHandler next;
ffelexHandler
ffestb_V016 (ffelexToken t)
{
- char *p;
+ const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffelexHandler
ffestb_V027 (ffelexToken t)
{
- char *p;
+ unsigned const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
ffestb_decl_R539 (ffelexToken t)
{
ffeTokenLength i;
- char *p;
+ unsigned const char *p;
ffelexToken nt;
ffestrSecond kw;