#include "proj.h"
#include "stb.h"
#include "bad.h"
#include "expr.h"
#include "lex.h"
#include "malloc.h"
#include "src.h"
#include "sta.h"
#include "stc.h"
#include "stp.h"
#include "str.h"
struct _ffestb_args_ ffestb_args;
#define FFESTB_KILL_EASY_ 1
union ffestb_subrargs_u_
{
struct
{
ffesttTokenList labels;
ffelexHandler handler;
bool ok;
}
label_list;
struct
{
ffesttDimList dims;
ffelexHandler handler;
mallocPool pool;
bool ok;
ffeexprContext ctx;
#ifdef FFECOM_dimensionsMAX
int ndims;
#endif
}
dim_list;
struct
{
ffesttTokenList args;
ffelexHandler handler;
ffelexToken close_paren;
bool is_subr;
bool ok;
bool names;
}
name_list;
};
union ffestb_local_u_
{
struct
{
ffebld expr;
}
call_stmt;
struct
{
ffebld expr;
}
go_to;
struct
{
ffebld dest;
bool vxtparam;
}
let;
struct
{
ffebld expr;
}
if_stmt;
struct
{
ffebld expr;
}
else_stmt;
struct
{
ffebld expr;
}
dowhile;
struct
{
ffebld var;
ffebld start;
ffebld end;
}
do_stmt;
struct
{
bool is_cblock;
}
R522;
struct
{
ffebld expr;
bool started;
}
parameter;
struct
{
ffesttExprList exprs;
bool started;
}
equivalence;
struct
{
ffebld expr;
bool started;
}
data;
struct
{
ffestrOther kw;
}
varlist;
#if FFESTR_F90
struct
{
ffestrOther kw;
}
type;
#endif
struct
{
ffelexHandler next;
}
construct;
struct
{
ffesttFormatList f;
ffestpFormatType current;
ffelexToken t;
ffesttFormatValue pre;
ffesttFormatValue post;
ffesttFormatValue dot;
ffesttFormatValue exp;
bool sign;
bool complained;
}
format;
#if FFESTR_F90
struct
{
bool started;
}
moduleprocedure;
#endif
struct
{
ffebld expr;
}
selectcase;
struct
{
ffesttCaseList cases;
}
case_stmt;
#if FFESTR_F90
struct
{
ffesttExprList exprs;
ffebld expr;
}
heap;
#endif
#if FFESTR_F90
struct
{
ffesttExprList exprs;
}
R624;
#endif
#if FFESTR_F90
struct
{
ffestpDefinedOperator operator;
bool assignment;
bool slash;
}
interface;
#endif
struct
{
bool is_cblock;
}
V014;
#if FFESTR_VXT
struct
{
bool started;
ffebld u;
ffebld m;
ffebld n;
ffebld asv;
}
V025;
#endif
struct
{
ffestpBeruIx ix;
bool label;
bool left;
ffeexprContext context;
}
beru;
struct
{
ffestpCloseIx ix;
bool label;
bool left;
ffeexprContext context;
}
close;
struct
{
ffestpDeleteIx ix;
bool label;
bool left;
ffeexprContext context;
}
delete;
struct
{
ffestpDeleteIx ix;
bool label;
bool left;
ffeexprContext context;
}
find;
struct
{
ffestpInquireIx ix;
bool label;
bool left;
ffeexprContext context;
bool may_be_iolength;
}
inquire;
struct
{
ffestpOpenIx ix;
bool label;
bool left;
ffeexprContext context;
}
open;
struct
{
ffestpReadIx ix;
bool label;
bool left;
ffeexprContext context;
}
read;
struct
{
ffestpRewriteIx ix;
bool label;
bool left;
ffeexprContext context;
}
rewrite;
struct
{
ffestpWriteIx ix;
bool label;
bool left;
ffeexprContext context;
}
vxtcode;
struct
{
ffestpWriteIx ix;
bool label;
bool left;
ffeexprContext context;
}
write;
#if FFESTR_F90
struct
{
bool started;
}
structure;
#endif
struct
{
bool started;
}
common;
struct
{
bool started;
}
dimension;
struct
{
bool started;
}
dimlist;
struct
{
const char *badname;
ffestrFirst first_kw;
bool is_subr;
}
dummy;
struct
{
ffebld kind;
ffelexToken kindt;
ffebld len;
ffelexToken lent;
ffelexHandler handler;
ffelexToken recursive;
ffebld expr;
ffesttTokenList toklist;
ffesttImpList imps;
ffelexHandler imp_handler;
const char *badname;
ffestrOther kw;
ffestpType type;
bool parameter;
bool coloncolon;
bool aster_after;
bool empty;
bool imp_started;
bool imp_seen_comma;
}
decl;
struct
{
bool started;
}
vxtparam;
};
static union ffestb_subrargs_u_ ffestb_subrargs_;
static union ffestb_local_u_ ffestb_local_;
static void ffestb_subr_ambig_to_ents_ (void);
static ffelexHandler ffestb_subr_ambig_nope_ (ffelexToken t);
static ffelexHandler ffestb_subr_dimlist_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_subr_dimlist_1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_subr_dimlist_2_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_subr_name_list_ (ffelexToken t);
static ffelexHandler ffestb_subr_name_list_1_ (ffelexToken t);
static void ffestb_subr_R1001_append_p_ (void);
static ffelexHandler ffestb_decl_kindparam_ (ffelexToken t);
static ffelexHandler ffestb_decl_kindparam_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_kindparam_2_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_starkind_ (ffelexToken t);
static ffelexHandler ffestb_decl_starlen_ (ffelexToken t);
static ffelexHandler ffestb_decl_starlen_1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_typeparams_ (ffelexToken t);
static ffelexHandler ffestb_decl_typeparams_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_typeparams_2_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_typeparams_3_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_decl_typetype1_ (ffelexToken t);
static ffelexHandler ffestb_decl_typetype2_ (ffelexToken t);
#endif
static ffelexHandler ffestb_subr_label_list_ (ffelexToken t);
static ffelexHandler ffestb_subr_label_list_1_ (ffelexToken t);
static ffelexHandler ffestb_do1_ (ffelexToken t);
static ffelexHandler ffestb_do2_ (ffelexToken t);
static ffelexHandler ffestb_do3_ (ffelexToken t);
static ffelexHandler ffestb_do4_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_do5_ (ffelexToken t);
static ffelexHandler ffestb_do6_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_do7_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_do8_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_do9_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_else1_ (ffelexToken t);
static ffelexHandler ffestb_else2_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_else3_ (ffelexToken t);
static ffelexHandler ffestb_else4_ (ffelexToken t);
static ffelexHandler ffestb_else5_ (ffelexToken t);
static ffelexHandler ffestb_end1_ (ffelexToken t);
static ffelexHandler ffestb_end2_ (ffelexToken t);
static ffelexHandler ffestb_end3_ (ffelexToken t);
static ffelexHandler ffestb_goto1_ (ffelexToken t);
static ffelexHandler ffestb_goto2_ (ffelexToken t);
static ffelexHandler ffestb_goto3_ (ffelexToken t);
static ffelexHandler ffestb_goto4_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_goto5_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_goto6_ (ffelexToken t);
static ffelexHandler ffestb_goto7_ (ffelexToken t);
static ffelexHandler ffestb_halt1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_if1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_if2_ (ffelexToken t);
static ffelexHandler ffestb_if3_ (ffelexToken t);
static ffelexHandler ffestb_let1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_let2_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_type1_ (ffelexToken t);
static ffelexHandler ffestb_type2_ (ffelexToken t);
static ffelexHandler ffestb_type3_ (ffelexToken t);
static ffelexHandler ffestb_type4_ (ffelexToken t);
#endif
#if FFESTR_F90
static ffelexHandler ffestb_varlist1_ (ffelexToken t);
static ffelexHandler ffestb_varlist2_ (ffelexToken t);
static ffelexHandler ffestb_varlist3_ (ffelexToken t);
static ffelexHandler ffestb_varlist4_ (ffelexToken t);
#endif
static ffelexHandler ffestb_varlist5_ (ffelexToken t);
static ffelexHandler ffestb_varlist6_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_where1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_where2_ (ffelexToken t);
static ffelexHandler ffestb_where3_ (ffelexToken t);
#endif
static ffelexHandler ffestb_R5221_ (ffelexToken t);
static ffelexHandler ffestb_R5222_ (ffelexToken t);
static ffelexHandler ffestb_R5223_ (ffelexToken t);
static ffelexHandler ffestb_R5224_ (ffelexToken t);
static ffelexHandler ffestb_R5281_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5282_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5283_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5284_ (ffelexToken t);
static ffelexHandler ffestb_R5371_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5372_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5373_ (ffelexToken t);
static ffelexHandler ffestb_R5421_ (ffelexToken t);
static ffelexHandler ffestb_R5422_ (ffelexToken t);
static ffelexHandler ffestb_R5423_ (ffelexToken t);
static ffelexHandler ffestb_R5424_ (ffelexToken t);
static ffelexHandler ffestb_R5425_ (ffelexToken t);
static ffelexHandler ffestb_R5441_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5442_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R5443_ (ffelexToken t);
static ffelexHandler ffestb_R5444_ (ffelexToken t);
static ffelexHandler ffestb_R8341_ (ffelexToken t);
static ffelexHandler ffestb_R8351_ (ffelexToken t);
static ffelexHandler ffestb_R8381_ (ffelexToken t);
static ffelexHandler ffestb_R8382_ (ffelexToken t);
static ffelexHandler ffestb_R8383_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R8401_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R8402_ (ffelexToken t);
static ffelexHandler ffestb_R8403_ (ffelexToken t);
static ffelexHandler ffestb_R8404_ (ffelexToken t);
static ffelexHandler ffestb_R8405_ (ffelexToken t);
static ffelexHandler ffestb_R8406_ (ffelexToken t);
static ffelexHandler ffestb_R8407_ (ffelexToken t);
static ffelexHandler ffestb_R11021_ (ffelexToken t);
static ffelexHandler ffestb_R1111_1_ (ffelexToken t);
static ffelexHandler ffestb_R1111_2_ (ffelexToken t);
static ffelexHandler ffestb_R12121_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R12271_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_construct1_ (ffelexToken t);
static ffelexHandler ffestb_construct2_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_heap1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_heap2_ (ffelexToken t);
static ffelexHandler ffestb_heap3_ (ffelexToken t);
static ffelexHandler ffestb_heap4_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_heap5_ (ffelexToken t);
#endif
#if FFESTR_F90
static ffelexHandler ffestb_module1_ (ffelexToken t);
static ffelexHandler ffestb_module2_ (ffelexToken t);
static ffelexHandler ffestb_module3_ (ffelexToken t);
#endif
static ffelexHandler ffestb_R8091_ (ffelexToken t);
static ffelexHandler ffestb_R8092_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R8093_ (ffelexToken t);
static ffelexHandler ffestb_R8101_ (ffelexToken t);
static ffelexHandler ffestb_R8102_ (ffelexToken t);
static ffelexHandler ffestb_R8103_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R8104_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R10011_ (ffelexToken t);
static ffelexHandler ffestb_R10012_ (ffelexToken t);
static ffelexHandler ffestb_R10013_ (ffelexToken t);
static ffelexHandler ffestb_R10014_ (ffelexToken t);
static ffelexHandler ffestb_R10015_ (ffelexToken t);
static ffelexHandler ffestb_R10016_ (ffelexToken t);
static ffelexHandler ffestb_R10017_ (ffelexToken t);
static ffelexHandler ffestb_R10018_ (ffelexToken t);
static ffelexHandler ffestb_R10019_ (ffelexToken t);
static ffelexHandler ffestb_R100110_ (ffelexToken t);
static ffelexHandler ffestb_R100111_ (ffelexToken t);
static ffelexHandler ffestb_R100112_ (ffelexToken t);
static ffelexHandler ffestb_R100113_ (ffelexToken t);
static ffelexHandler ffestb_R100114_ (ffelexToken t);
static ffelexHandler ffestb_R100115_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R100116_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R100117_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R100118_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_R11071_ (ffelexToken t);
static ffelexHandler ffestb_R11072_ (ffelexToken t);
static ffelexHandler ffestb_R11073_ (ffelexToken t);
static ffelexHandler ffestb_R11074_ (ffelexToken t);
static ffelexHandler ffestb_R11075_ (ffelexToken t);
static ffelexHandler ffestb_R11076_ (ffelexToken t);
static ffelexHandler ffestb_R11077_ (ffelexToken t);
static ffelexHandler ffestb_R11078_ (ffelexToken t);
static ffelexHandler ffestb_R11079_ (ffelexToken t);
static ffelexHandler ffestb_R110710_ (ffelexToken t);
static ffelexHandler ffestb_R110711_ (ffelexToken t);
static ffelexHandler ffestb_R110712_ (ffelexToken t);
#endif
#if FFESTR_F90
static ffelexHandler ffestb_R12021_ (ffelexToken t);
static ffelexHandler ffestb_R12022_ (ffelexToken t);
static ffelexHandler ffestb_R12023_ (ffelexToken t);
static ffelexHandler ffestb_R12024_ (ffelexToken t);
static ffelexHandler ffestb_R12025_ (ffelexToken t);
static ffelexHandler ffestb_R12026_ (ffelexToken t);
#endif
static ffelexHandler ffestb_S3P41_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0141_ (ffelexToken t);
static ffelexHandler ffestb_V0142_ (ffelexToken t);
static ffelexHandler ffestb_V0143_ (ffelexToken t);
static ffelexHandler ffestb_V0144_ (ffelexToken t);
#if FFESTR_VXT
static ffelexHandler ffestb_V0251_ (ffelexToken t);
static ffelexHandler ffestb_V0252_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0253_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0254_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0255_ (ffelexToken t);
static ffelexHandler ffestb_V0256_ (ffelexToken t);
static ffelexHandler ffestb_V0257_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0258_ (ffelexToken t);
#endif
#if FFESTB_KILL_EASY_
static void ffestb_subr_kill_easy_ (ffestpInquireIx max);
#else
static void ffestb_subr_kill_accept_ (void);
static void ffestb_subr_kill_beru_ (void);
static void ffestb_subr_kill_close_ (void);
static void ffestb_subr_kill_delete_ (void);
static void ffestb_subr_kill_find_ (void);
static void ffestb_subr_kill_inquire_ (void);
static void ffestb_subr_kill_open_ (void);
static void ffestb_subr_kill_print_ (void);
static void ffestb_subr_kill_read_ (void);
static void ffestb_subr_kill_rewrite_ (void);
static void ffestb_subr_kill_type_ (void);
static void ffestb_subr_kill_vxtcode_ (void);
static void ffestb_subr_kill_write_ (void);
#endif
static ffelexHandler ffestb_beru1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_beru2_ (ffelexToken t);
static ffelexHandler ffestb_beru3_ (ffelexToken t);
static ffelexHandler ffestb_beru4_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_beru5_ (ffelexToken t);
static ffelexHandler ffestb_beru6_ (ffelexToken t);
static ffelexHandler ffestb_beru7_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_beru8_ (ffelexToken t);
static ffelexHandler ffestb_beru9_ (ffelexToken t);
static ffelexHandler ffestb_beru10_ (ffelexToken t);
#if FFESTR_VXT
static ffelexHandler ffestb_vxtcode1_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_vxtcode2_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_vxtcode3_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_vxtcode4_ (ffelexToken t);
static ffelexHandler ffestb_vxtcode5_ (ffelexToken t);
static ffelexHandler ffestb_vxtcode6_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_vxtcode7_ (ffelexToken t);
static ffelexHandler ffestb_vxtcode8_ (ffelexToken t);
static ffelexHandler ffestb_vxtcode9_ (ffelexToken t);
static ffelexHandler ffestb_vxtcode10_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#endif
static ffelexHandler ffestb_R9041_ (ffelexToken t);
static ffelexHandler ffestb_R9042_ (ffelexToken t);
static ffelexHandler ffestb_R9043_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9044_ (ffelexToken t);
static ffelexHandler ffestb_R9045_ (ffelexToken t);
static ffelexHandler ffestb_R9046_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9047_ (ffelexToken t);
static ffelexHandler ffestb_R9048_ (ffelexToken t);
static ffelexHandler ffestb_R9049_ (ffelexToken t);
static ffelexHandler ffestb_R9071_ (ffelexToken t);
static ffelexHandler ffestb_R9072_ (ffelexToken t);
static ffelexHandler ffestb_R9073_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9074_ (ffelexToken t);
static ffelexHandler ffestb_R9075_ (ffelexToken t);
static ffelexHandler ffestb_R9076_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9077_ (ffelexToken t);
static ffelexHandler ffestb_R9078_ (ffelexToken t);
static ffelexHandler ffestb_R9079_ (ffelexToken t);
static ffelexHandler ffestb_R9091_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9092_ (ffelexToken t);
static ffelexHandler ffestb_R9093_ (ffelexToken t);
static ffelexHandler ffestb_R9094_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9095_ (ffelexToken t);
static ffelexHandler ffestb_R9096_ (ffelexToken t);
static ffelexHandler ffestb_R9097_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9098_ (ffelexToken t);
static ffelexHandler ffestb_R9099_ (ffelexToken t);
static ffelexHandler ffestb_R90910_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R90911_ (ffelexToken t);
static ffelexHandler ffestb_R90912_ (ffelexToken t);
static ffelexHandler ffestb_R90913_ (ffelexToken t);
static ffelexHandler ffestb_R90914_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R90915_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9101_ (ffelexToken t);
static ffelexHandler ffestb_R9102_ (ffelexToken t);
static ffelexHandler ffestb_R9103_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9104_ (ffelexToken t);
static ffelexHandler ffestb_R9105_ (ffelexToken t);
static ffelexHandler ffestb_R9106_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9107_ (ffelexToken t);
static ffelexHandler ffestb_R9108_ (ffelexToken t);
static ffelexHandler ffestb_R9109_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R91010_ (ffelexToken t);
static ffelexHandler ffestb_R91011_ (ffelexToken t);
static ffelexHandler ffestb_R91012_ (ffelexToken t);
static ffelexHandler ffestb_R91013_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R91014_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9111_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9112_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9231_ (ffelexToken t);
static ffelexHandler ffestb_R9232_ (ffelexToken t);
static ffelexHandler ffestb_R9233_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9234_ (ffelexToken t);
static ffelexHandler ffestb_R9235_ (ffelexToken t);
static ffelexHandler ffestb_R9236_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R9237_ (ffelexToken t);
static ffelexHandler ffestb_R9238_ (ffelexToken t);
static ffelexHandler ffestb_R9239_ (ffelexToken t);
static ffelexHandler ffestb_R92310_ (ffelexToken t);
static ffelexHandler ffestb_R92311_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#if FFESTR_VXT
static ffelexHandler ffestb_V0181_ (ffelexToken t);
static ffelexHandler ffestb_V0182_ (ffelexToken t);
static ffelexHandler ffestb_V0183_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0184_ (ffelexToken t);
static ffelexHandler ffestb_V0185_ (ffelexToken t);
static ffelexHandler ffestb_V0186_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0187_ (ffelexToken t);
static ffelexHandler ffestb_V0188_ (ffelexToken t);
static ffelexHandler ffestb_V0189_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V01810_ (ffelexToken t);
static ffelexHandler ffestb_V01811_ (ffelexToken t);
static ffelexHandler ffestb_V01812_ (ffelexToken t);
static ffelexHandler ffestb_V01813_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0191_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0192_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#endif
static ffelexHandler ffestb_V0201_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0202_ (ffelexToken ft, ffebld expr,
ffelexToken t);
#if FFESTR_VXT
static ffelexHandler ffestb_V0211_ (ffelexToken t);
static ffelexHandler ffestb_V0212_ (ffelexToken t);
static ffelexHandler ffestb_V0213_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0214_ (ffelexToken t);
static ffelexHandler ffestb_V0215_ (ffelexToken t);
static ffelexHandler ffestb_V0216_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0217_ (ffelexToken t);
static ffelexHandler ffestb_V0218_ (ffelexToken t);
static ffelexHandler ffestb_V0219_ (ffelexToken t);
static ffelexHandler ffestb_V0261_ (ffelexToken t);
static ffelexHandler ffestb_V0262_ (ffelexToken t);
static ffelexHandler ffestb_V0263_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0264_ (ffelexToken t);
static ffelexHandler ffestb_V0265_ (ffelexToken t);
static ffelexHandler ffestb_V0266_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0267_ (ffelexToken t);
static ffelexHandler ffestb_V0268_ (ffelexToken t);
static ffelexHandler ffestb_V0269_ (ffelexToken t);
#endif
#if FFESTR_F90
static ffelexHandler ffestb_dimlist1_ (ffelexToken t);
static ffelexHandler ffestb_dimlist2_ (ffelexToken t);
static ffelexHandler ffestb_dimlist3_ (ffelexToken t);
static ffelexHandler ffestb_dimlist4_ (ffelexToken t);
#endif
static ffelexHandler ffestb_dummy1_ (ffelexToken t);
static ffelexHandler ffestb_dummy2_ (ffelexToken t);
static ffelexHandler ffestb_R5241_ (ffelexToken t);
static ffelexHandler ffestb_R5242_ (ffelexToken t);
static ffelexHandler ffestb_R5243_ (ffelexToken t);
static ffelexHandler ffestb_R5244_ (ffelexToken t);
static ffelexHandler ffestb_R5471_ (ffelexToken t);
static ffelexHandler ffestb_R5472_ (ffelexToken t);
static ffelexHandler ffestb_R5473_ (ffelexToken t);
static ffelexHandler ffestb_R5474_ (ffelexToken t);
static ffelexHandler ffestb_R5475_ (ffelexToken t);
static ffelexHandler ffestb_R5476_ (ffelexToken t);
static ffelexHandler ffestb_R5477_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_R6241_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_R6242_ (ffelexToken t);
#endif
static ffelexHandler ffestb_R12291_ (ffelexToken t);
static ffelexHandler ffestb_R12292_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_chartype1_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_decl_recursive1_ (ffelexToken t);
static ffelexHandler ffestb_decl_recursive2_ (ffelexToken t);
static ffelexHandler ffestb_decl_recursive3_ (ffelexToken t);
static ffelexHandler ffestb_decl_recursive4_ (ffelexToken t);
#endif
static ffelexHandler ffestb_decl_attrs_ (ffelexToken t);
static ffelexHandler ffestb_decl_attrs_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_attrs_2_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_decl_attrs_3_ (ffelexToken t);
static ffelexHandler ffestb_decl_attrs_4_ (ffelexToken t);
static ffelexHandler ffestb_decl_attrs_5_ (ffelexToken t);
static ffelexHandler ffestb_decl_attrs_6_ (ffelexToken t);
#endif
static ffelexHandler ffestb_decl_attrs_7_ (ffelexToken t);
static ffelexHandler ffestb_decl_attrsp_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_2_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_3_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_4_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_5_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_6_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_ents_7_ (ffelexToken t);
static ffelexHandler ffestb_decl_ents_8_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_ents_9_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_ents_10_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_ents_11_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_2_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_3_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_4_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_entsp_5_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_6_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_7_ (ffelexToken t);
static ffelexHandler ffestb_decl_entsp_8_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_decl_func_ (ffelexToken t);
#endif
static ffelexHandler ffestb_decl_funcname_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_2_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_3_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_decl_funcname_4_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_5_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_6_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_7_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_8_ (ffelexToken t);
static ffelexHandler ffestb_decl_funcname_9_ (ffelexToken t);
#if FFESTR_VXT
static ffelexHandler ffestb_V0031_ (ffelexToken t);
static ffelexHandler ffestb_V0032_ (ffelexToken t);
static ffelexHandler ffestb_V0033_ (ffelexToken t);
static ffelexHandler ffestb_V0034_ (ffelexToken t);
static ffelexHandler ffestb_V0035_ (ffelexToken t);
static ffelexHandler ffestb_V0036_ (ffelexToken t);
static ffelexHandler ffestb_V0161_ (ffelexToken t);
static ffelexHandler ffestb_V0162_ (ffelexToken t);
static ffelexHandler ffestb_V0163_ (ffelexToken t);
static ffelexHandler ffestb_V0164_ (ffelexToken t);
static ffelexHandler ffestb_V0165_ (ffelexToken t);
static ffelexHandler ffestb_V0166_ (ffelexToken t);
#endif
static ffelexHandler ffestb_V0271_ (ffelexToken t);
static ffelexHandler ffestb_V0272_ (ffelexToken ft, ffebld expr,
ffelexToken t);
static ffelexHandler ffestb_V0273_ (ffelexToken t);
static ffelexHandler ffestb_decl_R5391_ (ffelexToken t);
static ffelexHandler ffestb_decl_R5392_ (ffelexToken t);
#if FFESTR_F90
static ffelexHandler ffestb_decl_R5393_ (ffelexToken t);
#endif
static ffelexHandler ffestb_decl_R5394_ (ffelexToken t);
static ffelexHandler ffestb_decl_R5395_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539letters_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539letters_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539letters_2_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539letters_3_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539letters_4_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539letters_5_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539maybe_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539maybe_1_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539maybe_2_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539maybe_3_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539maybe_4_ (ffelexToken t);
static ffelexHandler ffestb_decl_R539maybe_5_ (ffelexToken t);
#if FFESTB_KILL_EASY_
#define ffestb_subr_kill_accept_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_acceptix)
#define ffestb_subr_kill_beru_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_beruix)
#define ffestb_subr_kill_close_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_closeix)
#define ffestb_subr_kill_delete_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_deleteix)
#define ffestb_subr_kill_find_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_findix)
#define ffestb_subr_kill_inquire_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_inquireix)
#define ffestb_subr_kill_open_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_openix)
#define ffestb_subr_kill_print_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_printix)
#define ffestb_subr_kill_read_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_readix)
#define ffestb_subr_kill_rewrite_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_rewriteix)
#define ffestb_subr_kill_type_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_typeix)
#define ffestb_subr_kill_vxtcode_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_vxtcodeix)
#define ffestb_subr_kill_write_() \
ffestb_subr_kill_easy_((ffestpInquireIx) FFESTP_writeix)
#endif
static ffelexHandler
ffestb_subr_ambig_nope_ (ffelexToken t)
{
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static void
ffestb_subr_ambig_to_ents_ ()
{
ffelexToken nt;
nt = ffelex_token_name_from_names (ffesta_tokens[1], 0, 0);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_tokens[1] = nt;
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (!ffestb_local_.decl.aster_after)
{
if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
{
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
ffestb_local_.decl.len, ffestb_local_.decl.lent);
if (ffestb_local_.decl.kindt != NULL)
{
ffelex_token_kill (ffestb_local_.decl.kindt);
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
}
if (ffestb_local_.decl.lent != NULL)
{
ffelex_token_kill (ffestb_local_.decl.lent);
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
}
}
else
{
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
ffestb_local_.decl.kind, ffestb_local_.decl.kindt, NULL,
NULL);
if (ffestb_local_.decl.kindt != NULL)
{
ffelex_token_kill (ffestb_local_.decl.kindt);
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
}
}
return;
}
if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
{
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
ffestb_local_.decl.kind, ffestb_local_.decl.kindt, NULL, NULL);
if (ffestb_local_.decl.kindt != NULL)
{
ffelex_token_kill (ffestb_local_.decl.kindt);
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
}
}
else if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
}
static ffelexHandler
ffestb_subr_dimlist_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
#ifdef FFECOM_dimensionsMAX
if (ffestb_subrargs_.dim_list.ndims++ == FFECOM_dimensionsMAX)
{
ffesta_ffebad_1t (FFEBAD_TOO_MANY_DIMS, ft);
ffestb_subrargs_.dim_list.ok = TRUE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
}
#endif
ffestt_dimlist_append (ffestb_subrargs_.dim_list.dims, NULL, expr,
ffelex_token_use (t));
ffestb_subrargs_.dim_list.ok = TRUE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
case FFELEX_typeCOMMA:
if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
break;
#ifdef FFECOM_dimensionsMAX
if (ffestb_subrargs_.dim_list.ndims++ == FFECOM_dimensionsMAX)
{
ffesta_ffebad_1t (FFEBAD_TOO_MANY_DIMS, ft);
return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_2_);
}
#endif
ffestt_dimlist_append (ffestb_subrargs_.dim_list.dims, NULL, expr,
ffelex_token_use (t));
return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeCOLON:
if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
break;
#ifdef FFECOM_dimensionsMAX
if (ffestb_subrargs_.dim_list.ndims++ == FFECOM_dimensionsMAX)
{
ffesta_ffebad_1t (FFEBAD_TOO_MANY_DIMS, ft);
return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_2_);
}
#endif
ffestt_dimlist_append (ffestb_subrargs_.dim_list.dims, expr, NULL,
ffelex_token_use (t));
return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_1_);
default:
break;
}
ffestb_subrargs_.dim_list.ok = FALSE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler (t);
}
static ffelexHandler
ffestb_subr_dimlist_1_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_subrargs_.dim_list.dims->previous->upper = expr;
ffestb_subrargs_.dim_list.ok = TRUE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
case FFELEX_typeCOMMA:
if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
break;
ffestb_subrargs_.dim_list.dims->previous->upper = expr;
return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
ffestb_subrargs_.dim_list.ctx, (ffeexprCallback) ffestb_subr_dimlist_);
default:
break;
}
ffestb_subrargs_.dim_list.ok = FALSE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler (t);
}
static ffelexHandler
ffestb_subr_dimlist_2_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_subrargs_.dim_list.ok = TRUE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler;
case FFELEX_typeCOMMA:
case FFELEX_typeCOLON:
if ((expr != NULL) && (ffebld_op (expr) == FFEBLD_opSTAR))
break;
return (ffelexHandler) ffeexpr_rhs (ffestb_subrargs_.dim_list.pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_2_);
default:
break;
}
ffestb_subrargs_.dim_list.ok = FALSE;
return (ffelexHandler) ffestb_subrargs_.dim_list.handler (t);
}
static ffelexHandler
ffestb_subr_name_list_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (ffestt_tokenlist_count (ffestb_subrargs_.name_list.args) != 0)
{
ffebad_start (FFEBAD_TRAILING_COMMA);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
}
ffestb_subrargs_.name_list.ok = TRUE;
ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
if (ffestb_subrargs_.name_list.names)
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_subrargs_.name_list.handler;
case FFELEX_typeASTERISK:
if (!ffestb_subrargs_.name_list.is_subr)
break;
case FFELEX_typeNAME:
ffestt_tokenlist_append (ffestb_subrargs_.name_list.args,
ffelex_token_use (t));
return (ffelexHandler) ffestb_subr_name_list_1_;
default:
break;
}
ffestb_subrargs_.name_list.ok = FALSE;
ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
if (ffestb_subrargs_.name_list.names)
ffelex_set_names (TRUE);
return (ffelexHandler) (*ffestb_subrargs_.name_list.handler) (t);
}
static ffelexHandler
ffestb_subr_name_list_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_subr_name_list_;
case FFELEX_typeCLOSE_PAREN:
ffestb_subrargs_.name_list.ok = TRUE;
ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
if (ffestb_subrargs_.name_list.names)
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_subrargs_.name_list.handler;
default:
ffestb_subrargs_.name_list.ok = FALSE;
ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
if (ffestb_subrargs_.name_list.names)
ffelex_set_names (TRUE);
return (ffelexHandler) (*ffestb_subrargs_.name_list.handler) (t);
}
}
static void
ffestb_subr_R1001_append_p_ (void)
{
ffesttFormatList f;
if (!ffestb_local_.format.pre.present)
{
ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_P_SPEC, ffestb_local_.format.t);
ffelex_token_kill (ffestb_local_.format.t);
return;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeP;
f->t = ffestb_local_.format.t;
f->u.R1010.val = ffestb_local_.format.pre;
}
static ffelexHandler
ffestb_decl_kindparam_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_kindparam_1_;
default:
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextKINDTYPE,
(ffeexprCallback) ffestb_decl_kindparam_2_)))
(t);
}
}
static ffelexHandler
ffestb_decl_kindparam_1_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestr_other (ffesta_tokens[1]) != FFESTR_otherKIND)
break;
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextKINDTYPE, (ffeexprCallback) ffestb_decl_kindparam_2_);
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextKINDTYPE, (ffeexprCallback) ffestb_decl_kindparam_2_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_kindparam_2_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_local_.decl.kind = expr;
ffestb_local_.decl.kindt = ffelex_token_use (ft);
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_starkind_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestb_local_.decl.kindt = ffelex_token_use (t);
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_starlen_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = ffelex_token_use (t);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE,
(ffeexprCallback) ffestb_decl_starlen_1_);
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_starlen_1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestb_local_.decl.len = expr;
ffestb_local_.decl.lent = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_typeparams_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_typeparams_1_;
default:
if (ffestb_local_.decl.lent == NULL)
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE,
(ffeexprCallback) ffestb_decl_typeparams_2_)))
(t);
if (ffestb_local_.decl.kindt != NULL)
break;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextKINDTYPE,
(ffeexprCallback) ffestb_decl_typeparams_3_)))
(t);
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_typeparams_1_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
switch (ffestr_other (ffesta_tokens[1]))
{
case FFESTR_otherLEN:
if (ffestb_local_.decl.lent != NULL)
break;
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE,
(ffeexprCallback) ffestb_decl_typeparams_2_);
case FFESTR_otherKIND:
if (ffestb_local_.decl.kindt != NULL)
break;
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextKINDTYPE,
(ffeexprCallback) ffestb_decl_typeparams_3_);
default:
break;
}
break;
default:
nt = ffesta_tokens[1];
if (ffestb_local_.decl.lent == NULL)
next = (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE,
(ffeexprCallback) ffestb_decl_typeparams_2_)))
(nt);
else if (ffestb_local_.decl.kindt == NULL)
next = (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextKINDTYPE,
(ffeexprCallback) ffestb_decl_typeparams_3_)))
(nt);
else
{
ffesta_tokens[1] = nt;
break;
}
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_typeparams_2_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_local_.decl.len = expr;
ffestb_local_.decl.lent = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
case FFELEX_typeCOMMA:
ffestb_local_.decl.len = expr;
ffestb_local_.decl.lent = ffelex_token_use (ft);
return (ffelexHandler) ffestb_decl_typeparams_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_typeparams_3_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_local_.decl.kind = expr;
ffestb_local_.decl.kindt = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
case FFELEX_typeCOMMA:
ffestb_local_.decl.kind = expr;
ffestb_local_.decl.kindt = ffelex_token_use (ft);
return (ffelexHandler) ffestb_decl_typeparams_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
static ffelexHandler
ffestb_decl_typetype1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffestb_local_.decl.kindt = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_typetype2_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_typetype2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_local_.decl.type = FFESTP_typeTYPE;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_local_.decl.handler;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffelex_token_kill (ffestb_local_.decl.kindt);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
ffestb_local_.decl.badname,
t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
static ffelexHandler
ffestb_subr_label_list_ (ffelexToken t)
{
if (ffelex_token_type (t) == FFELEX_typeNUMBER)
{
ffestt_tokenlist_append (ffestb_subrargs_.label_list.labels,
ffelex_token_use (t));
return (ffelexHandler) ffestb_subr_label_list_1_;
}
ffestb_subrargs_.label_list.ok = FALSE;
return (ffelexHandler) (*ffestb_subrargs_.label_list.handler) (t);
}
static ffelexHandler
ffestb_subr_label_list_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_subr_label_list_;
case FFELEX_typeCLOSE_PAREN:
ffestb_subrargs_.label_list.ok = TRUE;
return (ffelexHandler) ffestb_subrargs_.label_list.handler;
default:
ffestb_subrargs_.label_list.ok = FALSE;
return (ffelexHandler) (*ffestb_subrargs_.label_list.handler) (t);
}
}
ffelexHandler
ffestb_do (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexHandler next;
ffelexToken nt;
ffestrSecond kw;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstDO)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_do1_;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_do2_;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_do3_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_do1_ (t);
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstDO)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDO);
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (! ISDIGIT (*p))
goto bad_i;
ffesta_tokens[1] = ffelex_token_number_from_names (ffesta_tokens[0],
i);
p += ffelex_token_length (ffesta_tokens[1]);
i += ffelex_token_length (ffesta_tokens[1]);
if (((*p) != 'W') && ((*p) != 'w'))
goto bad_i1;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
kw = ffestr_second (nt);
ffelex_token_kill (nt);
if (kw != FFESTR_secondWHILE)
goto bad_i1;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDOWHILE, (ffeexprCallback) ffestb_do4_);
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (*p == '\0')
{
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_do2_;
}
if (! ISDIGIT (*p))
goto bad_i;
ffesta_tokens[1] = ffelex_token_number_from_names (ffesta_tokens[0],
i);
p += ffelex_token_length (ffesta_tokens[1]);
i += ffelex_token_length (ffesta_tokens[1]);
if (*p != '\0')
goto bad_i1;
return (ffelexHandler) ffestb_do2_;
case FFELEX_typeEQUALS:
if (ISDIGIT (*p))
{
ffesta_tokens[1]
= ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (ffesta_tokens[1]);
i += ffelex_token_length (ffesta_tokens[1]);
}
else
ffesta_tokens[1] = NULL;
if (!ffesrc_is_name_init (*p))
goto bad_i1;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_lhs
(ffesta_output_pool, FFEEXPR_contextDO,
(ffeexprCallback) ffestb_do6_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (ISDIGIT (*p))
{
ffesta_tokens[1]
= ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (ffesta_tokens[1]);
i += ffelex_token_length (ffesta_tokens[1]);
}
else
ffesta_tokens[1] = NULL;
if (*p != '\0')
goto bad_i1;
return (ffelexHandler) ffestb_do1_ (t);
}
default:
goto bad_0;
}
bad_0:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i1:
if (ffesta_tokens[1])
ffelex_token_kill (ffesta_tokens[1]);
bad_i:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_dowhile (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstDOWHILE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDOWHILE);
if (*p != '\0')
goto bad_i;
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDOWHILE, (ffeexprCallback) ffestb_do4_);
case FFELEX_typeEQUALS:
ffesta_tokens[1] = NULL;
nt = ffelex_token_name_from_names (ffesta_tokens[0], FFESTR_firstlDO,
0);
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_lhs
(ffesta_output_pool, FFEEXPR_contextDO,
(ffeexprCallback) ffestb_do6_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
default:
goto bad_0;
}
bad_0:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
return (ffelexHandler) ffestb_do2_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (ffesta_tokens[1] != NULL)
ffestc_R819B (ffesta_construct_name, ffesta_tokens[1], NULL,
NULL);
else
ffestc_R820B (ffesta_construct_name, NULL, NULL);
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeNAME:
return (ffelexHandler) ffestb_do2_ (t);
default:
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_do3_;
default:
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do3_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDO, (ffeexprCallback) ffestb_do6_)))
(ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) (*next) (t);
case FFELEX_typeOPEN_PAREN:
if (ffestr_second (ffesta_tokens[2]) != FFESTR_secondWHILE)
{
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDOWHILE, (ffeexprCallback) ffestb_do4_);
default:
break;
}
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do4_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[2] = ffelex_token_use (ft);
ffestb_local_.dowhile.expr = expr;
return (ffelexHandler) ffestb_do5_;
default:
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (ffesta_tokens[1] != NULL)
ffestc_R819B (ffesta_construct_name, ffesta_tokens[1],
ffestb_local_.dowhile.expr, ffesta_tokens[2]);
else
ffestc_R820B (ffesta_construct_name, ffestb_local_.dowhile.expr,
ffesta_tokens[2]);
}
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do6_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
assert (ffelex_token_type (t) == FFELEX_typeEQUALS);
ffesta_tokens[2] = ffelex_token_use (ft);
ffestb_local_.do_stmt.var = expr;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDO, (ffeexprCallback) ffestb_do7_);
}
static ffelexHandler
ffestb_do7_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (expr == NULL)
break;
ffesta_tokens[3] = ffelex_token_use (ft);
ffestb_local_.do_stmt.start = expr;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDO, (ffeexprCallback) ffestb_do8_);
default:
break;
}
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do8_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffesta_tokens[4] = ffelex_token_use (ft);
ffestb_local_.do_stmt.end = expr;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDO, (ffeexprCallback) ffestb_do9_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
ffesta_tokens[4] = ffelex_token_use (ft);
ffestb_local_.do_stmt.end = expr;
return (ffelexHandler) ffestb_do9_ (NULL, NULL, t);
default:
break;
}
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_do9_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if ((expr == NULL) && (ft != NULL))
break;
if (!ffesta_is_inhibited ())
{
if (ffesta_tokens[1] != NULL)
ffestc_R819A (ffesta_construct_name, ffesta_tokens[1],
ffestb_local_.do_stmt.var, ffesta_tokens[2],
ffestb_local_.do_stmt.start, ffesta_tokens[3],
ffestb_local_.do_stmt.end, ffesta_tokens[4], expr, ft);
else
ffestc_R820A (ffesta_construct_name, ffestb_local_.do_stmt.var,
ffesta_tokens[2], ffestb_local_.do_stmt.start,
ffesta_tokens[3], ffestb_local_.do_stmt.end,
ffesta_tokens[4], expr, ft);
}
ffelex_token_kill (ffesta_tokens[4]);
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffelex_token_kill (ffesta_tokens[4]);
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_else (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstELSE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
ffestb_args.elsexyz.second = FFESTR_secondNone;
return (ffelexHandler) ffestb_else1_ (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
ffestb_args.elsexyz.second = ffesta_second_kw;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_else1_;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstELSE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlELSE)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlELSE);
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
}
else
ffesta_tokens[1] = NULL;
ffestb_args.elsexyz.second = FFESTR_secondNone;
return (ffelexHandler) ffestb_else1_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ELSE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_elsexyz (ffelexToken t)
{
ffeTokenLength i;
const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (ffesta_first_kw == FFESTR_firstELSEIF)
goto bad_0;
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_else1_ (t);
case FFELEX_typeNAME:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffesta_first_kw != FFESTR_firstELSEIF)
goto bad_0;
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_else1_ (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
case FFELEX_typeNAMES:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffesta_first_kw != FFESTR_firstELSEIF)
goto bad_1;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlELSEIF)
{
i = FFESTR_firstlELSEIF;
goto bad_i;
}
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_else1_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlELSE);
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
#if FFESTR_F90
if ((ffestb_args.elsexyz.second == FFESTR_secondWHERE)
&& (ffelex_token_length (ffesta_tokens[1]) != FFESTR_secondlWHERE))
ffestb_args.elsexyz.second = FFESTR_secondNone;
#endif
return (ffelexHandler) ffestb_else1_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ELSE IF", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_else1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
if (ffestb_args.elsexyz.second == FFESTR_secondIF)
{
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIF, (ffeexprCallback) ffestb_else2_);
}
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE", t);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
}
switch (ffestb_args.elsexyz.second)
{
#if FFESTR_F90
case FFESTR_secondWHERE:
if (!ffesta_is_inhibited ())
if ((ffesta_first_kw == FFESTR_firstELSEWHERE)
&& (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME))
ffestc_R744 ();
else
ffestc_elsewhere (ffesta_tokens[1]);
break;
#endif
default:
if (!ffesta_is_inhibited ())
ffestc_R805 (ffesta_tokens[1]);
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
}
static ffelexHandler
ffestb_else2_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
ffestb_local_.else_stmt.expr = expr;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_else3_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_else3_ (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_confirmed ();
if (ffestr_first (t) == FFESTR_firstTHEN)
return (ffelexHandler) ffestb_else4_;
break;
case FFELEX_typeNAMES:
ffesta_confirmed ();
if (ffestr_first (t) != FFESTR_firstTHEN)
break;
if (ffelex_token_length (t) == FFESTR_firstlTHEN)
return (ffelexHandler) ffestb_else4_;
p = ffelex_token_text (t) + (i = FFESTR_firstlTHEN);
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[2] = ffelex_token_name_from_names (t, i, 0);
return (ffelexHandler) ffestb_else5_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t, i, NULL);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_else4_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_tokens[2] = NULL;
return (ffelexHandler) ffestb_else5_ (t);
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_else5_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_else5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R804 (ffestb_local_.else_stmt.expr, ffesta_tokens[1],
ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_tokens[2] != NULL)
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ELSE IF", t);
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_tokens[2] != NULL)
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_end (ffelexToken t)
{
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstEND)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_tokens[1] = NULL;
ffestb_args.endxyz.second = FFESTR_secondNone;
return (ffelexHandler) ffestb_end3_ (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
ffestb_args.endxyz.second = ffesta_second_kw;
switch (ffesta_second_kw)
{
case FFESTR_secondFILE:
ffestb_args.beru.badname = "ENDFILE";
return (ffelexHandler) ffestb_beru;
case FFESTR_secondBLOCK:
return (ffelexHandler) ffestb_end1_;
#if FFESTR_F90
case FFESTR_secondINTERFACE:
#endif
#if FFESTR_VXT
case FFESTR_secondMAP:
case FFESTR_secondSTRUCTURE:
case FFESTR_secondUNION:
#endif
#if FFESTR_F90
case FFESTR_secondWHERE:
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_end3_;
#endif
case FFESTR_secondNone:
goto bad_1;
default:
return (ffelexHandler) ffestb_end2_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstEND)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlEND)
{
i = FFESTR_firstlEND;
goto bad_i;
}
ffesta_tokens[1] = NULL;
ffestb_args.endxyz.second = FFESTR_secondNone;
return (ffelexHandler) ffestb_end3_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_endxyz (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_end3_ (t);
case FFELEX_typeNAME:
ffesta_confirmed ();
switch (ffestb_args.endxyz.second)
{
#if FFESTR_F90
case FFESTR_secondINTERFACE:
#endif
#if FFESTR_VXT
case FFESTR_secondMAP:
case FFESTR_secondSTRUCTURE:
case FFESTR_secondUNION:
#endif
#if FFESTR_F90
case FFESTR_secondWHERE:
goto bad_1;
#endif
case FFESTR_secondBLOCK:
if (ffesta_second_kw != FFESTR_secondDATA)
goto bad_1;
return (ffelexHandler) ffestb_end2_;
default:
return (ffelexHandler) ffestb_end2_ (t);
}
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
case FFELEX_typeNAMES:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
if (ffestb_args.endxyz.second == FFESTR_secondBLOCK)
{
i = FFESTR_firstlEND;
goto bad_i;
}
if (ffelex_token_length (ffesta_tokens[0]) != ffestb_args.endxyz.len)
{
p = ffelex_token_text (ffesta_tokens[0])
+ (i = ffestb_args.endxyz.len);
switch (ffestb_args.endxyz.second)
{
#if FFESTR_F90
case FFESTR_secondINTERFACE:
#endif
#if FFESTR_VXT
case FFESTR_secondMAP:
case FFESTR_secondSTRUCTURE:
case FFESTR_secondUNION:
#endif
#if FFESTR_F90
case FFESTR_secondWHERE:
goto bad_i;
#endif
default:
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_end3_ (t);
}
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_end3_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_end1_ (ffelexToken t)
{
if ((ffelex_token_type (t) == FFELEX_typeNAME)
&& (ffesrc_strcmp_2c (ffe_case_match (), ffelex_token_text (t), "DATA",
"data", "Data")
== 0))
{
return (ffelexHandler) ffestb_end2_;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_end2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_end3_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_end3_ (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_end3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", t);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (ffestb_args.endxyz.second == FFESTR_secondNone)
{
if (!ffesta_is_inhibited ())
ffestc_end ();
return (ffelexHandler) ffesta_zero (t);
}
break;
}
switch (ffestb_args.endxyz.second)
{
#if FFESTR_F90
case FFESTR_secondTYPE:
if (!ffesta_is_inhibited ())
ffestc_R425 (ffesta_tokens[1]);
break;
#endif
#if FFESTR_F90
case FFESTR_secondWHERE:
if (!ffesta_is_inhibited ())
ffestc_R745 ();
break;
#endif
case FFESTR_secondIF:
if (!ffesta_is_inhibited ())
ffestc_R806 (ffesta_tokens[1]);
break;
case FFESTR_secondSELECT:
if (!ffesta_is_inhibited ())
ffestc_R811 (ffesta_tokens[1]);
break;
case FFESTR_secondDO:
if (!ffesta_is_inhibited ())
ffestc_R825 (ffesta_tokens[1]);
break;
case FFESTR_secondPROGRAM:
if (!ffesta_is_inhibited ())
ffestc_R1103 (ffesta_tokens[1]);
break;
#if FFESTR_F90
case FFESTR_secondMODULE:
if (!ffesta_is_inhibited ())
ffestc_R1106 (ffesta_tokens[1]);
break;
#endif
case FFESTR_secondBLOCK:
case FFESTR_secondBLOCKDATA:
if (!ffesta_is_inhibited ())
ffestc_R1112 (ffesta_tokens[1]);
break;
#if FFESTR_F90
case FFESTR_secondINTERFACE:
if (!ffesta_is_inhibited ())
ffestc_R1203 ();
break;
#endif
case FFESTR_secondFUNCTION:
if (!ffesta_is_inhibited ())
ffestc_R1221 (ffesta_tokens[1]);
break;
case FFESTR_secondSUBROUTINE:
if (!ffesta_is_inhibited ())
ffestc_R1225 (ffesta_tokens[1]);
break;
#if FFESTR_VXT
case FFESTR_secondSTRUCTURE:
if (!ffesta_is_inhibited ())
ffestc_V004 ();
break;
#endif
#if FFESTR_VXT
case FFESTR_secondUNION:
if (!ffesta_is_inhibited ())
ffestc_V010 ();
break;
#endif
#if FFESTR_VXT
case FFESTR_secondMAP:
if (!ffesta_is_inhibited ())
ffestc_V013 ();
break;
#endif
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "END", ffesta_tokens[0]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
}
ffelexHandler
ffestb_goto (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffesta_first_kw)
{
case FFESTR_firstGO:
if ((ffelex_token_type (t) != FFELEX_typeNAME)
|| (ffesta_second_kw != FFESTR_secondTO))
goto bad_1;
ffesta_confirmed ();
return (ffelexHandler) ffestb_goto1_;
case FFESTR_firstGOTO:
return (ffelexHandler) ffestb_goto1_ (t);
default:
goto bad_0;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstGOTO)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
case FFELEX_typePERCENT:
case FFELEX_typeCOMMA:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
}
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlGOTO)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlGOTO);
if (ISDIGIT (*p))
{
nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (nt);
i += ffelex_token_length (nt);
if (*p != '\0')
{
ffelex_token_kill (nt);
goto bad_i;
}
}
else if (ffesrc_is_name_init (*p))
{
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
}
else
goto bad_i;
next = (ffelexHandler) ffestb_goto1_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
return (ffelexHandler) ffestb_goto1_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "GO TO", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
if (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME)
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_goto2_;
case FFELEX_typeOPEN_PAREN:
ffesta_tokens[1] = ffelex_token_use (t);
ffestb_subrargs_.label_list.labels = ffestt_tokenlist_create ();
ffestb_subrargs_.label_list.handler = (ffelexHandler) ffestb_goto3_;
return (ffelexHandler) ffestb_subr_label_list_;
case FFELEX_typeNAME:
if (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME)
ffesta_confirmed ();
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextAGOTO,
(ffeexprCallback) ffestb_goto4_)))
(t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R836 (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "GO TO", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto3_ (ffelexToken t)
{
if (!ffestb_subrargs_.label_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextCGOTO,
(ffeexprCallback) ffestb_goto5_);
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
default:
ffesta_confirmed ();
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextCGOTO,
(ffeexprCallback) ffestb_goto5_)))
(t);
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "computed-GOTO", t);
ffelex_token_kill (ffesta_tokens[1]);
ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto4_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffestb_local_.go_to.expr = expr;
return (ffelexHandler) ffestb_goto6_;
case FFELEX_typeOPEN_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffestb_local_.go_to.expr = expr;
return (ffelexHandler) ffestb_goto6_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R839 (expr, ft, NULL);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assigned-GOTO", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto5_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R837 (ffestb_subrargs_.label_list.labels, expr, ft);
ffelex_token_kill (ffesta_tokens[1]);
ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "computed-GOTO", t);
ffelex_token_kill (ffesta_tokens[1]);
ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto6_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffesta_tokens[2] = ffelex_token_use (t);
ffestb_subrargs_.label_list.labels = ffestt_tokenlist_create ();
ffestb_subrargs_.label_list.handler = (ffelexHandler) ffestb_goto7_;
return (ffelexHandler) ffestb_subr_label_list_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assigned-GOTO", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_goto7_ (ffelexToken t)
{
if (!ffestb_subrargs_.label_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R839 (ffestb_local_.go_to.expr, ffesta_tokens[1],
ffestb_subrargs_.label_list.labels);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assigned-GOTO", t);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffestt_tokenlist_kill (ffestb_subrargs_.label_list.labels);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_halt (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
case FFELEX_typeAPOSTROPHE:
case FFELEX_typeQUOTE:
ffesta_confirmed ();
break;
}
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextSTOP,
(ffeexprCallback) ffestb_halt1_)))
(t);
case FFELEX_typeNAMES:
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
case FFELEX_typeAPOSTROPHE:
case FFELEX_typeQUOTE:
ffesta_confirmed ();
break;
}
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextSTOP,
(ffeexprCallback) ffestb_halt1_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
ffestb_args.halt.len);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
(ffesta_first_kw == FFESTR_firstSTOP)
? "STOP" : "PAUSE",
ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
(ffesta_first_kw == FFESTR_firstSTOP)
? "STOP" : "PAUSE",
t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_halt1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (ffesta_first_kw == FFESTR_firstSTOP)
ffestc_R842 (expr, ft);
else
ffestc_R843 (expr, ft);
}
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
(ffesta_first_kw == FFESTR_firstSTOP)
? "STOP" : "PAUSE",
t);
break;
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_if (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstIF)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstIF)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlIF)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextIF,
(ffeexprCallback) ffestb_if1_);
bad_0:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_if1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
ffestb_local_.if_stmt.expr = expr;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_if2_;
default:
break;
}
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_if2_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
case FFELEX_typeNAMES:
ffesta_confirmed ();
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_if3_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
if ((ffesta_construct_name == NULL)
|| (ffelex_token_type (t) != FFELEX_typeNUMBER))
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IF", t);
else
ffesta_ffebad_2st (FFEBAD_INVALID_STMT_FORM, "CONSTRUCT",
ffesta_construct_name, t);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_if3_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (ffestr_first (ffesta_tokens[2]) == FFESTR_firstTHEN)
{
if (!ffesta_is_inhibited ())
ffestc_R803 (ffesta_construct_name, ffestb_local_.if_stmt.expr,
ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
return (ffelexHandler) ffesta_zero (t);
}
break;
default:
break;
}
if (ffesta_construct_name != NULL)
{
if (!ffesta_is_inhibited ())
ffesta_ffebad_2st (FFEBAD_INVALID_STMT_FORM, "CONSTRUCT",
ffesta_construct_name, ffesta_tokens[2]);
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
if (!ffesta_is_inhibited ())
ffestc_R807 (ffestb_local_.if_stmt.expr, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
{
ffelexToken my_2 = ffesta_tokens[2];
next = (ffelexHandler) ffesta_two (my_2, t);
ffelex_token_kill (my_2);
}
return (ffelexHandler) next;
}
#if FFESTR_F90
ffelexHandler
ffestb_where (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstWHERE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstWHERE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlWHERE)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextWHERE,
(ffeexprCallback) ffestb_where1_);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
static ffelexHandler
ffestb_where1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
ffestb_local_.if_stmt.expr = expr;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_where2_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
static ffelexHandler
ffestb_where2_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
case FFELEX_typeNAMES:
ffesta_confirmed ();
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_where3_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R742 (ffestb_local_.if_stmt.expr, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WHERE", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
static ffelexHandler
ffestb_where3_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken my_2 = ffesta_tokens[2];
if (!ffesta_is_inhibited ())
ffestc_R740 (ffestb_local_.if_stmt.expr, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
next = (ffelexHandler) ffesta_two (my_2, t);
ffelex_token_kill (my_2);
return (ffelexHandler) next;
}
#endif
ffelexHandler
ffestb_let (ffelexToken t)
{
ffelexHandler next;
bool vxtparam;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
vxtparam = FALSE;
break;
case FFELEX_typeNAMES:
vxtparam = TRUE;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
case FFELEX_typePERCENT:
case FFELEX_typePOINTS:
ffestb_local_.let.vxtparam = FALSE;
break;
case FFELEX_typeEQUALS:
if (!vxtparam || (ffesta_first_kw != FFESTR_firstPARAMETER))
{
ffestb_local_.let.vxtparam = FALSE;
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + FFESTR_firstlPARAMETER;
ffestb_local_.let.vxtparam = ffesrc_is_name_init (*p);
break;
default:
goto bad_1;
}
next = (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextLET,
(ffeexprCallback) ffestb_let1_)))
(ffesta_tokens[0]);
return (ffelexHandler) (*next) (t);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assignment", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assignment", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_let1_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
ffestb_local_.let.dest = expr;
switch (ffelex_token_type (t))
{
#if FFESTR_F90
case FFELEX_typePOINTS:
#endif
case FFELEX_typeEQUALS:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextLET, (ffeexprCallback) ffestb_let2_);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "assignment", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_let2_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (ffestb_local_.let.vxtparam && !ffestc_is_let_not_V027 ())
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
#if FFESTR_F90
if (ffelex_token_type (ffesta_tokens[1]) == FFELEX_typeEQUALS)
#endif
ffestc_let (ffestb_local_.let.dest, expr, ft);
#if FFESTR_F90
else
ffestc_R738 (ffestb_local_.let.dest, expr, ft);
#endif
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM,
(ffelex_token_type (ffesta_tokens[1]) == FFELEX_typeEQUALS)
? "assignment" : "pointer-assignment",
t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
ffelexHandler
ffestb_type (ffelexToken t)
{
ffeTokenLength i;
const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstTYPE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
return (ffelexHandler) ffestb_type1_;
case FFELEX_typeNAME:
ffesta_tokens[1] = NULL;
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_type4_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstTYPE)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlTYPE);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeCOMMA:
if (*p != '\0')
goto bad_i;
ffesta_confirmed ();
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_type1_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1] = NULL;
ffesta_tokens[2]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_type4_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "TYPE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_type1_ (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
ffestb_local_.type.kw = ffestr_other (t);
switch (ffestb_local_.varlist.kw)
{
case FFESTR_otherPUBLIC:
case FFESTR_otherPRIVATE:
return (ffelexHandler) ffestb_type2_;
default:
ffelex_token_kill (ffesta_tokens[1]);
break;
}
break;
case FFELEX_typeNAMES:
ffesta_tokens[1] = ffelex_token_use (t);
ffestb_local_.type.kw = ffestr_other (t);
switch (ffestb_local_.varlist.kw)
{
case FFESTR_otherPUBLIC:
p = ffelex_token_text (t) + (i = FFESTR_otherlPUBLIC);
if (*p == '\0')
return (ffelexHandler) ffestb_type2_;
if (!ffesrc_is_name_init (*p))
goto bad_i1;
ffesta_tokens[2] = ffelex_token_name_from_names (t, i, 0);
return (ffelexHandler) ffestb_type4_;
case FFESTR_otherPRIVATE:
p = ffelex_token_text (t) + (i = FFESTR_otherlPRIVATE);
if (*p == '\0')
return (ffelexHandler) ffestb_type2_;
if (!ffesrc_is_name_init (*p))
goto bad_i1;
ffesta_tokens[2] = ffelex_token_name_from_names (t, i, 0);
return (ffelexHandler) ffestb_type4_;
default:
ffelex_token_kill (ffesta_tokens[1]);
break;
}
break;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_i1:
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "TYPE", t, i, NULL);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_type2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
return (ffelexHandler) ffestb_type3_;
case FFELEX_typeNAME:
return (ffelexHandler) ffestb_type3_ (t);
default:
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_type3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_type4_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_type4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R424 (ffesta_tokens[1], ffestb_local_.type.kw,
ffesta_tokens[2]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE", t);
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_varlist (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_R521A ();
return (ffelexHandler) ffesta_zero (t);
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_private ();
return (ffelexHandler) ffesta_zero (t);
#endif
default:
goto bad_1;
}
case FFELEX_typeCOMMA:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
if (!ffesta_is_inhibited ())
ffestc_R520_start ();
break;
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_R521Astart ();
break;
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_R521Bstart ();
break;
#endif
default:
ffesta_confirmed ();
goto bad_1;
}
return (ffelexHandler) ffestb_varlist5_;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstINTENT:
return (ffelexHandler) ffestb_varlist1_;
#endif
default:
goto bad_1;
}
case FFELEX_typeNAME:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
if (!ffesta_is_inhibited ())
ffestc_R1207_start ();
break;
#if FFESTR_F90
case FFESTR_firstINTENT:
goto bad_1;
#endif
case FFESTR_firstINTRINSIC:
if (!ffesta_is_inhibited ())
ffestc_R1208_start ();
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
if (!ffesta_is_inhibited ())
ffestc_R520_start ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_R521Astart ();
break;
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_R521Bstart ();
break;
#endif
default:
break;
}
return (ffelexHandler) ffestb_varlist5_ (t);
}
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.varlist.len);
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstINTENT:
goto bad_1;
#endif
default:
break;
}
if (*p != '\0')
break;
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_R521A ();
return (ffelexHandler) ffesta_zero (t);
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_private ();
return (ffelexHandler) ffesta_zero (t);
#endif
default:
goto bad_1;
}
case FFELEX_typeCOMMA:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstINTENT:
goto bad_1;
#endif
default:
break;
}
if (*p != '\0')
break;
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
if (!ffesta_is_inhibited ())
ffestc_R520_start ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_R521Astart ();
break;
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_R521Bstart ();
break;
#endif
default:
goto bad_1;
}
return (ffelexHandler) ffestb_varlist5_;
case FFELEX_typeOPEN_PAREN:
switch (ffesta_first_kw)
{
#if FFESTR_F90
case FFESTR_firstINTENT:
if (*p != '\0')
goto bad_1;
return (ffelexHandler) ffestb_varlist1_;
#endif
default:
goto bad_1;
}
case FFELEX_typeNAME:
ffesta_confirmed ();
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
if (!ffesta_is_inhibited ())
ffestc_R1207_start ();
break;
#if FFESTR_F90
case FFESTR_firstINTENT:
goto bad_1;
#endif
case FFESTR_firstINTRINSIC:
if (!ffesta_is_inhibited ())
ffestc_R1208_start ();
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
if (!ffesta_is_inhibited ())
ffestc_R520_start ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_R521Astart ();
break;
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_R521Bstart ();
break;
#endif
default:
break;
}
return (ffelexHandler) ffestb_varlist5_ (t);
default:
goto bad_1;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
ffestc_R1207_start ();
break;
case FFESTR_firstINTRINSIC:
ffestc_R1208_start ();
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
ffestc_R520_start ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
ffestc_R521Astart ();
break;
case FFESTR_firstPRIVATE:
ffestc_R521Bstart ();
break;
#endif
default:
assert (FALSE);
}
}
next = (ffelexHandler) ffestb_varlist5_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
static ffelexHandler
ffestb_varlist1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
ffestb_local_.varlist.kw = ffestr_other (t);
switch (ffestb_local_.varlist.kw)
{
case FFESTR_otherIN:
return (ffelexHandler) ffestb_varlist2_;
case FFESTR_otherINOUT:
return (ffelexHandler) ffestb_varlist3_;
case FFESTR_otherOUT:
return (ffelexHandler) ffestb_varlist3_;
default:
ffelex_token_kill (ffesta_tokens[1]);
break;
}
break;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_varlist2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_other (t))
{
case FFESTR_otherOUT:
ffestb_local_.varlist.kw = FFESTR_otherINOUT;
return (ffelexHandler) ffestb_varlist3_;
default:
break;
}
break;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_varlist4_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_varlist3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_varlist4_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_varlist4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R519_start (ffesta_tokens[1], ffestb_local_.varlist.kw);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_varlist5_;
case FFELEX_typeNAME:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R519_start (ffesta_tokens[1], ffestb_local_.varlist.kw);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_varlist5_ (t);
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
static ffelexHandler
ffestb_varlist5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_varlist6_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
break;
}
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
ffestc_R1207_finish ();
break;
#if FFESTR_F90
case FFESTR_firstINTENT:
ffestc_R519_finish ();
break;
#endif
case FFESTR_firstINTRINSIC:
ffestc_R1208_finish ();
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
ffestc_R520_finish ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
ffestc_R521Afinish ();
break;
case FFESTR_firstPRIVATE:
ffestc_R521Bfinish ();
break;
#endif
default:
assert (FALSE);
}
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_varlist6_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
ffestc_R1207_item (ffesta_tokens[1]);
break;
#if FFESTR_F90
case FFESTR_firstINTENT:
ffestc_R519_item (ffesta_tokens[1]);
break;
#endif
case FFESTR_firstINTRINSIC:
ffestc_R1208_item (ffesta_tokens[1]);
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
ffestc_R520_item (ffesta_tokens[1]);
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
ffestc_R521Aitem (ffesta_tokens[1]);
break;
case FFESTR_firstPRIVATE:
ffestc_R521Bitem (ffesta_tokens[1]);
break;
#endif
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_varlist5_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
ffestc_R1207_item (ffesta_tokens[1]);
ffestc_R1207_finish ();
break;
#if FFESTR_F90
case FFESTR_firstINTENT:
ffestc_R519_item (ffesta_tokens[1]);
ffestc_R519_finish ();
break;
#endif
case FFESTR_firstINTRINSIC:
ffestc_R1208_item (ffesta_tokens[1]);
ffestc_R1208_finish ();
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
ffestc_R520_item (ffesta_tokens[1]);
ffestc_R520_finish ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
ffestc_R521Aitem (ffesta_tokens[1]);
ffestc_R521Afinish ();
break;
case FFESTR_firstPRIVATE:
ffestc_R521Bitem (ffesta_tokens[1]);
ffestc_R521Bfinish ();
break;
#endif
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.varlist.badname, t);
break;
}
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstEXTERNAL:
ffestc_R1207_finish ();
break;
#if FFESTR_F90
case FFESTR_firstINTENT:
ffestc_R519_finish ();
break;
#endif
case FFESTR_firstINTRINSIC:
ffestc_R1208_finish ();
break;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
ffestc_R520_finish ();
break;
#endif
#if FFESTR_F90
case FFESTR_firstPUBLIC:
ffestc_R521Afinish ();
break;
case FFESTR_firstPRIVATE:
ffestc_R521Bfinish ();
break;
#endif
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
ffelexHandler
ffestb_R423B (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstSEQUENCE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstSEQUENCE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlSEQUENCE)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSEQUENCE);
goto bad_i;
}
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R423B ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SEQUENCE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SEQUENCE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "SEQUENCE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_R522 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstSAVE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R522 ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeNAME:
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R522start ();
return (ffelexHandler) ffestb_R5221_ (t);
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R522start ();
return (ffelexHandler) ffestb_R5221_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstSAVE)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSAVE);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (*p != '\0')
break;
if (!ffesta_is_inhibited ())
ffestc_R522 ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_R522start ();
return (ffelexHandler) ffestb_R5221_ (t);
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_R522start ();
return (ffelexHandler) ffestb_R5221_;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (!ffesta_is_inhibited ())
ffestc_R522start ();
next = (ffelexHandler) ffestb_R5221_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "SAVE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5221_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffestb_local_.R522.is_cblock = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R5224_;
case FFELEX_typeSLASH:
ffestb_local_.R522.is_cblock = TRUE;
return (ffelexHandler) ffestb_R5222_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R522finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5222_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R5223_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R522finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5223_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_R5224_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R522finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5224_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
{
if (ffestb_local_.R522.is_cblock)
ffestc_R522item_cblock (ffesta_tokens[1]);
else
ffestc_R522item_object (ffesta_tokens[1]);
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R5221_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
if (ffestb_local_.R522.is_cblock)
ffestc_R522item_cblock (ffesta_tokens[1]);
else
ffestc_R522item_object (ffesta_tokens[1]);
ffestc_R522finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SAVE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R522finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R528 (ffelexToken t)
{
unsigned const char *p;
ffeTokenLength i;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstDATA)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeSLASH:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
break;
case FFELEX_typeOPEN_PAREN:
break;
}
ffestb_local_.data.started = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5281_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstDATA)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDATA);
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (*p == '\0')
{
ffestb_local_.data.started = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDATA,
(ffeexprCallback)
ffestb_R5281_)))
(t);
}
break;
case FFELEX_typeCOMMA:
case FFELEX_typeSLASH:
ffesta_confirmed ();
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffestb_local_.data.started = FALSE;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
next = (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5281_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DATA", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5281_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.data.started)
{
ffestc_R528_start ();
ffestb_local_.data.started = TRUE;
}
ffestc_R528_item_object (expr, ft);
}
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5281_);
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.data.started)
{
ffestc_R528_start ();
ffestb_local_.data.started = TRUE;
}
ffestc_R528_item_object (expr, ft);
ffestc_R528_item_startvals ();
}
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5282_);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
break;
}
if (ffestb_local_.data.started && !ffesta_is_inhibited ())
ffestc_R528_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5282_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R528_item_value (NULL, NULL, expr, ft);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5282_);
case FFELEX_typeASTERISK:
if (expr == NULL)
break;
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,
(ffeexprCallback) ffestb_R5283_);
case FFELEX_typeSLASH:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_R528_item_value (NULL, NULL, expr, ft);
ffestc_R528_item_endvals (t);
}
return (ffelexHandler) ffestb_R5284_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
break;
}
if (!ffesta_is_inhibited ())
{
ffestc_R528_item_endvals (t);
ffestc_R528_finish ();
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5283_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R528_item_value (ffestb_local_.data.expr, ffesta_tokens[1],
expr, ft);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5282_);
case FFELEX_typeSLASH:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_R528_item_value (ffestb_local_.data.expr, ffesta_tokens[1],
expr, ft);
ffestc_R528_item_endvals (t);
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R5284_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
break;
}
if (!ffesta_is_inhibited ())
{
ffestc_R528_item_endvals (t);
ffestc_R528_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5284_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5281_);
case FFELEX_typeNAME:
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_R5281_)))
(t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R528_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DATA", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R528_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R537 (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstPARAMETER)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstPARAMETER)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlPARAMETER)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffestb_local_.parameter.started = FALSE;
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextPARAMETER,
(ffeexprCallback) ffestb_R5371_);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5371_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
ffestb_local_.parameter.expr = expr;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextPARAMETER, (ffeexprCallback) ffestb_R5372_);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
if (ffestb_local_.parameter.started)
ffestc_R537_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5372_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.parameter.started)
{
ffestc_R537_start ();
ffestb_local_.parameter.started = TRUE;
}
ffestc_R537_item (ffestb_local_.parameter.expr, ffesta_tokens[1],
expr, ft);
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextPARAMETER,
(ffeexprCallback) ffestb_R5371_);
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.parameter.started)
{
ffestc_R537_start ();
ffestb_local_.parameter.started = TRUE;
}
ffestc_R537_item (ffestb_local_.parameter.expr, ffesta_tokens[1],
expr, ft);
ffestc_R537_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R5373_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
if (ffestb_local_.parameter.started)
ffestc_R537_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5373_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R542 (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstNAMELIST)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstNAMELIST)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlNAMELIST);
if (*p != '\0')
goto bad_i;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeSLASH:
break;
}
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R542_start ();
return (ffelexHandler) ffestb_R5421_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "NAMELIST", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5421_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffesta_is_inhibited ())
ffestc_R542_item_nlist (t);
return (ffelexHandler) ffestb_R5422_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R542_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5422_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_R5423_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R542_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5423_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffesta_is_inhibited ())
ffestc_R542_item_nitem (t);
return (ffelexHandler) ffestb_R5424_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R542_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5424_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R5425_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R542_finish ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_R5421_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R542_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5425_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffesta_is_inhibited ())
ffestc_R542_item_nitem (t);
return (ffelexHandler) ffestb_R5424_;
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_R5421_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NAMELIST", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R542_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R544 (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstEQUIVALENCE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstEQUIVALENCE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlEQUIVALENCE)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffestb_local_.equivalence.started = FALSE;
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextEQUIVALENCE,
(ffeexprCallback) ffestb_R5441_);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5441_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffestb_local_.equivalence.exprs = ffestt_exprlist_create ();
ffestt_exprlist_append (ffestb_local_.equivalence.exprs, expr,
ffelex_token_use (ft));
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextEQUIVALENCE,
(ffeexprCallback) ffestb_R5442_);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
if (ffestb_local_.equivalence.started)
ffestc_R544_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5442_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffestt_exprlist_append (ffestb_local_.equivalence.exprs, expr,
ffelex_token_use (ft));
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextEQUIVALENCE,
(ffeexprCallback) ffestb_R5442_);
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestt_exprlist_append (ffestb_local_.equivalence.exprs, expr,
ffelex_token_use (ft));
return (ffelexHandler) ffestb_R5443_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
if (ffestb_local_.equivalence.started)
ffestc_R544_finish ();
ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5443_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.equivalence.started)
{
ffestc_R544_start ();
ffestb_local_.equivalence.started = TRUE;
}
ffestc_R544_item (ffestb_local_.equivalence.exprs);
}
ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
return (ffelexHandler) ffestb_R5444_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.equivalence.started)
{
ffestc_R544_start ();
ffestb_local_.equivalence.started = TRUE;
}
ffestc_R544_item (ffestb_local_.equivalence.exprs);
ffestc_R544_finish ();
}
ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
if (ffestb_local_.equivalence.started)
ffestc_R544_finish ();
ffestt_exprlist_kill (ffestb_local_.equivalence.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5444_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextEQUIVALENCE,
(ffeexprCallback) ffestb_R5441_);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EQUIVALENCE", t);
if (ffestb_local_.equivalence.started)
ffestc_R544_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R834 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCYCLE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R8341_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_R8341_ (t);
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCYCLE)
goto bad_0;
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCYCLE);
if (*p == '\0')
{
ffesta_tokens[1] = NULL;
}
else
{
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
}
return (ffelexHandler) ffestb_R8341_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CYCLE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CYCLE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CYCLE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8341_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R834 (ffesta_tokens[1]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CYCLE", t);
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R835 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstEXIT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R8351_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_R8351_ (t);
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstEXIT)
goto bad_0;
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlEXIT);
if (*p == '\0')
{
ffesta_tokens[1] = NULL;
}
else
{
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
}
return (ffelexHandler) ffestb_R8351_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EXIT", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EXIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "EXIT", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8351_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R835 (ffesta_tokens[1]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "EXIT", t);
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R838 (ffelexToken t)
{
unsigned const char *p;
ffeTokenLength i;
ffelexHandler next;
ffelexToken et;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstASSIGN)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNUMBER:
break;
}
ffesta_tokens[1] = ffelex_token_use (t);
ffesta_confirmed ();
return (ffelexHandler) ffestb_R8381_;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstASSIGN)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
case FFELEX_typePERCENT:
case FFELEX_typeOPEN_PAREN:
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlASSIGN);
if (! ISDIGIT (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (ffesta_tokens[1]);
i += ffelex_token_length (ffesta_tokens[1]);
if (!ffesrc_char_match_init (*p, 'T', 't')
|| (++i, !ffesrc_char_match_noninit (*++p, 'O', 'o')))
{
bad_i_1:
ffelex_token_kill (ffesta_tokens[1]);
goto bad_i;
}
++p, ++i;
if (!ffesrc_is_name_init (*p))
goto bad_i_1;
et = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
next = (ffelexHandler)
(*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextASSIGN,
(ffeexprCallback)
ffestb_R8383_)))
(et);
ffelex_token_kill (et);
return (ffelexHandler) (*next) (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "ASSIGN", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8381_ (ffelexToken t)
{
if ((ffelex_token_type (t) == FFELEX_typeNAME)
&& (ffesrc_strcmp_2c (ffe_case_match (), ffelex_token_text (t), "TO", "to",
"To") == 0))
{
return (ffelexHandler) ffestb_R8382_;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
if (ffelex_token_type (t) == FFELEX_typeNAME)
return (ffelexHandler) ffestb_R8382_ (t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8382_ (ffelexToken t)
{
if (ffelex_token_type (t) == FFELEX_typeNAME)
{
return (ffelexHandler)
(*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool, FFEEXPR_contextASSIGN,
(ffeexprCallback) ffestb_R8383_)))
(t);
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8383_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R838 (ffesta_tokens[1], expr, ft);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ASSIGN", t);
break;
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R840 (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlIF)
goto bad_0;
if (ffesta_first_kw != FFESTR_firstIF)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstIF)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
default:
goto bad_1;
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextARITHIF,
(ffeexprCallback) ffestb_R8401_);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8401_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
ffestb_local_.if_stmt.expr = expr;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_R8402_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8402_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffesta_confirmed ();
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R8403_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8403_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R8404_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8404_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffesta_tokens[3] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R8405_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8405_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R8406_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8406_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffesta_tokens[4] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R8407_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8407_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R840 (ffestb_local_.if_stmt.expr, ffesta_tokens[1],
ffesta_tokens[2], ffesta_tokens[3], ffesta_tokens[4]);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[4]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "arithmetic-IF", t);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[4]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R841 (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCONTINUE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCONTINUE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlCONTINUE)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCONTINUE);
goto bad_i;
}
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R841 ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTINUE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTINUE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CONTINUE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R1102 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstPROGRAM)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R11021_;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstPROGRAM)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlPROGRAM);
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_R11021_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PROGRAM", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PROGRAM", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "PROGRAM", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11021_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1102 (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PROGRAM", t);
break;
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_block (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstBLOCK)
goto bad_0;
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeNAME:
if (ffesta_second_kw != FFESTR_secondDATA)
goto bad_1;
break;
}
ffesta_confirmed ();
return (ffelexHandler) ffestb_R1111_1_;
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_blockdata (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstBLOCKDATA)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R1111_2_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_R1111_2_ (t);
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstBLOCKDATA)
goto bad_0;
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlBLOCKDATA);
if (*p == '\0')
{
ffesta_tokens[1] = NULL;
}
else
{
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
}
return (ffelexHandler) ffestb_R1111_2_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R1111_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R1111_2_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_R1111_2_ (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
break;
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R1111_2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1111 (ffesta_tokens[1]);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "BLOCK DATA", t);
break;
}
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R1212 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCALL)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
return (ffelexHandler)
(*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool, FFEEXPR_contextSUBROUTINEREF,
(ffeexprCallback) ffestb_R12121_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCALL)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCALL);
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
next = (ffelexHandler)
(*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool, FFEEXPR_contextSUBROUTINEREF,
(ffeexprCallback) ffestb_R12121_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CALL", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CALL", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CALL", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12121_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R1212 (expr, ft);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CALL", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R1227 (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstRETURN)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
break;
default:
break;
}
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextRETURN,
(ffeexprCallback) ffestb_R12271_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstRETURN)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
default:
break;
}
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextRETURN, (ffeexprCallback) ffestb_R12271_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
FFESTR_firstlRETURN);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RETURN", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RETURN", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12271_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1227 (expr, ft);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RETURN", t);
break;
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
ffelexHandler
ffestb_R1228 (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCONTAINS)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCONTAINS)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlCONTAINS)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCONTAINS);
goto bad_i;
}
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1228 ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTAINS", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CONTAINS", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CONTAINS", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_VXT
ffelexHandler
ffestb_V009 (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstUNION)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstUNION)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlUNION)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlUNION);
goto bad_i;
}
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V009 ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "UNION", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "UNION", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "UNION", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_construct (ffelexToken t UNUSED)
{
ffesta_confirmed ();
ffelex_set_names (TRUE);
return (ffelexHandler) ffestb_construct1_;
}
static ffelexHandler
ffestb_construct1_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_first_kw = ffestr_first (t);
switch (ffesta_first_kw)
{
case FFESTR_firstIF:
ffestb_local_.construct.next = (ffelexHandler) ffestb_if;
break;
case FFESTR_firstDO:
ffestb_local_.construct.next = (ffelexHandler) ffestb_do;
break;
case FFESTR_firstDOWHILE:
ffestb_local_.construct.next = (ffelexHandler) ffestb_dowhile;
break;
case FFESTR_firstSELECT:
case FFESTR_firstSELECTCASE:
ffestb_local_.construct.next = (ffelexHandler) ffestb_R809;
break;
default:
goto bad;
}
ffesta_construct_name = ffesta_tokens[0];
ffesta_tokens[0] = ffelex_token_use (t);
return (ffelexHandler) ffestb_construct2_;
case FFELEX_typeNAMES:
ffesta_first_kw = ffestr_first (t);
switch (ffesta_first_kw)
{
case FFESTR_firstIF:
if (ffelex_token_length (t) != FFESTR_firstlIF)
goto bad;
ffestb_local_.construct.next = (ffelexHandler) ffestb_if;
break;
case FFESTR_firstDO:
ffestb_local_.construct.next = (ffelexHandler) ffestb_do;
break;
case FFESTR_firstDOWHILE:
if (ffelex_token_length (t) != FFESTR_firstlDOWHILE)
goto bad;
ffestb_local_.construct.next = (ffelexHandler) ffestb_dowhile;
break;
case FFESTR_firstSELECTCASE:
if (ffelex_token_length (t) != FFESTR_firstlSELECTCASE)
goto bad;
ffestb_local_.construct.next = (ffelexHandler) ffestb_R809;
break;
default:
goto bad;
}
ffesta_construct_name = ffesta_tokens[0];
ffesta_tokens[0] = ffelex_token_use (t);
return (ffelexHandler) ffestb_construct2_;
default:
break;
}
bad:
ffesta_ffebad_2st (FFEBAD_INVALID_STMT_FORM, "CONSTRUCT",
ffesta_tokens[0], t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_construct2_ (ffelexToken t)
{
if (ffelex_token_type (t) == FFELEX_typeNAME)
ffesta_second_kw = ffestr_second (t);
return (ffelexHandler) (*ffestb_local_.construct.next) (t);
}
#if FFESTR_F90
ffelexHandler
ffestb_heap (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
break;
case FFELEX_typeNAMES:
if (ffelex_token_length (ffesta_tokens[0]) != ffestb_args.heap.len)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffestb_local_.heap.exprs = ffestt_exprlist_create ();
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_args.heap.ctx,
(ffeexprCallback) ffestb_heap1_);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_heap1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffestt_exprlist_append (ffestb_local_.heap.exprs, expr,
ffelex_token_use (t));
return (ffelexHandler) ffestb_heap2_;
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestt_exprlist_append (ffestb_local_.heap.exprs, expr,
ffelex_token_use (t));
ffesta_tokens[1] = NULL;
ffestb_local_.heap.expr = NULL;
return (ffelexHandler) ffestb_heap5_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
ffestt_exprlist_kill (ffestb_local_.heap.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_heap2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_heap3_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
ffestt_exprlist_kill (ffestb_local_.heap.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_heap3_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestr_other (ffesta_tokens[1]) != FFESTR_otherSTAT)
break;
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextHEAPSTAT,
(ffeexprCallback) ffestb_heap4_);
default:
next = (ffelexHandler)
(*((ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_args.heap.ctx,
(ffeexprCallback) ffestb_heap1_)))
(ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) (*next) (t);
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
ffestt_exprlist_kill (ffestb_local_.heap.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_heap4_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffestb_local_.heap.expr = expr;
return (ffelexHandler) ffestb_heap5_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
ffestt_exprlist_kill (ffestb_local_.heap.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_heap5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
if (ffesta_first_kw == FFESTR_firstALLOCATE)
ffestc_R620 (ffestb_local_.heap.exprs, ffestb_local_.heap.expr,
ffesta_tokens[1]);
else
ffestc_R625 (ffestb_local_.heap.exprs, ffestb_local_.heap.expr,
ffesta_tokens[1]);
ffestt_exprlist_kill (ffestb_local_.heap.exprs);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.heap.badname, t);
ffestt_exprlist_kill (ffestb_local_.heap.exprs);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
ffelexHandler
ffestb_module (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexToken nt;
ffelexToken mt;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstMODULE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
break;
case FFELEX_typeCOLONCOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1m;
default:
goto bad_1m;
}
ffesta_confirmed ();
if (ffesta_second_kw != FFESTR_secondPROCEDURE)
{
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_module3_;
}
ffestb_local_.moduleprocedure.started = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_module1_;
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0])
+ (i = FFESTR_firstlMODULEPROCEDURE);
if ((ffesta_first_kw == FFESTR_firstMODULE)
|| ((ffesta_first_kw == FFESTR_firstMODULEPROCEDURE)
&& !ffesrc_is_name_init (*p)))
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1m;
default:
goto bad_1m;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlMODULE);
if (!ffesrc_is_name_init (*p))
goto bad_im;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (!ffesta_is_inhibited ())
ffestc_R1105 (nt);
ffelex_token_kill (nt);
return (ffelexHandler) ffesta_zero (t);
}
if (ffesta_first_kw != FFESTR_firstMODULEPROCEDURE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
ffestb_local_.moduleprocedure.started = FALSE;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_module2_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
}
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
mt = ffelex_token_name_from_names (ffesta_tokens[0], FFESTR_firstlMODULE,
0);
if (!ffesta_is_inhibited ())
ffestc_module (mt, nt);
ffelex_token_kill (nt);
ffelex_token_kill (mt);
return (ffelexHandler) ffesta_zero (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1m:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_im:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "MODULE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_module1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffestb_local_.moduleprocedure.started
&& (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME))
{
ffesta_confirmed ();
ffelex_token_kill (ffesta_tokens[1]);
}
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_module2_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (ffestb_local_.moduleprocedure.started)
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1105 (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
if (ffestb_local_.moduleprocedure.started && !ffesta_is_inhibited ())
ffestc_R1205_finish ();
else if (!ffestb_local_.moduleprocedure.started)
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_module2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffestb_local_.moduleprocedure.started)
{
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1205_start ();
}
if (!ffesta_is_inhibited ())
{
ffestc_R1205_item (ffesta_tokens[1]);
ffestc_R1205_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
if (!ffestb_local_.moduleprocedure.started)
{
ffestb_local_.moduleprocedure.started = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1205_start ();
}
if (!ffesta_is_inhibited ())
ffestc_R1205_item (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_module1_;
default:
break;
}
if (ffestb_local_.moduleprocedure.started && !ffesta_is_inhibited ())
ffestc_R1205_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE PROCEDURE", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_module3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1105 (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MODULE", t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_R809 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffesta_first_kw)
{
case FFESTR_firstSELECT:
if ((ffelex_token_type (t) != FFELEX_typeNAME)
|| (ffesta_second_kw != FFESTR_secondCASE))
goto bad_1;
ffesta_confirmed ();
return (ffelexHandler) ffestb_R8091_;
case FFESTR_firstSELECTCASE:
return (ffelexHandler) ffestb_R8091_ (t);
default:
goto bad_0;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstSELECTCASE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSELECTCASE);
if (*p != '\0')
goto bad_i;
return (ffelexHandler) ffestb_R8091_ (t);
default:
goto bad_0;
}
bad_0:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8091_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextSELECTCASE, (ffeexprCallback) ffestb_R8092_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8092_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffesta_tokens[1] = ffelex_token_use (ft);
ffestb_local_.selectcase.expr = expr;
return (ffelexHandler) ffestb_R8093_;
default:
break;
}
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8093_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R809 (ffesta_construct_name, ffestb_local_.selectcase.expr,
ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
return ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffesta_construct_name != NULL)
{
ffelex_token_kill (ffesta_construct_name);
ffesta_construct_name = NULL;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "SELECT CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R810 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCASE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
if (ffesta_second_kw != FFESTR_secondDEFAULT)
goto bad_1;
ffestb_local_.case_stmt.cases = NULL;
return (ffelexHandler) ffestb_R8101_;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.case_stmt.cases = ffestt_caselist_create ();
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
}
case FFELEX_typeNAMES:
switch (ffesta_first_kw)
{
case FFESTR_firstCASEDEFAULT:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
}
ffestb_local_.case_stmt.cases = NULL;
p = ffelex_token_text (ffesta_tokens[0])
+ (i = FFESTR_firstlCASEDEFAULT);
if (*p == '\0')
return (ffelexHandler) ffestb_R8101_ (t);
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1] = ffelex_token_name_from_names (ffesta_tokens[0], i,
0);
return (ffelexHandler) ffestb_R8102_ (t);
case FFESTR_firstCASE:
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCASE);
if (*p != '\0')
goto bad_i;
ffestb_local_.case_stmt.cases = ffestt_caselist_create ();
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "CASE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8101_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R8102_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_tokens[1] = NULL;
return (ffelexHandler) ffestb_R8102_ (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
if (ffestb_local_.case_stmt.cases != NULL)
ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8102_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R810 (ffestb_local_.case_stmt.cases, ffesta_tokens[1]);
if (ffestb_local_.case_stmt.cases != NULL)
ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
if (ffestb_local_.case_stmt.cases != NULL)
ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
if (ffesta_tokens[1] != NULL)
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8103_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestt_caselist_append (ffestb_local_.case_stmt.cases, FALSE, expr, NULL,
ffelex_token_use (ft));
return (ffelexHandler) ffestb_R8101_;
case FFELEX_typeCOMMA:
ffestt_caselist_append (ffestb_local_.case_stmt.cases, FALSE, expr, NULL,
ffelex_token_use (ft));
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
case FFELEX_typeCOLON:
ffestt_caselist_append (ffestb_local_.case_stmt.cases, TRUE, expr, NULL,
ffelex_token_use (ft));
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8104_);
default:
break;
}
ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R8104_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_local_.case_stmt.cases->previous->expr2 = expr;
return (ffelexHandler) ffestb_R8101_;
case FFELEX_typeCOMMA:
ffestb_local_.case_stmt.cases->previous->expr2 = expr;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCASE, (ffeexprCallback) ffestb_R8103_);
default:
break;
}
ffestt_caselist_kill (ffestb_local_.case_stmt.cases);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CASE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R1001 (ffelexToken t)
{
ffesttFormatList f;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstFORMAT)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstFORMAT)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlFORMAT)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_local_.format.complained = FALSE;
ffestb_local_.format.f = NULL;
ffestb_local_.format.f = ffestt_formatlist_create (NULL,
ffelex_token_use (t));
ffelex_set_names_pure (TRUE);
return (ffelexHandler) ffestb_R10011_;
case FFELEX_typeOPEN_ARRAY:
ffesta_confirmed ();
ffestb_local_.format.complained = FALSE;
ffestb_local_.format.f = ffestt_formatlist_create (NULL,
ffelex_token_use (t));
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
ffelex_set_names_pure (TRUE);
return (ffelexHandler) ffestb_R100112_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R10011_ (ffelexToken t)
{
ffesttFormatList f;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
break;
default:
return (ffelexHandler) ffestb_R10012_ (t);
}
f = ffestb_local_.format.f->u.root.parent;
if (f != NULL)
{
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
}
return (ffelexHandler) ffestb_R100114_;
}
static ffelexHandler
ffestb_R10012_ (ffelexToken t)
{
unsigned long unsigned_val;
ffesttFormatList f;
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_ANGLE:
ffesta_confirmed ();
ffestb_local_.format.pre.t = ffelex_token_use (t);
ffelex_set_names_pure (FALSE);
if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
{
ffestb_local_.format.complained = TRUE;
ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100115_);
case FFELEX_typeNUMBER:
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = TRUE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = ffelex_token_use (t);
ffestb_local_.format.pre.u.unsigned_val = unsigned_val
= strtoul (ffelex_token_text (t), NULL, 10);
ffelex_set_expecting_hollerith (unsigned_val, '\0',
ffelex_token_where_line (t),
ffelex_token_where_column (t));
return (ffelexHandler) ffestb_R10014_;
case FFELEX_typePLUS:
ffestb_local_.format.sign = TRUE;
ffestb_local_.format.pre.t = ffelex_token_use (t);
return (ffelexHandler) ffestb_R10013_;
case FFELEX_typeMINUS:
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.t = ffelex_token_use (t);
return (ffelexHandler) ffestb_R10013_;
case FFELEX_typeCOLON:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
case FFELEX_typeNAMES:
case FFELEX_typeDOLLAR:
case FFELEX_typeOPEN_PAREN:
case FFELEX_typeOPEN_ARRAY:
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R10014_ (t);
case FFELEX_typeCOMMA:
ffebad_start (FFEBAD_FORMAT_EXTRA_COMMA);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
return (ffelexHandler) ffestb_R10012_;
case FFELEX_typeCLOSE_PAREN:
ffebad_start (FFEBAD_FORMAT_EXTRA_COMMA);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeCLOSE_ARRAY:
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
for (f = ffestb_local_.format.f;
f->u.root.parent != NULL;
f = f->u.root.parent->next)
;
ffestb_local_.format.f = f;
return (ffelexHandler) ffestb_R100114_ (t);
case FFELEX_typeQUOTE:
if (ffe_is_vxt ())
break;
ffelex_set_expecting_hollerith (-1, '\"',
ffelex_token_where_line (t),
ffelex_token_where_column (t));
return (ffelexHandler) ffestb_R100113_;
case FFELEX_typeAPOSTROPHE:
#if 0
ffesta_tokens[1] = ffelex_token_use (t);
#endif
ffelex_set_expecting_hollerith (-1, '\'',
ffelex_token_where_line (t),
ffelex_token_where_column (t));
return (ffelexHandler) ffestb_R100113_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R10013_ (ffelexToken t)
{
unsigned long unsigned_val;
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestb_local_.format.pre.present = TRUE;
ffestb_local_.format.pre.rtexpr = FALSE;
unsigned_val = strtoul (ffelex_token_text (t), NULL, 10);
ffestb_local_.format.pre.u.signed_val = ffestb_local_.format.sign
? unsigned_val : -unsigned_val;
ffestb_local_.format.sign = TRUE;
return (ffelexHandler) ffestb_R10014_;
default:
ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffelex_token_kill (ffestb_local_.format.pre.t);
return (ffelexHandler) ffestb_R10012_ (t);
}
}
static ffelexHandler
ffestb_R10014_ (ffelexToken t)
{
ffesttFormatList f;
ffeTokenLength i;
const char *p;
ffestrFormat kw;
ffelex_set_expecting_hollerith (0, '\0',
ffewhere_line_unknown (),
ffewhere_column_unknown ());
switch (ffelex_token_type (t))
{
case FFELEX_typeHOLLERITH:
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeR1016;
f->t = ffelex_token_use (t);
ffelex_token_kill (ffestb_local_.format.pre.t);
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeNUMBER:
assert (ffestb_local_.format.pre.present);
ffesta_confirmed ();
if (ffestb_local_.format.pre.rtexpr)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
return (ffelexHandler) ffestb_R10014_;
}
if (ffestb_local_.format.sign)
{
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 = 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);
ffelex_set_expecting_hollerith (ffestb_local_.format.pre.u.unsigned_val,
'\0',
ffelex_token_where_line (t),
ffelex_token_where_column (t));
}
return (ffelexHandler) ffestb_R10014_;
case FFELEX_typeCOLONCOLON:
if (ffestb_local_.format.pre.present)
{
ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_COLON_SPEC,
ffestb_local_.format.pre.t);
ffelex_token_kill (ffestb_local_.format.pre.t);
ffestb_local_.format.pre.present = FALSE;
}
else
{
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeCOLON;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeCOLON;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R100112_;
case FFELEX_typeCOLON:
if (ffestb_local_.format.pre.present)
{
ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_COLON_SPEC,
ffestb_local_.format.pre.t);
ffelex_token_kill (ffestb_local_.format.pre.t);
return (ffelexHandler) ffestb_R100112_;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeCOLON;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R100112_;
case FFELEX_typeCONCAT:
if (ffestb_local_.format.sign)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffestb_local_.format.pre.u.unsigned_val
= (ffestb_local_.format.pre.u.signed_val < 0)
? -ffestb_local_.format.pre.u.signed_val
: ffestb_local_.format.pre.u.signed_val;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val = ffestb_local_.format.pre;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val = ffestb_local_.format.pre;
return (ffelexHandler) ffestb_R100112_;
case FFELEX_typeSLASH:
if (ffestb_local_.format.sign)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffestb_local_.format.pre.u.unsigned_val
= (ffestb_local_.format.pre.u.signed_val < 0)
? -ffestb_local_.format.pre.u.signed_val
: ffestb_local_.format.pre.u.signed_val;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val = ffestb_local_.format.pre;
return (ffelexHandler) ffestb_R100112_;
case FFELEX_typeOPEN_PAREN:
if (ffestb_local_.format.sign)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffestb_local_.format.pre.u.unsigned_val
= (ffestb_local_.format.pre.u.signed_val < 0)
? -ffestb_local_.format.pre.u.signed_val
: ffestb_local_.format.pre.u.signed_val;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeFORMAT;
f->t = ffelex_token_use (t);
f->u.R1003D.R1004 = ffestb_local_.format.pre;
f->u.R1003D.format = ffestb_local_.format.f
= ffestt_formatlist_create (f, ffelex_token_use (t));
return (ffelexHandler) ffestb_R10011_;
case FFELEX_typeOPEN_ARRAY:
if (ffestb_local_.format.sign)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffestb_local_.format.pre.u.unsigned_val
= (ffestb_local_.format.pre.u.signed_val < 0)
? -ffestb_local_.format.pre.u.signed_val
: ffestb_local_.format.pre.u.signed_val;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeFORMAT;
f->t = ffelex_token_use (t);
f->u.R1003D.R1004 = ffestb_local_.format.pre;
f->u.R1003D.format = ffestb_local_.format.f
= ffestt_formatlist_create (f, ffelex_token_use (t));
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R100112_;
case FFELEX_typeCLOSE_ARRAY:
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val = ffestb_local_.format.pre;
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeQUOTE:
if (ffe_is_vxt ())
break;
ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffelex_token_kill (ffestb_local_.format.pre.t);
ffesta_confirmed ();
#if 0
ffesta_tokens[1] = ffelex_token_use (t);
#endif
ffelex_set_expecting_hollerith (-1, '\"',
ffelex_token_where_line (t),
ffelex_token_where_column (t));
return (ffelexHandler) ffestb_R100113_;
case FFELEX_typeAPOSTROPHE:
ffesta_confirmed ();
ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffelex_token_kill (ffestb_local_.format.pre.t);
#if 0
ffesta_tokens[1] = ffelex_token_use (t);
#endif
ffelex_set_expecting_hollerith (-1, '\'', ffelex_token_where_line (t),
ffelex_token_where_column (t));
return (ffelexHandler) ffestb_R100113_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
for (f = ffestb_local_.format.f;
f->u.root.parent != NULL;
f = f->u.root.parent->next)
;
ffestb_local_.format.f = f;
ffelex_token_kill (ffestb_local_.format.pre.t);
return (ffelexHandler) ffestb_R100114_ (t);
case FFELEX_typeDOLLAR:
ffestb_local_.format.t = ffelex_token_use (t);
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeDOLLAR;
return (ffelexHandler) ffestb_R10015_;
case FFELEX_typeNAMES:
kw = ffestr_format (t);
ffestb_local_.format.t = ffelex_token_use (t);
switch (kw)
{
case FFESTR_formatI:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeI;
i = FFESTR_formatlI;
break;
case FFESTR_formatB:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeB;
i = FFESTR_formatlB;
break;
case FFESTR_formatO:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeO;
i = FFESTR_formatlO;
break;
case FFESTR_formatZ:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeZ;
i = FFESTR_formatlZ;
break;
case FFESTR_formatF:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeF;
i = FFESTR_formatlF;
break;
case FFESTR_formatE:
ffestb_local_.format.current = FFESTP_formattypeE;
i = FFESTR_formatlE;
break;
case FFESTR_formatEN:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeEN;
i = FFESTR_formatlEN;
break;
case FFESTR_formatG:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeG;
i = FFESTR_formatlG;
break;
case FFESTR_formatL:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeL;
i = FFESTR_formatlL;
break;
case FFESTR_formatA:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeA;
i = FFESTR_formatlA;
break;
case FFESTR_formatD:
ffestb_local_.format.current = FFESTP_formattypeD;
i = FFESTR_formatlD;
break;
case FFESTR_formatQ:
ffestb_local_.format.current = FFESTP_formattypeQ;
i = FFESTR_formatlQ;
break;
case FFESTR_formatDOLLAR:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeDOLLAR;
i = FFESTR_formatlDOLLAR;
break;
case FFESTR_formatP:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeP;
i = FFESTR_formatlP;
break;
case FFESTR_formatT:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeT;
i = FFESTR_formatlT;
break;
case FFESTR_formatTL:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeTL;
i = FFESTR_formatlTL;
break;
case FFESTR_formatTR:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeTR;
i = FFESTR_formatlTR;
break;
case FFESTR_formatX:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeX;
i = FFESTR_formatlX;
break;
case FFESTR_formatS:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeS;
i = FFESTR_formatlS;
break;
case FFESTR_formatSP:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeSP;
i = FFESTR_formatlSP;
break;
case FFESTR_formatSS:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeSS;
i = FFESTR_formatlSS;
break;
case FFESTR_formatBN:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeBN;
i = FFESTR_formatlBN;
break;
case FFESTR_formatBZ:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeBZ;
i = FFESTR_formatlBZ;
break;
case FFESTR_formatH:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeH;
i = FFESTR_formatlH;
break;
case FFESTR_formatPD:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.t = ffelex_token_name_from_names (t,
FFESTR_formatlP, 1);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
ffestb_local_.format.current = FFESTP_formattypeD;
i = FFESTR_formatlPD;
break;
case FFESTR_formatPE:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.t = ffelex_token_name_from_names (t,
FFESTR_formatlP, 1);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
ffestb_local_.format.current = FFESTP_formattypeE;
i = FFESTR_formatlPE;
break;
case FFESTR_formatPEN:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.t = ffelex_token_name_from_names (t,
FFESTR_formatlP, 1);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
ffestb_local_.format.current = FFESTP_formattypeEN;
i = FFESTR_formatlPEN;
break;
case FFESTR_formatPF:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.t = ffelex_token_name_from_names (t,
FFESTR_formatlP, 1);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
ffestb_local_.format.current = FFESTP_formattypeF;
i = FFESTR_formatlPF;
break;
case FFESTR_formatPG:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.t = ffelex_token_name_from_names (t,
FFESTR_formatlP, 1);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
ffestb_local_.format.current = FFESTP_formattypeG;
i = FFESTR_formatlPG;
break;
default:
if (ffestb_local_.format.pre.present)
ffesta_confirmed ();
ffestb_local_.format.current = FFESTP_formattypeNone;
p = strpbrk (ffelex_token_text (t), "0123456789");
if (p == NULL)
i = ffelex_token_length (t);
else
i = p - ffelex_token_text (t);
break;
}
p = ffelex_token_text (t) + i;
if (*p == '\0')
return (ffelexHandler) ffestb_R10015_;
if (! ISDIGIT (*p))
{
if (ffestb_local_.format.current == FFESTP_formattypeH)
p = strpbrk (p, "0123456789");
else
{
p = NULL;
ffestb_local_.format.current = FFESTP_formattypeNone;
}
if (p == NULL)
return (ffelexHandler) ffestb_R10015_;
i = p - ffelex_token_text (t);
}
ffestb_local_.format.post.present = TRUE;
ffestb_local_.format.post.rtexpr = FALSE;
ffestb_local_.format.post.t = ffelex_token_number_from_names (t, i);
ffestb_local_.format.post.u.unsigned_val
= strtoul (ffelex_token_text (ffestb_local_.format.post.t), NULL, 10);
p += ffelex_token_length (ffestb_local_.format.post.t);
i += ffelex_token_length (ffestb_local_.format.post.t);
if (*p == '\0')
return (ffelexHandler) ffestb_R10016_;
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);
return (ffelexHandler) ffestb_R10016_;
}
ffestb_subr_R1001_append_p_ ();
t = ffestb_local_.format.t = ffelex_token_names_from_names (t, i, 0);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre = ffestb_local_.format.post;
kw = ffestr_format (t);
switch (kw)
{
case FFESTR_formatD:
ffestb_local_.format.current = FFESTP_formattypeD;
i = FFESTR_formatlD;
break;
case FFESTR_formatE:
ffestb_local_.format.current = FFESTP_formattypeE;
i = FFESTR_formatlE;
break;
case FFESTR_formatEN:
ffestb_local_.format.current = FFESTP_formattypeEN;
i = FFESTR_formatlEN;
break;
case FFESTR_formatF:
ffestb_local_.format.current = FFESTP_formattypeF;
i = FFESTR_formatlF;
break;
case FFESTR_formatG:
ffestb_local_.format.current = FFESTP_formattypeG;
i = FFESTR_formatlG;
break;
default:
ffebad_start (FFEBAD_FORMAT_P_NOCOMMA);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
ffestb_local_.format.current = FFESTP_formattypeNone;
p = strpbrk (ffelex_token_text (t), "0123456789");
if (p == NULL)
i = ffelex_token_length (t);
else
i = p - ffelex_token_text (t);
}
p = ffelex_token_text (t) + i;
if (*p == '\0')
return (ffelexHandler) ffestb_R10015_;
if (! ISDIGIT (*p))
{
ffestb_local_.format.current = FFESTP_formattypeNone;
p = strpbrk (p, "0123456789");
if (p == NULL)
return (ffelexHandler) ffestb_R10015_;
i = p - ffelex_token_text (t);
}
ffestb_local_.format.post.present = TRUE;
ffestb_local_.format.post.rtexpr = FALSE;
ffestb_local_.format.post.t = ffelex_token_number_from_names (t, i);
ffestb_local_.format.post.u.unsigned_val
= strtoul (ffelex_token_text (ffestb_local_.format.post.t), NULL, 10);
p += ffelex_token_length (ffestb_local_.format.post.t);
i += ffelex_token_length (ffestb_local_.format.post.t);
if (*p == '\0')
return (ffelexHandler) ffestb_R10016_;
ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
return (ffelexHandler) ffestb_R10016_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R10015_ (ffelexToken t)
{
bool split_pea;
ffestrFormat kw;
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_ANGLE:
ffesta_confirmed ();
ffestb_local_.format.post.t = ffelex_token_use (t);
ffelex_set_names_pure (FALSE);
if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
{
ffestb_local_.format.complained = TRUE;
ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100116_);
case FFELEX_typeNUMBER:
ffestb_local_.format.post.present = TRUE;
ffestb_local_.format.post.rtexpr = FALSE;
ffestb_local_.format.post.t = ffelex_token_use (t);
ffestb_local_.format.post.u.unsigned_val
= strtoul (ffelex_token_text (t), NULL, 10);
return (ffelexHandler) ffestb_R10016_;
case FFELEX_typeNAMES:
ffesta_confirmed ();
kw = ffestr_format (t);
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeP:
split_pea = TRUE;
break;
case FFESTP_formattypeH:
kw = FFESTR_formatNone;
split_pea = FALSE;
break;
default:
split_pea = FALSE;
break;
}
switch (kw)
{
case FFESTR_formatF:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeP:
ffestb_local_.format.current = FFESTP_formattypeF;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlF;
break;
case FFESTR_formatE:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeP:
ffestb_local_.format.current = FFESTP_formattypeE;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlE;
break;
case FFESTR_formatEN:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeP:
ffestb_local_.format.current = FFESTP_formattypeEN;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlEN;
break;
case FFESTR_formatG:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeP:
ffestb_local_.format.current = FFESTP_formattypeG;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlG;
break;
case FFESTR_formatL:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeT:
ffestb_local_.format.current = FFESTP_formattypeTL;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlL;
break;
case FFESTR_formatD:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeP:
ffestb_local_.format.current = FFESTP_formattypeD;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlD;
break;
case FFESTR_formatS:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeS:
ffestb_local_.format.current = FFESTP_formattypeSS;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlS;
break;
case FFESTR_formatP:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeS:
ffestb_local_.format.current = FFESTP_formattypeSP;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlP;
break;
case FFESTR_formatR:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeT:
ffestb_local_.format.current = FFESTP_formattypeTR;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlR;
break;
case FFESTR_formatZ:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeB:
ffestb_local_.format.current = FFESTP_formattypeBZ;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlZ;
break;
case FFESTR_formatN:
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeE:
ffestb_local_.format.current = FFESTP_formattypeEN;
break;
case FFESTP_formattypeB:
ffestb_local_.format.current = FFESTP_formattypeBN;
break;
default:
ffestb_local_.format.current = FFESTP_formattypeNone;
break;
}
i = FFESTR_formatlN;
break;
default:
if (ffestb_local_.format.current != FFESTP_formattypeH)
ffestb_local_.format.current = FFESTP_formattypeNone;
split_pea = FALSE;
p = strpbrk (ffelex_token_text (t), "0123456789");
if (p == NULL)
i = ffelex_token_length (t);
else
i = p - ffelex_token_text (t);
}
if (split_pea)
{
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.t = ffelex_token_use (t);
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre.present = FALSE;
ffestb_local_.format.pre.rtexpr = FALSE;
ffestb_local_.format.pre.t = NULL;
ffestb_local_.format.pre.u.unsigned_val = 1;
}
p = ffelex_token_text (t) + i;
if (*p == '\0')
return (ffelexHandler) ffestb_R10015_;
if (! ISDIGIT (*p))
{
ffestb_local_.format.current = FFESTP_formattypeNone;
p = strpbrk (p, "0123456789");
if (p == NULL)
return (ffelexHandler) ffestb_R10015_;
i = p - ffelex_token_text (t);
}
ffestb_local_.format.post.present = TRUE;
ffestb_local_.format.post.rtexpr = FALSE;
ffestb_local_.format.post.t = ffelex_token_number_from_names (t, i);
ffestb_local_.format.post.u.unsigned_val
= strtoul (ffelex_token_text (ffestb_local_.format.post.t), NULL, 10);
p += ffelex_token_length (ffestb_local_.format.post.t);
i += ffelex_token_length (ffestb_local_.format.post.t);
if (*p == '\0')
return (ffelexHandler) ffestb_R10016_;
ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
return (ffelexHandler) ffestb_R10016_;
default:
ffestb_local_.format.post.present = FALSE;
ffestb_local_.format.post.rtexpr = FALSE;
ffestb_local_.format.post.t = NULL;
ffestb_local_.format.post.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R10016_ (t);
}
}
static ffelexHandler
ffestb_R10016_ (ffelexToken t)
{
ffeTokenLength i;
switch (ffelex_token_type (t))
{
case FFELEX_typePERIOD:
return (ffelexHandler) ffestb_R10017_;
case FFELEX_typeNUMBER:
assert (ffestb_local_.format.post.present);
ffesta_confirmed ();
if (ffestb_local_.format.post.rtexpr)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
return (ffelexHandler) ffestb_R10016_;
}
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);
return (ffelexHandler) ffestb_R10016_;
case FFELEX_typeNAMES:
ffesta_confirmed ();
if (ffestb_local_.format.current != FFESTP_formattypeP)
{
ffesta_ffebad_1t (FFEBAD_FORMAT_TEXT_IN_NUMBER, t);
return (ffelexHandler) ffestb_R10016_;
}
ffestb_subr_R1001_append_p_ ();
ffestb_local_.format.sign = FALSE;
ffestb_local_.format.pre = ffestb_local_.format.post;
return (ffelexHandler) ffestb_R10014_ (t);
default:
ffestb_local_.format.dot.present = FALSE;
ffestb_local_.format.dot.rtexpr = FALSE;
ffestb_local_.format.dot.t = NULL;
ffestb_local_.format.dot.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R10018_ (t);
}
}
static ffelexHandler
ffestb_R10017_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_ANGLE:
ffestb_local_.format.dot.t = ffelex_token_use (t);
ffelex_set_names_pure (FALSE);
if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
{
ffestb_local_.format.complained = TRUE;
ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100117_);
case FFELEX_typeNUMBER:
ffestb_local_.format.dot.present = TRUE;
ffestb_local_.format.dot.rtexpr = FALSE;
ffestb_local_.format.dot.t = ffelex_token_use (t);
ffestb_local_.format.dot.u.unsigned_val
= strtoul (ffelex_token_text (t), NULL, 10);
return (ffelexHandler) ffestb_R10018_;
default:
ffelex_token_kill (ffestb_local_.format.t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
if (ffestb_local_.format.post.present)
ffelex_token_kill (ffestb_local_.format.post.t);
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_DOT, t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R10018_ (ffelexToken t)
{
ffeTokenLength i;
const char *p;
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
assert (ffestb_local_.format.dot.present);
ffesta_confirmed ();
if (ffestb_local_.format.dot.rtexpr)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
return (ffelexHandler) ffestb_R10018_;
}
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);
return (ffelexHandler) ffestb_R10018_;
case FFELEX_typeNAMES:
if (!ffesrc_char_match_init (*(p = ffelex_token_text (t)), 'E', 'e'))
{
ffesta_ffebad_1t (FFEBAD_FORMAT_TEXT_IN_NUMBER, t);
return (ffelexHandler) ffestb_R10018_;
}
if (*++p == '\0')
return (ffelexHandler) ffestb_R10019_;
i = 1;
if (! ISDIGIT (*p))
{
ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, 1, NULL);
return (ffelexHandler) ffestb_R10018_;
}
ffestb_local_.format.exp.present = TRUE;
ffestb_local_.format.exp.rtexpr = FALSE;
ffestb_local_.format.exp.t = ffelex_token_number_from_names (t, i);
ffestb_local_.format.exp.u.unsigned_val
= strtoul (ffelex_token_text (ffestb_local_.format.exp.t), NULL, 10);
p += ffelex_token_length (ffestb_local_.format.exp.t);
i += ffelex_token_length (ffestb_local_.format.exp.t);
if (*p == '\0')
return (ffelexHandler) ffestb_R100110_;
ffesta_ffebad_1p (FFEBAD_FORMAT_TEXT_IN_NUMBER, t, i, NULL);
return (ffelexHandler) ffestb_R100110_;
default:
ffestb_local_.format.exp.present = FALSE;
ffestb_local_.format.exp.rtexpr = FALSE;
ffestb_local_.format.exp.t = NULL;
ffestb_local_.format.exp.u.unsigned_val = 1;
return (ffelexHandler) ffestb_R100110_ (t);
}
}
static ffelexHandler
ffestb_R10019_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_ANGLE:
ffestb_local_.format.exp.t = ffelex_token_use (t);
ffelex_set_names_pure (FALSE);
if (!ffesta_seen_first_exec && !ffestb_local_.format.complained)
{
ffestb_local_.format.complained = TRUE;
ffebad_start (FFEBAD_FORMAT_EXPR_SPEC);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
}
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFORMAT, (ffeexprCallback) ffestb_R100118_);
case FFELEX_typeNUMBER:
ffestb_local_.format.exp.present = TRUE;
ffestb_local_.format.exp.rtexpr = FALSE;
ffestb_local_.format.exp.t = ffelex_token_use (t);
ffestb_local_.format.exp.u.unsigned_val
= strtoul (ffelex_token_text (t), NULL, 10);
return (ffelexHandler) ffestb_R100110_;
default:
ffelex_token_kill (ffestb_local_.format.t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
if (ffestb_local_.format.post.present)
ffelex_token_kill (ffestb_local_.format.post.t);
if (ffestb_local_.format.dot.present)
ffelex_token_kill (ffestb_local_.format.dot.t);
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_EXP, t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100110_ (ffelexToken t)
{
ffeTokenLength i;
enum expect
{
required,
optional,
disallowed
};
ffebad err;
enum expect pre;
enum expect post;
enum expect dot;
enum expect exp;
bool R1005;
ffesttFormatList f;
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
assert (ffestb_local_.format.exp.present);
ffesta_confirmed ();
if (ffestb_local_.format.exp.rtexpr)
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_NUMBER);
ffebad_here (0, ffelex_token_where_line (t), ffelex_token_where_column (t));
ffebad_finish ();
return (ffelexHandler) ffestb_R100110_;
}
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_R100110_;
default:
if (ffestb_local_.format.sign
&& (ffestb_local_.format.current != FFESTP_formattypeP)
&& (ffestb_local_.format.current != FFESTP_formattypeH))
{
ffebad_start (FFEBAD_FORMAT_SPURIOUS_SIGN);
ffebad_here (0, ffelex_token_where_line (ffestb_local_.format.pre.t),
ffelex_token_where_column (ffestb_local_.format.pre.t));
ffebad_finish ();
ffestb_local_.format.pre.u.unsigned_val
= (ffestb_local_.format.pre.u.signed_val < 0)
? -ffestb_local_.format.pre.u.signed_val
: ffestb_local_.format.pre.u.signed_val;
}
switch (ffestb_local_.format.current)
{
case FFESTP_formattypeI:
err = FFEBAD_FORMAT_BAD_I_SPEC;
pre = optional;
post = required;
dot = optional;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeB:
err = FFEBAD_FORMAT_BAD_B_SPEC;
pre = optional;
post = required;
dot = optional;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeO:
err = FFEBAD_FORMAT_BAD_O_SPEC;
pre = optional;
post = required;
dot = optional;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeZ:
err = FFEBAD_FORMAT_BAD_Z_SPEC;
pre = optional;
post = required;
dot = optional;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeF:
err = FFEBAD_FORMAT_BAD_F_SPEC;
pre = optional;
post = required;
dot = required;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeE:
err = FFEBAD_FORMAT_BAD_E_SPEC;
pre = optional;
post = required;
dot = required;
exp = optional;
R1005 = TRUE;
break;
case FFESTP_formattypeEN:
err = FFEBAD_FORMAT_BAD_EN_SPEC;
pre = optional;
post = required;
dot = required;
exp = optional;
R1005 = TRUE;
break;
case FFESTP_formattypeG:
err = FFEBAD_FORMAT_BAD_G_SPEC;
pre = optional;
post = required;
dot = required;
exp = optional;
R1005 = TRUE;
break;
case FFESTP_formattypeL:
err = FFEBAD_FORMAT_BAD_L_SPEC;
pre = optional;
post = required;
dot = disallowed;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeA:
err = FFEBAD_FORMAT_BAD_A_SPEC;
pre = optional;
post = optional;
dot = disallowed;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeD:
err = FFEBAD_FORMAT_BAD_D_SPEC;
pre = optional;
post = required;
dot = required;
exp = disallowed;
R1005 = TRUE;
break;
case FFESTP_formattypeQ:
err = FFEBAD_FORMAT_BAD_Q_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeDOLLAR:
err = FFEBAD_FORMAT_BAD_DOLLAR_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeP:
err = FFEBAD_FORMAT_BAD_P_SPEC;
pre = required;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeT:
err = FFEBAD_FORMAT_BAD_T_SPEC;
pre = disallowed;
post = required;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeTL:
err = FFEBAD_FORMAT_BAD_TL_SPEC;
pre = disallowed;
post = required;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeTR:
err = FFEBAD_FORMAT_BAD_TR_SPEC;
pre = disallowed;
post = required;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeX:
err = FFEBAD_FORMAT_BAD_X_SPEC;
pre = required;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeS:
err = FFEBAD_FORMAT_BAD_S_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeSP:
err = FFEBAD_FORMAT_BAD_SP_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeSS:
err = FFEBAD_FORMAT_BAD_SS_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeBN:
err = FFEBAD_FORMAT_BAD_BN_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeBZ:
err = FFEBAD_FORMAT_BAD_BZ_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeH:
err = FFEBAD_FORMAT_BAD_H_SPEC;
pre = ffestb_local_.format.pre.present ? disallowed : required;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
case FFESTP_formattypeNone:
ffesta_ffebad_1t (FFEBAD_FORMAT_BAD_SPEC,
ffestb_local_.format.t);
clean_up_to_11_:
ffelex_token_kill (ffestb_local_.format.t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
if (ffestb_local_.format.post.present)
ffelex_token_kill (ffestb_local_.format.post.t);
if (ffestb_local_.format.dot.present)
ffelex_token_kill (ffestb_local_.format.dot.t);
if (ffestb_local_.format.exp.present)
ffelex_token_kill (ffestb_local_.format.exp.t);
return (ffelexHandler) ffestb_R100111_ (t);
default:
assert ("bad format item" == NULL);
err = FFEBAD_FORMAT_BAD_H_SPEC;
pre = disallowed;
post = disallowed;
dot = disallowed;
exp = disallowed;
R1005 = FALSE;
break;
}
if (((pre == disallowed) && ffestb_local_.format.pre.present)
|| ((pre == required) && !ffestb_local_.format.pre.present))
{
ffesta_ffebad_1t (err, (pre == required)
? ffestb_local_.format.t : ffestb_local_.format.pre.t);
goto clean_up_to_11_;
}
if (((post == disallowed) && ffestb_local_.format.post.present)
|| ((post == required) && !ffestb_local_.format.post.present))
{
ffesta_ffebad_1t (err, (post == required)
? ffestb_local_.format.t : ffestb_local_.format.post.t);
goto clean_up_to_11_;
}
if (((dot == disallowed) && ffestb_local_.format.dot.present)
|| ((dot == required) && !ffestb_local_.format.dot.present))
{
ffesta_ffebad_1t (err, (dot == required)
? ffestb_local_.format.t : ffestb_local_.format.dot.t);
goto clean_up_to_11_;
}
if (((exp == disallowed) && ffestb_local_.format.exp.present)
|| ((exp == required) && !ffestb_local_.format.exp.present))
{
ffesta_ffebad_1t (err, (exp == required)
? ffestb_local_.format.t : ffestb_local_.format.exp.t);
goto clean_up_to_11_;
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = ffestb_local_.format.current;
f->t = ffestb_local_.format.t;
if (R1005)
{
f->u.R1005.R1004 = ffestb_local_.format.pre;
f->u.R1005.R1006 = ffestb_local_.format.post;
f->u.R1005.R1007_or_R1008 = ffestb_local_.format.dot;
f->u.R1005.R1009 = ffestb_local_.format.exp;
}
else
{
if (pre == disallowed)
f->u.R1010.val = ffestb_local_.format.post;
else
f->u.R1010.val = ffestb_local_.format.pre;
}
return (ffelexHandler) ffestb_R100111_ (t);
}
}
static ffelexHandler
ffestb_R100111_ (ffelexToken t)
{
ffesttFormatList f;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R10012_;
case FFELEX_typeCOLON:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
return (ffelexHandler) ffestb_R10012_ (t);
case FFELEX_typeCLOSE_PAREN:
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeCLOSE_ARRAY:
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeOPEN_ANGLE:
case FFELEX_typeDOLLAR:
case FFELEX_typeNUMBER:
case FFELEX_typeOPEN_PAREN:
case FFELEX_typeOPEN_ARRAY:
case FFELEX_typeQUOTE:
case FFELEX_typeAPOSTROPHE:
case FFELEX_typeNAMES:
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_COMMA, t);
return (ffelexHandler) ffestb_R10012_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
for (f = ffestb_local_.format.f;
f->u.root.parent != NULL;
f = f->u.root.parent->next)
;
ffestb_local_.format.f = f;
return (ffelexHandler) ffestb_R100114_ (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100112_ (ffelexToken t)
{
ffesttFormatList f;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R10012_;
case FFELEX_typeCOLON:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
case FFELEX_typeOPEN_ANGLE:
case FFELEX_typeNAMES:
case FFELEX_typeDOLLAR:
case FFELEX_typeNUMBER:
case FFELEX_typeOPEN_PAREN:
case FFELEX_typeOPEN_ARRAY:
case FFELEX_typeQUOTE:
case FFELEX_typeAPOSTROPHE:
case FFELEX_typePLUS:
case FFELEX_typeMINUS:
return (ffelexHandler) ffestb_R10012_ (t);
case FFELEX_typeCLOSE_PAREN:
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeCLOSE_ARRAY:
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeSLASH;
f->t = ffelex_token_use (t);
f->u.R1010.val.present = FALSE;
f->u.R1010.val.rtexpr = FALSE;
f->u.R1010.val.t = NULL;
f->u.R1010.val.u.unsigned_val = 1;
f = ffestb_local_.format.f->u.root.parent;
if (f == NULL)
return (ffelexHandler) ffestb_R100114_;
ffestb_local_.format.f = f->next;
return (ffelexHandler) ffestb_R100111_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffesta_ffebad_1t (FFEBAD_FORMAT_MISSING_PAREN, t);
for (f = ffestb_local_.format.f;
f->u.root.parent != NULL;
f = f->u.root.parent->next)
;
ffestb_local_.format.f = f;
return (ffelexHandler) ffestb_R100114_ (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100113_ (ffelexToken t)
{
ffesttFormatList f;
assert (ffelex_token_type (t) == FFELEX_typeCHARACTER);
if (ffe_is_pedantic_not_90 () && (ffelex_token_length (t) == 0))
{
ffebad_start (FFEBAD_NULL_CHAR_CONST);
ffebad_here (0, ffelex_token_where_line (t),
ffelex_token_where_column (t));
ffebad_finish ();
}
f = ffestt_formatlist_append (ffestb_local_.format.f);
f->type = FFESTP_formattypeR1016;
f->t = ffelex_token_use (t);
return (ffelexHandler) ffestb_R100111_;
}
static ffelexHandler
ffestb_R100114_ (ffelexToken t)
{
ffelex_set_names_pure (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited () && !ffestb_local_.format.complained)
ffestc_R1001 (ffestb_local_.format.f);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100115_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_ANGLE:
ffestb_local_.format.pre.present = TRUE;
ffestb_local_.format.pre.rtexpr = TRUE;
ffestb_local_.format.pre.u.expr = expr;
ffelex_set_names_pure (TRUE);
return (ffelexHandler) ffestb_R10014_;
default:
ffelex_token_kill (ffestb_local_.format.pre.t);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100116_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_ANGLE:
ffestb_local_.format.post.present = TRUE;
ffestb_local_.format.post.rtexpr = TRUE;
ffestb_local_.format.post.u.expr = expr;
ffelex_set_names_pure (TRUE);
return (ffelexHandler) ffestb_R10016_;
default:
ffelex_token_kill (ffestb_local_.format.t);
ffelex_token_kill (ffestb_local_.format.post.t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100117_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_ANGLE:
ffestb_local_.format.dot.present = TRUE;
ffestb_local_.format.dot.rtexpr = TRUE;
ffestb_local_.format.dot.u.expr = expr;
ffelex_set_names_pure (TRUE);
return (ffelexHandler) ffestb_R10018_;
default:
ffelex_token_kill (ffestb_local_.format.t);
ffelex_token_kill (ffestb_local_.format.dot.t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
if (ffestb_local_.format.post.present)
ffelex_token_kill (ffestb_local_.format.post.t);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
static ffelexHandler
ffestb_R100118_ (ffelexToken ft UNUSED, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_ANGLE:
ffestb_local_.format.exp.present = TRUE;
ffestb_local_.format.exp.rtexpr = TRUE;
ffestb_local_.format.exp.u.expr = expr;
ffelex_set_names_pure (TRUE);
return (ffelexHandler) ffestb_R100110_;
default:
ffelex_token_kill (ffestb_local_.format.t);
ffelex_token_kill (ffestb_local_.format.exp.t);
if (ffestb_local_.format.pre.present)
ffelex_token_kill (ffestb_local_.format.pre.t);
if (ffestb_local_.format.post.present)
ffelex_token_kill (ffestb_local_.format.post.t);
if (ffestb_local_.format.dot.present)
ffelex_token_kill (ffestb_local_.format.dot.t);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FORMAT", t);
ffestt_formatlist_kill (ffestb_local_.format.f);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
#if FFESTR_F90
ffelexHandler
ffestb_R1107 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstUSE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_0;
}
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R11071_;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstUSE)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlUSE);
if (!ffesrc_is_name_init (*p))
goto bad_i;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
}
ffesta_confirmed ();
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_R11071_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "USE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11071_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_R1107_start (ffesta_tokens[1], FALSE);
ffestc_R1107_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R11072_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11072_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R11073_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11073_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLON:
if (ffestr_other (ffesta_tokens[2]) != FFESTR_otherONLY)
break;
if (!ffesta_is_inhibited ())
ffestc_R1107_start (ffesta_tokens[1], TRUE);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffestb_R11074_;
case FFELEX_typePOINTS:
if (!ffesta_is_inhibited ())
ffestc_R1107_start (ffesta_tokens[1], FALSE);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_tokens[1] = ffesta_tokens[2];
return (ffelexHandler) ffestb_R110711_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11074_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R11075_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1107_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11075_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_R1107_item (NULL, ffesta_tokens[1]);
ffestc_R1107_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_R1107_item (NULL, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R11078_;
case FFELEX_typePOINTS:
return (ffelexHandler) ffestb_R11076_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11076_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffesta_is_inhibited ())
ffestc_R1107_item (ffesta_tokens[1], t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R11077_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11077_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1107_finish ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R11078_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11078_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R11075_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R11079_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R110710_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R110710_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typePOINTS:
return (ffelexHandler) ffestb_R110711_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R110711_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffesta_is_inhibited ())
ffestc_R1107_item (ffesta_tokens[1], t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R110712_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R110712_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1107_finish ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R11079_;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "USE", t);
ffestc_R1107_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
ffelexHandler
ffestb_R1202 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstINTERFACE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorNone, NULL);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffesta_confirmed ();
switch (ffesta_second_kw)
{
case FFESTR_secondOPERATOR:
ffestb_local_.interface.operator = FFESTP_definedoperatorOPERATOR;
break;
case FFESTR_secondASSIGNMENT:
ffestb_local_.interface.operator = FFESTP_definedoperatorASSIGNMENT;
break;
default:
ffestb_local_.interface.operator = FFESTP_definedoperatorNone;
break;
}
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R12021_;
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlINTERFACE);
switch (ffesta_first_kw)
{
case FFESTR_firstINTERFACEOPERATOR:
if (*(ffelex_token_text (ffesta_tokens[0])
+ FFESTR_firstlINTERFACEOPERATOR) == '\0')
ffestb_local_.interface.operator
= FFESTP_definedoperatorOPERATOR;
break;
case FFESTR_firstINTERFACEASSGNMNT:
if (*(ffelex_token_text (ffesta_tokens[0])
+ FFESTR_firstlINTERFACEASSGNMNT) == '\0')
ffestb_local_.interface.operator
= FFESTP_definedoperatorASSIGNMENT;
break;
case FFESTR_firstINTERFACE:
ffestb_local_.interface.operator = FFESTP_definedoperatorNone;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
case FFELEX_typeOPEN_ARRAY:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (*p == '\0')
{
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorNone, NULL);
return (ffelexHandler) ffesta_zero (t);
}
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1] = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_R12021_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "INTERFACE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12021_ (ffelexToken t)
{
ffestb_local_.interface.slash = TRUE;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorNone, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeOPEN_PAREN:
ffestb_local_.interface.slash = FALSE;
case FFELEX_typeOPEN_ARRAY:
switch (ffestb_local_.interface.operator)
{
case FFESTP_definedoperatorNone:
break;
case FFESTP_definedoperatorOPERATOR:
ffestb_local_.interface.assignment = FALSE;
return (ffelexHandler) ffestb_R12022_;
case FFESTP_definedoperatorASSIGNMENT:
ffestb_local_.interface.assignment = TRUE;
return (ffelexHandler) ffestb_R12022_;
default:
assert (FALSE);
}
break;
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12022_ (ffelexToken t)
{
ffesta_tokens[2] = ffelex_token_use (t);
switch (ffelex_token_type (t))
{
case FFELEX_typePERIOD:
if (ffestb_local_.interface.slash)
break;
return (ffelexHandler) ffestb_R12023_;
case FFELEX_typePOWER:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorPOWER;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeASTERISK:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorMULT;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typePLUS:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorADD;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeCONCAT:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorCONCAT;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeSLASH:
if (ffestb_local_.interface.slash)
{
ffestb_local_.interface.operator = FFESTP_definedoperatorCONCAT;
return (ffelexHandler) ffestb_R12025_;
}
ffestb_local_.interface.operator = FFESTP_definedoperatorDIVIDE;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeMINUS:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorSUBTRACT;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeREL_EQ:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorEQ;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeREL_NE:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorNE;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeOPEN_ANGLE:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorLT;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeREL_LE:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorLE;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeCLOSE_ANGLE:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorGT;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeREL_GE:
if (ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorGE;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeEQUALS:
if (ffestb_local_.interface.slash)
{
ffestb_local_.interface.operator = FFESTP_definedoperatorNE;
return (ffelexHandler) ffestb_R12025_;
}
ffestb_local_.interface.operator = FFESTP_definedoperatorASSIGNMENT;
return (ffelexHandler) ffestb_R12025_;
case FFELEX_typeCLOSE_ARRAY:
if (!ffestb_local_.interface.slash)
{
ffestb_local_.interface.operator = FFESTP_definedoperatorDIVIDE;
return (ffelexHandler) ffestb_R12026_;
}
ffestb_local_.interface.operator = FFESTP_definedoperatorCONCAT;
return (ffelexHandler) ffestb_R12026_;
case FFELEX_typeCLOSE_PAREN:
if (!ffestb_local_.interface.slash)
break;
ffestb_local_.interface.operator = FFESTP_definedoperatorDIVIDE;
return (ffelexHandler) ffestb_R12026_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12023_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffelex_token_kill (ffesta_tokens[2]);
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R12024_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12024_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typePERIOD:
return (ffelexHandler) ffestb_R12025_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12025_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_R12026_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12026_ (ffelexToken t)
{
const char *p;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (ffestb_local_.interface.assignment
&& (ffestb_local_.interface.operator
!= FFESTP_definedoperatorASSIGNMENT))
{
ffebad_start (FFEBAD_INTERFACE_ASSIGNMENT);
ffebad_here (0, ffelex_token_where_line (ffesta_tokens[1]),
ffelex_token_where_column (ffesta_tokens[1]));
ffebad_here (1, ffelex_token_where_line (ffesta_tokens[2]),
ffelex_token_where_column (ffesta_tokens[2]));
ffebad_finish ();
}
switch (ffelex_token_type (ffesta_tokens[2]))
{
case FFELEX_typeNAME:
switch (ffestr_other (ffesta_tokens[2]))
{
case FFESTR_otherNOT:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorNOT, NULL);
break;
case FFESTR_otherAND:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorAND, NULL);
break;
case FFESTR_otherOR:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorOR, NULL);
break;
case FFESTR_otherEQV:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorEQV, NULL);
break;
case FFESTR_otherNEQV:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorNEQV, NULL);
break;
case FFESTR_otherEQ:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorEQ, NULL);
break;
case FFESTR_otherNE:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorNE, NULL);
break;
case FFESTR_otherLT:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorLT, NULL);
break;
case FFESTR_otherLE:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorLE, NULL);
break;
case FFESTR_otherGT:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorGT, NULL);
break;
case FFESTR_otherGE:
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorGE, NULL);
break;
default:
for (p = ffelex_token_text (ffesta_tokens[2]); *p != '\0'; ++p)
{
if (! ISALPHA (*p))
{
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1t (FFEBAD_INTERFACE_NONLETTER,
ffesta_tokens[2]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
}
if (!ffesta_is_inhibited ())
ffestc_R1202 (FFESTP_definedoperatorOPERATOR,
ffesta_tokens[2]);
}
break;
case FFELEX_typeEQUALS:
if (!ffestb_local_.interface.assignment
&& (ffestb_local_.interface.operator
== FFESTP_definedoperatorASSIGNMENT))
{
ffebad_start (FFEBAD_INTERFACE_OPERATOR);
ffebad_here (0, ffelex_token_where_line (ffesta_tokens[1]),
ffelex_token_where_column (ffesta_tokens[1]));
ffebad_here (1, ffelex_token_where_line (ffesta_tokens[2]),
ffelex_token_where_column (ffesta_tokens[2]));
ffebad_finish ();
}
if (!ffesta_is_inhibited ())
ffestc_R1202 (ffestb_local_.interface.operator, NULL);
break;
default:
if (!ffesta_is_inhibited ())
ffestc_R1202 (ffestb_local_.interface.operator, NULL);
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INTERFACE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_S3P4 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexHandler next;
ffelexToken nt;
ffelexToken ut;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstINCLUDE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
case FFELEX_typeAPOSTROPHE:
case FFELEX_typeQUOTE:
break;
default:
goto bad_1;
}
ffesta_confirmed ();
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextINCLUDE,
(ffeexprCallback) ffestb_S3P41_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstINCLUDE)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlINCLUDE);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeAPOSTROPHE:
case FFELEX_typeQUOTE:
break;
}
ffesta_confirmed ();
if (*p == '\0')
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool, FFEEXPR_contextINCLUDE,
(ffeexprCallback) ffestb_S3P41_)))
(t);
if (! ISDIGIT (*p))
goto bad_i;
nt = ffelex_token_number_from_names (ffesta_tokens[0], i);
p += ffelex_token_length (nt);
i += ffelex_token_length (nt);
if ((*p != '_') || (++i, *++p != '\0'))
{
ffelex_token_kill (nt);
goto bad_i;
}
ut = ffelex_token_uscore_from_names (ffesta_tokens[0], i - 1);
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextINCLUDE,
(ffeexprCallback) ffestb_S3P41_)))
(nt);
ffelex_token_kill (nt);
next = (ffelexHandler) (*next) (ut);
ffelex_token_kill (ut);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INCLUDE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INCLUDE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "INCLUDE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_S3P41_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
if (ffe_is_pedantic ()
&& ((ffelex_token_type (t) == FFELEX_typeSEMICOLON)
|| ffesta_line_has_semicolons))
{
ffebad_start_msg ("INCLUDE at %0 not the only statement on the source line", FFEBAD_severityWARNING);
ffebad_here (0, ffelex_token_where_line (ffesta_tokens[0]),
ffelex_token_where_column (ffesta_tokens[0]));
ffebad_finish ();
}
ffestc_S3P4 (expr, ft);
}
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INCLUDE", t);
break;
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_VXT
ffelexHandler
ffestb_V012 (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstMAP)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstMAP)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlMAP)
{
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlMAP);
goto bad_i;
}
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V012 ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MAP", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "MAP", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "MAP", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_V014 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstVOLATILE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V014_start ();
return (ffelexHandler) ffestb_V0141_ (t);
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V014_start ();
return (ffelexHandler) ffestb_V0141_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstVOLATILE)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlVOLATILE);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_V014_start ();
return (ffelexHandler) ffestb_V0141_ (t);
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_V014_start ();
return (ffelexHandler) ffestb_V0141_;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (!ffesta_is_inhibited ())
ffestc_V014_start ();
next = (ffelexHandler) ffestb_V0141_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "VOLATILE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0141_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffestb_local_.V014.is_cblock = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0144_;
case FFELEX_typeSLASH:
ffestb_local_.V014.is_cblock = TRUE;
return (ffelexHandler) ffestb_V0142_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V014_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0142_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0143_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V014_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0143_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_V0144_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V014_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0144_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
{
if (ffestb_local_.V014.is_cblock)
ffestc_V014_item_cblock (ffesta_tokens[1]);
else
ffestc_V014_item_object (ffesta_tokens[1]);
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_V0141_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
if (ffestb_local_.V014.is_cblock)
ffestc_V014_item_cblock (ffesta_tokens[1]);
else
ffestc_V014_item_object (ffesta_tokens[1]);
ffestc_V014_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "VOLATILE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V014_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_VXT
ffelexHandler
ffestb_V025 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexToken nt;
ffelexHandler next;
ffestb_local_.V025.started = FALSE;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffesta_first_kw)
{
case FFESTR_firstDEFINE:
if ((ffelex_token_type (t) != FFELEX_typeNAME)
|| (ffesta_second_kw != FFESTR_secondFILE))
goto bad_1;
ffesta_confirmed ();
return (ffelexHandler) ffestb_V0251_;
case FFESTR_firstDEFINEFILE:
return (ffelexHandler) ffestb_V0251_ (t);
default:
goto bad_0;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstDEFINEFILE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlDEFINEFILE);
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);
else
goto bad_i;
next = (ffelexHandler) ffestb_V0251_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0251_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
if (ffelex_token_type (ffesta_tokens[0]) == FFELEX_typeNAME)
ffesta_confirmed ();
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEUNIT_DF, (ffeexprCallback) ffestb_V0252_)))
(t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0252_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_local_.V025.u = expr;
ffesta_tokens[1] = ffelex_token_use (ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0253_);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0253_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffestb_local_.V025.m = expr;
ffesta_tokens[2] = ffelex_token_use (ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0254_);
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0254_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffestb_local_.V025.n = expr;
ffesta_tokens[3] = ffelex_token_use (ft);
return (ffelexHandler) ffestb_V0255_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0255_ (ffelexToken t)
{
const char *p;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
p = ffelex_token_text (t);
if (!ffesrc_char_match_init (*p, 'U', 'u') || (*++p != '\0'))
break;
return (ffelexHandler) ffestb_V0256_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0256_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextFILEASSOC,
(ffeexprCallback) ffestb_V0257_);
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0257_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestb_local_.V025.asv = expr;
ffesta_tokens[4] = ffelex_token_use (ft);
return (ffelexHandler) ffestb_V0258_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0258_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffestb_local_.V025.started)
{
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V025_start ();
ffestb_local_.V025.started = TRUE;
}
if (!ffesta_is_inhibited ())
ffestc_V025_item (ffestb_local_.V025.u, ffesta_tokens[1],
ffestb_local_.V025.m, ffesta_tokens[2],
ffestb_local_.V025.n, ffesta_tokens[3],
ffestb_local_.V025.asv, ffesta_tokens[4]);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[4]);
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEUNIT_DF, (ffeexprCallback) ffestb_V0252_);
if (!ffesta_is_inhibited ())
ffestc_V025_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffesta_tokens[3]);
ffelex_token_kill (ffesta_tokens[4]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DEFINE FILE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTB_KILL_EASY_
static void
ffestb_subr_kill_easy_ (ffestpInquireIx max)
{
ffestpInquireIx ix;
for (ix = 0; ix < max; ++ix)
{
if (ffestp_file.inquire.inquire_spec[ix].kw_or_val_present)
{
if (ffestp_file.inquire.inquire_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].kw);
if (ffestp_file.inquire.inquire_spec[ix].value_present)
ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_accept_ ()
{
ffestpAcceptIx ix;
for (ix = 0; ix < FFESTP_acceptix; ++ix)
{
if (ffestp_file.accept.accept_spec[ix].kw_or_val_present)
{
if (ffestp_file.accept.accept_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.accept.accept_spec[ix].kw);
if (ffestp_file.accept.accept_spec[ix].value_present)
ffelex_token_kill (ffestp_file.accept.accept_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_beru_ ()
{
ffestpBeruIx ix;
for (ix = 0; ix < FFESTP_beruix; ++ix)
{
if (ffestp_file.beru.beru_spec[ix].kw_or_val_present)
{
if (ffestp_file.beru.beru_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.beru.beru_spec[ix].kw);
if (ffestp_file.beru.beru_spec[ix].value_present)
ffelex_token_kill (ffestp_file.beru.beru_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_close_ ()
{
ffestpCloseIx ix;
for (ix = 0; ix < FFESTP_closeix; ++ix)
{
if (ffestp_file.close.close_spec[ix].kw_or_val_present)
{
if (ffestp_file.close.close_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.close.close_spec[ix].kw);
if (ffestp_file.close.close_spec[ix].value_present)
ffelex_token_kill (ffestp_file.close.close_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_delete_ ()
{
ffestpDeleteIx ix;
for (ix = 0; ix < FFESTP_deleteix; ++ix)
{
if (ffestp_file.delete.delete_spec[ix].kw_or_val_present)
{
if (ffestp_file.delete.delete_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.delete.delete_spec[ix].kw);
if (ffestp_file.delete.delete_spec[ix].value_present)
ffelex_token_kill (ffestp_file.delete.delete_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_inquire_ ()
{
ffestpInquireIx ix;
for (ix = 0; ix < FFESTP_inquireix; ++ix)
{
if (ffestp_file.inquire.inquire_spec[ix].kw_or_val_present)
{
if (ffestp_file.inquire.inquire_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].kw);
if (ffestp_file.inquire.inquire_spec[ix].value_present)
ffelex_token_kill (ffestp_file.inquire.inquire_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_open_ ()
{
ffestpOpenIx ix;
for (ix = 0; ix < FFESTP_openix; ++ix)
{
if (ffestp_file.open.open_spec[ix].kw_or_val_present)
{
if (ffestp_file.open.open_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.open.open_spec[ix].kw);
if (ffestp_file.open.open_spec[ix].value_present)
ffelex_token_kill (ffestp_file.open.open_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_print_ ()
{
ffestpPrintIx ix;
for (ix = 0; ix < FFESTP_printix; ++ix)
{
if (ffestp_file.print.print_spec[ix].kw_or_val_present)
{
if (ffestp_file.print.print_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.print.print_spec[ix].kw);
if (ffestp_file.print.print_spec[ix].value_present)
ffelex_token_kill (ffestp_file.print.print_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_read_ ()
{
ffestpReadIx ix;
for (ix = 0; ix < FFESTP_readix; ++ix)
{
if (ffestp_file.read.read_spec[ix].kw_or_val_present)
{
if (ffestp_file.read.read_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.read.read_spec[ix].kw);
if (ffestp_file.read.read_spec[ix].value_present)
ffelex_token_kill (ffestp_file.read.read_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_rewrite_ ()
{
ffestpRewriteIx ix;
for (ix = 0; ix < FFESTP_rewriteix; ++ix)
{
if (ffestp_file.rewrite.rewrite_spec[ix].kw_or_val_present)
{
if (ffestp_file.rewrite.rewrite_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.rewrite.rewrite_spec[ix].kw);
if (ffestp_file.rewrite.rewrite_spec[ix].value_present)
ffelex_token_kill (ffestp_file.rewrite.rewrite_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_type_ ()
{
ffestpTypeIx ix;
for (ix = 0; ix < FFESTP_typeix; ++ix)
{
if (ffestp_file.type.type_spec[ix].kw_or_val_present)
{
if (ffestp_file.type.type_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.type.type_spec[ix].kw);
if (ffestp_file.type.type_spec[ix].value_present)
ffelex_token_kill (ffestp_file.type.type_spec[ix].value);
}
}
}
#endif
#if !FFESTB_KILL_EASY_
static void
ffestb_subr_kill_write_ ()
{
ffestpWriteIx ix;
for (ix = 0; ix < FFESTP_writeix; ++ix)
{
if (ffestp_file.write.write_spec[ix].kw_or_val_present)
{
if (ffestp_file.write.write_spec[ix].kw_present)
ffelex_token_kill (ffestp_file.write.write_spec[ix].kw);
if (ffestp_file.write.write_spec[ix].value_present)
ffelex_token_kill (ffestp_file.write.write_spec[ix].value);
}
}
}
#endif
ffelexHandler
ffestb_beru (ffelexToken t)
{
ffelexHandler next;
ffestpBeruIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
break;
case FFELEX_typeOPEN_PAREN:
for (ix = 0; ix < FFESTP_beruix; ++ix)
ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_beru2_;
default:
break;
}
for (ix = 0; ix < FFESTP_beruix; ++ix)
ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM,
(ffeexprCallback) ffestb_beru1_)))
(t);
case FFELEX_typeNAMES:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
case FFELEX_typeOPEN_PAREN:
if (ffelex_token_length (ffesta_tokens[0])
!= ffestb_args.beru.len)
break;
for (ix = 0; ix < FFESTP_beruix; ++ix)
ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_beru2_;
default:
break;
}
for (ix = 0; ix < FFESTP_beruix; ++ix)
ffestp_file.beru.beru_spec[ix].kw_or_val_present = FALSE;
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_beru1_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
ffestb_args.beru.len);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
ffesta_confirmed ();
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_or_val_present
= TRUE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_present = FALSE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_present = TRUE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_is_label
= FALSE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value
= ffelex_token_use (ft);
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].u.expr = expr;
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstBACKSPACE:
ffestc_R919 ();
break;
case FFESTR_firstENDFILE:
case FFESTR_firstEND:
ffestc_R920 ();
break;
case FFESTR_firstREWIND:
ffestc_R921 ();
break;
#if FFESTR_VXT
case FFESTR_firstUNLOCK:
ffestc_V022 ();
break;
#endif
default:
assert (FALSE);
}
}
ffestb_subr_kill_beru_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru2_ (ffelexToken t)
{
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_beru3_;
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUMAMBIG, (ffeexprCallback) ffestb_beru4_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_beru3_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
ffelexToken ot;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffelex_token_kill (ffesta_tokens[1]);
nt = ffesta_tokens[2];
next = (ffelexHandler) ffestb_beru5_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
ot = ffesta_tokens[2];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUMAMBIG, (ffeexprCallback) ffestb_beru4_)))
(nt);
ffelex_token_kill (nt);
next = (ffelexHandler) (*next) (ot);
ffelex_token_kill (ot);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_beru4_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
bool inlist;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
if (ffebld_op (expr) == FFEBLD_opITEM)
{
inlist = TRUE;
expr = ffebld_head (expr);
}
else
inlist = FALSE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_or_val_present
= TRUE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].kw_present = FALSE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_present = TRUE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value_is_label
= FALSE;
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].value
= ffelex_token_use (ft);
ffestp_file.beru.beru_spec[FFESTP_beruixUNIT].u.expr = expr;
if (inlist)
return (ffelexHandler) ffestb_beru9_ (t);
return (ffelexHandler) ffestb_beru10_ (t);
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru5_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.beru.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioERR:
ffestb_local_.beru.ix = FFESTP_beruixERR;
ffestb_local_.beru.label = TRUE;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.beru.ix = FFESTP_beruixIOSTAT;
ffestb_local_.beru.left = TRUE;
ffestb_local_.beru.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioUNIT:
ffestb_local_.beru.ix = FFESTP_beruixUNIT;
ffestb_local_.beru.left = FALSE;
ffestb_local_.beru.context = FFEEXPR_contextFILENUM;
break;
default:
goto bad;
}
if (ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
.kw_or_val_present)
break;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
.kw_or_val_present = TRUE;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
.kw_present = TRUE;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix]
.value_present = FALSE;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value_is_label
= ffestb_local_.beru.label;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_beru6_;
default:
break;
}
bad:
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru6_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.beru.label)
return (ffelexHandler) ffestb_beru8_;
if (ffestb_local_.beru.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.beru.context,
(ffeexprCallback) ffestb_beru7_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.beru.context,
(ffeexprCallback) ffestb_beru7_);
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru7_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value_present
= TRUE;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value
= ffelex_token_use (ft);
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_beru5_;
return (ffelexHandler) ffestb_beru10_;
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru8_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value_present
= TRUE;
ffestp_file.beru.beru_spec[ffestb_local_.beru.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_beru9_;
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru9_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_beru5_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_beru10_;
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_beru10_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstBACKSPACE:
ffestc_R919 ();
break;
case FFESTR_firstENDFILE:
case FFESTR_firstEND:
ffestc_R920 ();
break;
case FFESTR_firstREWIND:
ffestc_R921 ();
break;
#if FFESTR_VXT
case FFESTR_firstUNLOCK:
ffestc_V022 ();
break;
#endif
default:
assert (FALSE);
}
}
ffestb_subr_kill_beru_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_beru_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.beru.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_VXT
ffelexHandler
ffestb_vxtcode (ffelexToken t)
{
ffestpVxtcodeIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
for (ix = 0; ix < FFESTP_vxtcodeix; ++ix)
ffestp_file.vxtcode.vxtcode_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_vxtcode1_);
}
case FFELEX_typeNAMES:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffelex_token_length (ffesta_tokens[0])
!= ffestb_args.vxtcode.len)
goto bad_0;
for (ix = 0; ix < FFESTP_vxtcodeix; ++ix)
ffestp_file.vxtcode.vxtcode_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_vxtcode1_);
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode1_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].kw_or_val_present
= TRUE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].kw_present = FALSE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].value_present = TRUE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].value_is_label
= FALSE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].value
= ffelex_token_use (ft);
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixC].u.expr = expr;
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMAT, (ffeexprCallback) ffestb_vxtcode2_);
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode2_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].kw_or_val_present
= TRUE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].kw_present = FALSE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].value_present = TRUE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].value_is_label
= (expr == NULL);
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].value
= ffelex_token_use (ft);
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixF].u.expr = expr;
if (ffesta_first_kw == FFESTR_firstENCODE)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextFILEVXTCODE,
(ffeexprCallback) ffestb_vxtcode3_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEVXTCODE,
(ffeexprCallback) ffestb_vxtcode3_);
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode3_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].kw_or_val_present
= TRUE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].kw_present = FALSE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].value_present = TRUE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].value_is_label
= FALSE;
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].value
= ffelex_token_use (ft);
ffestp_file.vxtcode.vxtcode_spec[FFESTP_vxtcodeixB].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_vxtcode4_;
return (ffelexHandler) ffestb_vxtcode9_;
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode4_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.vxtcode.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioERR:
ffestb_local_.vxtcode.ix = FFESTP_vxtcodeixERR;
ffestb_local_.vxtcode.label = TRUE;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.vxtcode.ix = FFESTP_vxtcodeixIOSTAT;
ffestb_local_.vxtcode.left = TRUE;
ffestb_local_.vxtcode.context = FFEEXPR_contextFILEINT;
break;
default:
goto bad;
}
if (ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
.kw_or_val_present)
break;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
.kw_or_val_present = TRUE;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
.kw_present = TRUE;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix]
.value_present = FALSE;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value_is_label
= ffestb_local_.vxtcode.label;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_vxtcode5_;
default:
break;
}
bad:
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.vxtcode.label)
return (ffelexHandler) ffestb_vxtcode7_;
if (ffestb_local_.vxtcode.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.vxtcode.context,
(ffeexprCallback) ffestb_vxtcode6_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.vxtcode.context,
(ffeexprCallback) ffestb_vxtcode6_);
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode6_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value_present
= TRUE;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value
= ffelex_token_use (ft);
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_vxtcode4_;
return (ffelexHandler) ffestb_vxtcode9_;
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode7_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value_present
= TRUE;
ffestp_file.vxtcode.vxtcode_spec[ffestb_local_.vxtcode.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_vxtcode8_;
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode8_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_vxtcode4_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_vxtcode9_;
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode9_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (ffesta_first_kw == FFESTR_firstENCODE)
{
ffestc_V023_start ();
ffestc_V023_finish ();
}
else
{
ffestc_V024_start ();
ffestc_V024_finish ();
}
}
ffestb_subr_kill_vxtcode_ ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeNAME:
case FFELEX_typeOPEN_PAREN:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
if (ffesta_first_kw == FFESTR_firstENCODE)
ffestc_V023_start ();
else
ffestc_V024_start ();
ffestb_subr_kill_vxtcode_ ();
if (ffesta_first_kw == FFESTR_firstDECODE)
next = (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextIOLISTDF,
(ffeexprCallback) ffestb_vxtcode10_);
else
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLISTDF,
(ffeexprCallback) ffestb_vxtcode10_);
if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
return next;
return (ffelexHandler) (*next) (t);
default:
break;
}
ffestb_subr_kill_vxtcode_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_vxtcode10_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
if (ffesta_first_kw == FFESTR_firstENCODE)
ffestc_V023_item (expr, ft);
else
ffestc_V024_item (expr, ft);
if (ffesta_first_kw == FFESTR_firstDECODE)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextIOLISTDF,
(ffeexprCallback) ffestb_vxtcode10_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLISTDF,
(ffeexprCallback) ffestb_vxtcode10_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
if (ffesta_first_kw == FFESTR_firstENCODE)
{
ffestc_V023_item (expr, ft);
ffestc_V023_finish ();
}
else
{
ffestc_V024_item (expr, ft);
ffestc_V024_finish ();
}
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
if (ffesta_first_kw == FFESTR_firstENCODE)
ffestc_V023_finish ();
else
ffestc_V024_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.vxtcode.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_R904 (ffelexToken t)
{
ffestpOpenIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstOPEN)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstOPEN)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlOPEN)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
for (ix = 0; ix < FFESTP_openix; ++ix)
ffestp_file.open.open_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_R9041_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9041_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9042_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9043_)))
(t);
}
}
static ffelexHandler
ffestb_R9042_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_R9044_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9043_)))
(ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9043_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.open.open_spec[FFESTP_openixUNIT].kw_or_val_present
= TRUE;
ffestp_file.open.open_spec[FFESTP_openixUNIT].kw_present = FALSE;
ffestp_file.open.open_spec[FFESTP_openixUNIT].value_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixUNIT].value_is_label
= FALSE;
ffestp_file.open.open_spec[FFESTP_openixUNIT].value
= ffelex_token_use (ft);
ffestp_file.open.open_spec[FFESTP_openixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9044_;
return (ffelexHandler) ffestb_R9049_;
default:
break;
}
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9044_ (ffelexToken t)
{
ffestrOpen kw;
ffestb_local_.open.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_open (t);
switch (kw)
{
case FFESTR_openACCESS:
ffestb_local_.open.ix = FFESTP_openixACCESS;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openACTION:
ffestb_local_.open.ix = FFESTP_openixACTION;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openASSOCIATEVARIABLE:
ffestb_local_.open.ix = FFESTP_openixASSOCIATEVARIABLE;
ffestb_local_.open.left = TRUE;
ffestb_local_.open.context = FFEEXPR_contextFILEASSOC;
break;
case FFESTR_openBLANK:
ffestb_local_.open.ix = FFESTP_openixBLANK;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openBLOCKSIZE:
ffestb_local_.open.ix = FFESTP_openixBLOCKSIZE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openBUFFERCOUNT:
ffestb_local_.open.ix = FFESTP_openixBUFFERCOUNT;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openCARRIAGECONTROL:
ffestb_local_.open.ix = FFESTP_openixCARRIAGECONTROL;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_openDEFAULTFILE:
ffestb_local_.open.ix = FFESTP_openixDEFAULTFILE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_openDELIM:
ffestb_local_.open.ix = FFESTP_openixDELIM;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openDISP:
case FFESTR_openDISPOSE:
ffestb_local_.open.ix = FFESTP_openixDISPOSE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_openERR:
ffestb_local_.open.ix = FFESTP_openixERR;
ffestb_local_.open.label = TRUE;
break;
case FFESTR_openEXTENDSIZE:
ffestb_local_.open.ix = FFESTP_openixEXTENDSIZE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openFILE:
case FFESTR_openNAME:
ffestb_local_.open.ix = FFESTP_openixFILE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_openFORM:
ffestb_local_.open.ix = FFESTP_openixFORM;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openINITIALSIZE:
ffestb_local_.open.ix = FFESTP_openixINITIALSIZE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openIOSTAT:
ffestb_local_.open.ix = FFESTP_openixIOSTAT;
ffestb_local_.open.left = TRUE;
ffestb_local_.open.context = FFEEXPR_contextFILEINT;
break;
#if 0
case FFESTR_openKEY:
ffestb_local_.open.ix = FFESTP_openixKEY;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEKEY;
break;
#endif
case FFESTR_openMAXREC:
ffestb_local_.open.ix = FFESTP_openixMAXREC;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openNOSPANBLOCKS:
if (ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
.kw_or_val_present)
goto bad;
ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
.kw_or_val_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
.kw_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS]
.value_present = FALSE;
ffestp_file.open.open_spec[FFESTP_openixNOSPANBLOCKS].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9048_;
case FFESTR_openORGANIZATION:
ffestb_local_.open.ix = FFESTP_openixORGANIZATION;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_openPAD:
ffestb_local_.open.ix = FFESTP_openixPAD;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openPOSITION:
ffestb_local_.open.ix = FFESTP_openixPOSITION;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openREADONLY:
if (ffestp_file.open.open_spec[FFESTP_openixREADONLY]
.kw_or_val_present)
goto bad;
ffestp_file.open.open_spec[FFESTP_openixREADONLY]
.kw_or_val_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixREADONLY]
.kw_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixREADONLY]
.value_present = FALSE;
ffestp_file.open.open_spec[FFESTP_openixREADONLY].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9048_;
case FFESTR_openRECL:
case FFESTR_openRECORDSIZE:
ffestb_local_.open.ix = FFESTP_openixRECL;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openRECORDTYPE:
ffestb_local_.open.ix = FFESTP_openixRECORDTYPE;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_openSHARED:
if (ffestp_file.open.open_spec[FFESTP_openixSHARED]
.kw_or_val_present)
goto bad;
ffestp_file.open.open_spec[FFESTP_openixSHARED]
.kw_or_val_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixSHARED]
.kw_present = TRUE;
ffestp_file.open.open_spec[FFESTP_openixSHARED]
.value_present = FALSE;
ffestp_file.open.open_spec[FFESTP_openixSHARED].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9048_;
case FFESTR_openSTATUS:
case FFESTR_openTYPE:
ffestb_local_.open.ix = FFESTP_openixSTATUS;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_openUNIT:
ffestb_local_.open.ix = FFESTP_openixUNIT;
ffestb_local_.open.left = FALSE;
ffestb_local_.open.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_openUSEROPEN:
ffestb_local_.open.ix = FFESTP_openixUSEROPEN;
ffestb_local_.open.left = TRUE;
ffestb_local_.open.context = FFEEXPR_contextFILEEXTFUNC;
break;
default:
goto bad;
}
if (ffestp_file.open.open_spec[ffestb_local_.open.ix]
.kw_or_val_present)
break;
ffestp_file.open.open_spec[ffestb_local_.open.ix]
.kw_or_val_present = TRUE;
ffestp_file.open.open_spec[ffestb_local_.open.ix]
.kw_present = TRUE;
ffestp_file.open.open_spec[ffestb_local_.open.ix]
.value_present = FALSE;
ffestp_file.open.open_spec[ffestb_local_.open.ix].value_is_label
= ffestb_local_.open.label;
ffestp_file.open.open_spec[ffestb_local_.open.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9045_;
default:
break;
}
bad:
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9045_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.open.label)
return (ffelexHandler) ffestb_R9047_;
if (ffestb_local_.open.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.open.context,
(ffeexprCallback) ffestb_R9046_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.open.context,
(ffeexprCallback) ffestb_R9046_);
default:
break;
}
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9046_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.open.open_spec[ffestb_local_.open.ix].value_present
= TRUE;
ffestp_file.open.open_spec[ffestb_local_.open.ix].value
= ffelex_token_use (ft);
ffestp_file.open.open_spec[ffestb_local_.open.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9044_;
return (ffelexHandler) ffestb_R9049_;
default:
break;
}
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9047_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.open.open_spec[ffestb_local_.open.ix].value_present
= TRUE;
ffestp_file.open.open_spec[ffestb_local_.open.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9048_;
default:
break;
}
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9048_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R9044_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_R9049_;
default:
break;
}
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9049_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R904 ();
ffestb_subr_kill_open_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_open_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "OPEN", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R907 (ffelexToken t)
{
ffestpCloseIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCLOSE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCLOSE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlCLOSE)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
for (ix = 0; ix < FFESTP_closeix; ++ix)
ffestp_file.close.close_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_R9071_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9071_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9072_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9073_)))
(t);
}
}
static ffelexHandler
ffestb_R9072_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_R9074_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9073_)))
(ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9073_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.close.close_spec[FFESTP_closeixUNIT].kw_or_val_present
= TRUE;
ffestp_file.close.close_spec[FFESTP_closeixUNIT].kw_present = FALSE;
ffestp_file.close.close_spec[FFESTP_closeixUNIT].value_present = TRUE;
ffestp_file.close.close_spec[FFESTP_closeixUNIT].value_is_label
= FALSE;
ffestp_file.close.close_spec[FFESTP_closeixUNIT].value
= ffelex_token_use (ft);
ffestp_file.close.close_spec[FFESTP_closeixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9074_;
return (ffelexHandler) ffestb_R9079_;
default:
break;
}
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9074_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.close.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioERR:
ffestb_local_.close.ix = FFESTP_closeixERR;
ffestb_local_.close.label = TRUE;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.close.ix = FFESTP_closeixIOSTAT;
ffestb_local_.close.left = TRUE;
ffestb_local_.close.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioSTATUS:
case FFESTR_genioDISP:
case FFESTR_genioDISPOSE:
ffestb_local_.close.ix = FFESTP_closeixSTATUS;
ffestb_local_.close.left = FALSE;
ffestb_local_.close.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_genioUNIT:
ffestb_local_.close.ix = FFESTP_closeixUNIT;
ffestb_local_.close.left = FALSE;
ffestb_local_.close.context = FFEEXPR_contextFILENUM;
break;
default:
goto bad;
}
if (ffestp_file.close.close_spec[ffestb_local_.close.ix]
.kw_or_val_present)
break;
ffestp_file.close.close_spec[ffestb_local_.close.ix]
.kw_or_val_present = TRUE;
ffestp_file.close.close_spec[ffestb_local_.close.ix]
.kw_present = TRUE;
ffestp_file.close.close_spec[ffestb_local_.close.ix]
.value_present = FALSE;
ffestp_file.close.close_spec[ffestb_local_.close.ix].value_is_label
= ffestb_local_.close.label;
ffestp_file.close.close_spec[ffestb_local_.close.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9075_;
default:
break;
}
bad:
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9075_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.close.label)
return (ffelexHandler) ffestb_R9077_;
if (ffestb_local_.close.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.close.context,
(ffeexprCallback) ffestb_R9076_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.close.context,
(ffeexprCallback) ffestb_R9076_);
default:
break;
}
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9076_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.close.close_spec[ffestb_local_.close.ix].value_present
= TRUE;
ffestp_file.close.close_spec[ffestb_local_.close.ix].value
= ffelex_token_use (ft);
ffestp_file.close.close_spec[ffestb_local_.close.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9074_;
return (ffelexHandler) ffestb_R9079_;
default:
break;
}
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9077_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.close.close_spec[ffestb_local_.close.ix].value_present
= TRUE;
ffestp_file.close.close_spec[ffestb_local_.close.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9078_;
default:
break;
}
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9078_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R9074_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_R9079_;
default:
break;
}
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9079_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R907 ();
ffestb_subr_kill_close_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_close_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "CLOSE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R909 (ffelexToken t)
{
ffelexHandler next;
ffestpReadIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstREAD)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
break;
case FFELEX_typeOPEN_PAREN:
for (ix = 0; ix < FFESTP_readix; ++ix)
ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9092_;
default:
break;
}
for (ix = 0; ix < FFESTP_readix; ++ix)
ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9091_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstREAD)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlREAD)
break;
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlREAD)
break;
for (ix = 0; ix < FFESTP_readix; ++ix)
ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9092_;
default:
break;
}
for (ix = 0; ix < FFESTP_readix; ++ix)
ffestp_file.read.read_spec[ix].kw_or_val_present = FALSE;
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9091_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
FFESTR_firstlREAD);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9091_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_present = FALSE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_present = TRUE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_is_label
= (expr == NULL);
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.read.read_spec[FFESTP_readixFORMAT].u.expr = expr;
if (!ffesta_is_inhibited ())
ffestc_R909_start (TRUE);
ffestb_subr_kill_read_ ();
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestc_context_iolist (),
(ffeexprCallback) ffestb_R90915_);
if (!ffesta_is_inhibited ())
ffestc_R909_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9092_ (ffelexToken t)
{
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9093_;
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEUNITAMBIG, (ffeexprCallback) ffestb_R9094_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9093_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
ffelexToken ot;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffelex_token_kill (ffesta_tokens[1]);
nt = ffesta_tokens[2];
next = (ffelexHandler) ffestb_R9098_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
ot = ffesta_tokens[2];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEUNITAMBIG, (ffeexprCallback) ffestb_R9094_)))
(nt);
ffelex_token_kill (nt);
next = (ffelexHandler) (*next) (ot);
ffelex_token_kill (ot);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9094_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
if (expr == NULL)
goto bad;
if (ffebld_op (expr) != FFEBLD_opITEM)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_present = FALSE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_present = TRUE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_is_label
= FALSE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.read.read_spec[FFESTP_readixFORMAT].u.expr = expr;
if (!ffesta_is_inhibited ())
ffestc_R909_start (TRUE);
ffestb_subr_kill_read_ ();
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
ffestc_context_iolist (),
(ffeexprCallback) ffestb_R90915_);
if (!ffesta_is_inhibited ())
ffestc_R909_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
goto bad;
}
}
expr = ffebld_head (expr);
if (expr == NULL)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
ffestp_file.read.read_spec[FFESTP_readixUNIT].kw_or_val_present
= TRUE;
ffestp_file.read.read_spec[FFESTP_readixUNIT].kw_present = FALSE;
ffestp_file.read.read_spec[FFESTP_readixUNIT].value_present = TRUE;
ffestp_file.read.read_spec[FFESTP_readixUNIT].value_is_label
= FALSE;
ffestp_file.read.read_spec[FFESTP_readixUNIT].value
= ffelex_token_use (ft);
ffestp_file.read.read_spec[FFESTP_readixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9095_;
return (ffelexHandler) ffestb_R90913_;
default:
break;
}
bad:
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9095_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9096_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9097_)))
(t);
}
}
static ffelexHandler
ffestb_R9096_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_R9098_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9097_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9097_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].kw_present = FALSE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_present = TRUE;
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value_is_label
= (expr == NULL);
ffestp_file.read.read_spec[FFESTP_readixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.read.read_spec[FFESTP_readixFORMAT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9098_;
return (ffelexHandler) ffestb_R90913_;
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9098_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.read.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioADVANCE:
ffestb_local_.read.ix = FFESTP_readixADVANCE;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_genioEOR:
ffestb_local_.read.ix = FFESTP_readixEOR;
ffestb_local_.read.label = TRUE;
break;
case FFESTR_genioERR:
ffestb_local_.read.ix = FFESTP_readixERR;
ffestb_local_.read.label = TRUE;
break;
case FFESTR_genioEND:
ffestb_local_.read.ix = FFESTP_readixEND;
ffestb_local_.read.label = TRUE;
break;
case FFESTR_genioFMT:
ffestb_local_.read.ix = FFESTP_readixFORMAT;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILEFORMAT;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.read.ix = FFESTP_readixIOSTAT;
ffestb_local_.read.left = TRUE;
ffestb_local_.read.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioKEY:
case FFESTR_genioKEYEQ:
ffestb_local_.read.ix = FFESTP_readixKEYEQ;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILENUMCHAR;
break;
case FFESTR_genioKEYGE:
ffestb_local_.read.ix = FFESTP_readixKEYGE;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILENUMCHAR;
break;
case FFESTR_genioKEYGT:
ffestb_local_.read.ix = FFESTP_readixKEYGT;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILENUMCHAR;
break;
case FFESTR_genioKEYID:
ffestb_local_.read.ix = FFESTP_readixKEYID;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_genioNML:
ffestb_local_.read.ix = FFESTP_readixFORMAT;
ffestb_local_.read.left = TRUE;
ffestb_local_.read.context = FFEEXPR_contextFILENAMELIST;
break;
case FFESTR_genioNULLS:
ffestb_local_.read.ix = FFESTP_readixNULLS;
ffestb_local_.read.left = TRUE;
ffestb_local_.read.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioREC:
ffestb_local_.read.ix = FFESTP_readixREC;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_genioSIZE:
ffestb_local_.read.ix = FFESTP_readixSIZE;
ffestb_local_.read.left = TRUE;
ffestb_local_.read.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioUNIT:
ffestb_local_.read.ix = FFESTP_readixUNIT;
ffestb_local_.read.left = FALSE;
ffestb_local_.read.context = FFEEXPR_contextFILEUNIT;
break;
default:
goto bad;
}
if (ffestp_file.read.read_spec[ffestb_local_.read.ix]
.kw_or_val_present)
break;
ffestp_file.read.read_spec[ffestb_local_.read.ix]
.kw_or_val_present = TRUE;
ffestp_file.read.read_spec[ffestb_local_.read.ix]
.kw_present = TRUE;
ffestp_file.read.read_spec[ffestb_local_.read.ix]
.value_present = FALSE;
ffestp_file.read.read_spec[ffestb_local_.read.ix].value_is_label
= ffestb_local_.read.label;
ffestp_file.read.read_spec[ffestb_local_.read.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9099_;
default:
break;
}
bad:
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9099_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.read.label)
return (ffelexHandler) ffestb_R90911_;
if (ffestb_local_.read.left)
return (ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.read.context,
(ffeexprCallback) ffestb_R90910_);
return (ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.read.context,
(ffeexprCallback) ffestb_R90910_);
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R90910_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
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;
}
ffestp_file.read.read_spec[ffestb_local_.read.ix].value_present
= TRUE;
ffestp_file.read.read_spec[ffestb_local_.read.ix].value
= ffelex_token_use (ft);
ffestp_file.read.read_spec[ffestb_local_.read.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9098_;
return (ffelexHandler) ffestb_R90913_;
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R90911_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.read.read_spec[ffestb_local_.read.ix].value_present
= TRUE;
ffestp_file.read.read_spec[ffestb_local_.read.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R90912_;
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R90912_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R9098_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_R90913_;
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R90913_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
ffestc_R909_start (FALSE);
ffestc_R909_finish ();
}
ffestb_subr_kill_read_ ();
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_confirmed ();
case FFELEX_typeOPEN_PAREN:
break;
}
if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
return (ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
ffestc_context_iolist (),
(ffeexprCallback) ffestb_R90914_);
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_lhs (ffesta_output_pool,
ffestc_context_iolist (),
(ffeexprCallback) ffestb_R90914_)))
(t);
}
static ffelexHandler
ffestb_R90914_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R909_start (FALSE);
ffestb_subr_kill_read_ ();
if (!ffesta_is_inhibited ())
ffestc_R909_item (expr, ft);
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestc_context_iolist (),
(ffeexprCallback) ffestb_R90915_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R909_start (FALSE);
ffestb_subr_kill_read_ ();
if (!ffesta_is_inhibited ())
{
ffestc_R909_item (expr, ft);
ffestc_R909_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_read_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R90915_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R909_item (expr, ft);
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestc_context_iolist (),
(ffeexprCallback) ffestb_R90915_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_R909_item (expr, ft);
ffestc_R909_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_R909_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "READ", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R910 (ffelexToken t)
{
ffestpWriteIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstWRITE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
for (ix = 0; ix < FFESTP_writeix; ++ix)
ffestp_file.write.write_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_R9101_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstWRITE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlWRITE)
goto bad_0;
for (ix = 0; ix < FFESTP_writeix; ++ix)
ffestp_file.write.write_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_R9101_;
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9101_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9102_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEUNIT, (ffeexprCallback) ffestb_R9103_)))
(t);
}
}
static ffelexHandler
ffestb_R9102_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_R9107_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEUNIT, (ffeexprCallback) ffestb_R9103_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9103_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.write.write_spec[FFESTP_writeixUNIT].kw_or_val_present
= TRUE;
ffestp_file.write.write_spec[FFESTP_writeixUNIT].kw_present = FALSE;
ffestp_file.write.write_spec[FFESTP_writeixUNIT].value_present = TRUE;
ffestp_file.write.write_spec[FFESTP_writeixUNIT].value_is_label
= FALSE;
ffestp_file.write.write_spec[FFESTP_writeixUNIT].value
= ffelex_token_use (ft);
ffestp_file.write.write_spec[FFESTP_writeixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9104_;
return (ffelexHandler) ffestb_R91012_;
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9104_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9105_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9106_)))
(t);
}
}
static ffelexHandler
ffestb_R9105_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_R9107_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9106_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9106_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
ffestp_file.write.write_spec[FFESTP_writeixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.write.write_spec[FFESTP_writeixFORMAT].kw_present = FALSE;
ffestp_file.write.write_spec[FFESTP_writeixFORMAT].value_present = TRUE;
ffestp_file.write.write_spec[FFESTP_writeixFORMAT].value_is_label
= (expr == NULL);
ffestp_file.write.write_spec[FFESTP_writeixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.write.write_spec[FFESTP_writeixFORMAT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9107_;
return (ffelexHandler) ffestb_R91012_;
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9107_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.write.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioADVANCE:
ffestb_local_.write.ix = FFESTP_writeixADVANCE;
ffestb_local_.write.left = FALSE;
ffestb_local_.write.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_genioEOR:
ffestb_local_.write.ix = FFESTP_writeixEOR;
ffestb_local_.write.label = TRUE;
break;
case FFESTR_genioERR:
ffestb_local_.write.ix = FFESTP_writeixERR;
ffestb_local_.write.label = TRUE;
break;
case FFESTR_genioFMT:
ffestb_local_.write.ix = FFESTP_writeixFORMAT;
ffestb_local_.write.left = FALSE;
ffestb_local_.write.context = FFEEXPR_contextFILEFORMAT;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.write.ix = FFESTP_writeixIOSTAT;
ffestb_local_.write.left = TRUE;
ffestb_local_.write.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioNML:
ffestb_local_.write.ix = FFESTP_writeixFORMAT;
ffestb_local_.write.left = TRUE;
ffestb_local_.write.context = FFEEXPR_contextFILENAMELIST;
break;
case FFESTR_genioREC:
ffestb_local_.write.ix = FFESTP_writeixREC;
ffestb_local_.write.left = FALSE;
ffestb_local_.write.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_genioUNIT:
ffestb_local_.write.ix = FFESTP_writeixUNIT;
ffestb_local_.write.left = FALSE;
ffestb_local_.write.context = FFEEXPR_contextFILEUNIT;
break;
default:
goto bad;
}
if (ffestp_file.write.write_spec[ffestb_local_.write.ix]
.kw_or_val_present)
break;
ffestp_file.write.write_spec[ffestb_local_.write.ix]
.kw_or_val_present = TRUE;
ffestp_file.write.write_spec[ffestb_local_.write.ix]
.kw_present = TRUE;
ffestp_file.write.write_spec[ffestb_local_.write.ix]
.value_present = FALSE;
ffestp_file.write.write_spec[ffestb_local_.write.ix].value_is_label
= ffestb_local_.write.label;
ffestp_file.write.write_spec[ffestb_local_.write.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9108_;
default:
break;
}
bad:
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9108_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.write.label)
return (ffelexHandler) ffestb_R91010_;
if (ffestb_local_.write.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.write.context,
(ffeexprCallback) ffestb_R9109_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.write.context,
(ffeexprCallback) ffestb_R9109_);
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9109_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
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;
}
ffestp_file.write.write_spec[ffestb_local_.write.ix].value_present
= TRUE;
ffestp_file.write.write_spec[ffestb_local_.write.ix].value
= ffelex_token_use (ft);
ffestp_file.write.write_spec[ffestb_local_.write.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9107_;
return (ffelexHandler) ffestb_R91012_;
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R91010_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.write.write_spec[ffestb_local_.write.ix].value_present
= TRUE;
ffestp_file.write.write_spec[ffestb_local_.write.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R91011_;
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R91011_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R9107_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_R91012_;
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R91012_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
ffestc_R910_start ();
ffestc_R910_finish ();
}
ffestb_subr_kill_write_ ();
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_confirmed ();
case FFELEX_typeOPEN_PAREN:
if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestc_context_iolist (), (ffeexprCallback) ffestb_R91013_);
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestc_context_iolist (), (ffeexprCallback) ffestb_R91013_)))
(t);
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R91013_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R910_start ();
ffestb_subr_kill_write_ ();
if (!ffesta_is_inhibited ())
ffestc_R910_item (expr, ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestc_context_iolist (), (ffeexprCallback) ffestb_R91014_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R910_start ();
ffestb_subr_kill_write_ ();
if (!ffesta_is_inhibited ())
{
ffestc_R910_item (expr, ft);
ffestc_R910_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_write_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R91014_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R910_item (expr, ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestc_context_iolist (), (ffeexprCallback) ffestb_R91014_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_R910_item (expr, ft);
ffestc_R910_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_R910_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "WRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R911 (ffelexToken t)
{
ffelexHandler next;
ffestpPrintIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstPRINT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
break;
default:
break;
}
for (ix = 0; ix < FFESTP_printix; ++ix)
ffestp_file.print.print_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9111_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstPRINT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlPRINT)
break;
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
default:
break;
}
for (ix = 0; ix < FFESTP_printix; ++ix)
ffestp_file.print.print_spec[ix].kw_or_val_present = FALSE;
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_R9111_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
FFESTR_firstlPRINT);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9111_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
ffestp_file.print.print_spec[FFESTP_printixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.print.print_spec[FFESTP_printixFORMAT].kw_present = FALSE;
ffestp_file.print.print_spec[FFESTP_printixFORMAT].value_present = TRUE;
ffestp_file.print.print_spec[FFESTP_printixFORMAT].value_is_label
= (expr == NULL);
ffestp_file.print.print_spec[FFESTP_printixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.print.print_spec[FFESTP_printixFORMAT].u.expr = expr;
if (!ffesta_is_inhibited ())
ffestc_R911_start ();
ffestb_subr_kill_print_ ();
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R9112_);
if (!ffesta_is_inhibited ())
ffestc_R911_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_print_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9112_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R911_item (expr, ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R9112_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_R911_item (expr, ft);
ffestc_R911_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_R911_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PRINT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R923 (ffelexToken t)
{
ffestpInquireIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstINQUIRE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstINQUIRE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlINQUIRE)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
for (ix = 0; ix < FFESTP_inquireix; ++ix)
ffestp_file.inquire.inquire_spec[ix].kw_or_val_present = FALSE;
ffestb_local_.inquire.may_be_iolength = TRUE;
return (ffelexHandler) ffestb_R9231_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9231_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R9232_;
default:
ffestb_local_.inquire.may_be_iolength = FALSE;
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9233_)))
(t);
}
}
static ffelexHandler
ffestb_R9232_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_R9234_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
ffestb_local_.inquire.may_be_iolength = FALSE;
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_R9233_)))
(ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_R9233_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].kw_or_val_present
= TRUE;
ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].kw_present = FALSE;
ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].value_present = TRUE;
ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].value_is_label
= FALSE;
ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].value
= ffelex_token_use (ft);
ffestp_file.inquire.inquire_spec[FFESTP_inquireixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9234_;
return (ffelexHandler) ffestb_R9239_;
default:
break;
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9234_ (ffelexToken t)
{
ffestrInquire kw;
ffestb_local_.inquire.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_inquire (t);
if (kw != FFESTR_inquireIOLENGTH)
ffestb_local_.inquire.may_be_iolength = FALSE;
switch (kw)
{
case FFESTR_inquireACCESS:
ffestb_local_.inquire.ix = FFESTP_inquireixACCESS;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireACTION:
ffestb_local_.inquire.ix = FFESTP_inquireixACTION;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireBLANK:
ffestb_local_.inquire.ix = FFESTP_inquireixBLANK;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireCARRIAGECONTROL:
ffestb_local_.inquire.ix = FFESTP_inquireixCARRIAGECONTROL;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquireDEFAULTFILE:
ffestb_local_.inquire.ix = FFESTP_inquireixDEFAULTFILE;
ffestb_local_.inquire.left = FALSE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquireDELIM:
ffestb_local_.inquire.ix = FFESTP_inquireixDELIM;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireDIRECT:
ffestb_local_.inquire.ix = FFESTP_inquireixDIRECT;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireERR:
ffestb_local_.inquire.ix = FFESTP_inquireixERR;
ffestb_local_.inquire.label = TRUE;
break;
case FFESTR_inquireEXIST:
ffestb_local_.inquire.ix = FFESTP_inquireixEXIST;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILELOG;
break;
case FFESTR_inquireFILE:
ffestb_local_.inquire.ix = FFESTP_inquireixFILE;
ffestb_local_.inquire.left = FALSE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquireFORM:
ffestb_local_.inquire.ix = FFESTP_inquireixFORM;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireFORMATTED:
ffestb_local_.inquire.ix = FFESTP_inquireixFORMATTED;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireIOLENGTH:
if (!ffestb_local_.inquire.may_be_iolength)
goto bad;
ffestb_local_.inquire.ix = FFESTP_inquireixIOLENGTH;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_inquireIOSTAT:
ffestb_local_.inquire.ix = FFESTP_inquireixIOSTAT;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_inquireKEYED:
ffestb_local_.inquire.ix = FFESTP_inquireixKEYED;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquireNAME:
ffestb_local_.inquire.ix = FFESTP_inquireixNAME;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquireNAMED:
ffestb_local_.inquire.ix = FFESTP_inquireixNAMED;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILELOG;
break;
case FFESTR_inquireNEXTREC:
ffestb_local_.inquire.ix = FFESTP_inquireixNEXTREC;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFINT;
break;
case FFESTR_inquireNUMBER:
ffestb_local_.inquire.ix = FFESTP_inquireixNUMBER;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_inquireOPENED:
ffestb_local_.inquire.ix = FFESTP_inquireixOPENED;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILELOG;
break;
case FFESTR_inquireORGANIZATION:
ffestb_local_.inquire.ix = FFESTP_inquireixORGANIZATION;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquirePAD:
ffestb_local_.inquire.ix = FFESTP_inquireixPAD;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquirePOSITION:
ffestb_local_.inquire.ix = FFESTP_inquireixPOSITION;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireREAD:
ffestb_local_.inquire.ix = FFESTP_inquireixREAD;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireREADWRITE:
ffestb_local_.inquire.ix = FFESTP_inquireixREADWRITE;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireRECL:
ffestb_local_.inquire.ix = FFESTP_inquireixRECL;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_inquireRECORDTYPE:
ffestb_local_.inquire.ix = FFESTP_inquireixRECORDTYPE;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILECHAR;
break;
case FFESTR_inquireSEQUENTIAL:
ffestb_local_.inquire.ix = FFESTP_inquireixSEQUENTIAL;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireUNFORMATTED:
ffestb_local_.inquire.ix = FFESTP_inquireixUNFORMATTED;
ffestb_local_.inquire.left = TRUE;
ffestb_local_.inquire.context = FFEEXPR_contextFILEDFCHAR;
break;
case FFESTR_inquireUNIT:
ffestb_local_.inquire.ix = FFESTP_inquireixUNIT;
ffestb_local_.inquire.left = FALSE;
ffestb_local_.inquire.context = FFEEXPR_contextFILENUM;
break;
default:
goto bad;
}
if (ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
.kw_or_val_present)
break;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
.kw_or_val_present = TRUE;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
.kw_present = TRUE;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix]
.value_present = FALSE;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value_is_label
= ffestb_local_.inquire.label;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9235_;
default:
break;
}
bad:
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9235_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.inquire.label)
return (ffelexHandler) ffestb_R9237_;
if (ffestb_local_.inquire.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.inquire.context,
(ffeexprCallback) ffestb_R9236_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.inquire.context,
(ffeexprCallback) ffestb_R9236_);
default:
break;
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9236_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (ffestb_local_.inquire.ix == FFESTP_inquireixIOLENGTH)
break;
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value_present
= TRUE;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value
= ffelex_token_use (ft);
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_R9234_;
if (ffestb_local_.inquire.ix == FFESTP_inquireixIOLENGTH)
return (ffelexHandler) ffestb_R92310_;
return (ffelexHandler) ffestb_R9239_;
default:
break;
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9237_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value_present
= TRUE;
ffestp_file.inquire.inquire_spec[ffestb_local_.inquire.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_R9238_;
default:
break;
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9238_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_R9234_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_R9239_;
default:
break;
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R9239_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R923A ();
ffestb_subr_kill_inquire_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R92310_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
break;
default:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R923B_start ();
ffestb_subr_kill_inquire_ ();
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R92311_)))
(t);
}
ffestb_subr_kill_inquire_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R92311_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_R923B_item (expr, ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_R92311_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_R923B_item (expr, ft);
ffestc_R923B_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_R923B_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "INQUIRE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_VXT
ffelexHandler
ffestb_V018 (ffelexToken t)
{
ffestpRewriteIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstREWRITE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
for (ix = 0; ix < FFESTP_rewriteix; ++ix)
ffestp_file.rewrite.rewrite_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_V0181_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstREWRITE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlREWRITE)
goto bad_0;
for (ix = 0; ix < FFESTP_rewriteix; ++ix)
ffestp_file.rewrite.rewrite_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_V0181_;
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0181_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0182_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0183_)))
(t);
}
}
static ffelexHandler
ffestb_V0182_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_V0187_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0183_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_V0183_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].kw_or_val_present
= TRUE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].kw_present = FALSE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].value_present = TRUE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].value_is_label
= FALSE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].value
= ffelex_token_use (ft);
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0184_;
return (ffelexHandler) ffestb_V01812_;
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0184_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0185_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMAT, (ffeexprCallback) ffestb_V0186_)))
(t);
}
}
static ffelexHandler
ffestb_V0185_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_V0187_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
nt = ffesta_tokens[1];
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMAT, (ffeexprCallback) ffestb_V0186_)))
(nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_V0186_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].kw_or_val_present
= TRUE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].kw_present = FALSE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].value_present = TRUE;
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].value_is_label
= (expr == NULL);
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].value
= ffelex_token_use (ft);
ffestp_file.rewrite.rewrite_spec[FFESTP_rewriteixFMT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0187_;
return (ffelexHandler) ffestb_V01812_;
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0187_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.rewrite.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioERR:
ffestb_local_.rewrite.ix = FFESTP_rewriteixERR;
ffestb_local_.rewrite.label = TRUE;
break;
case FFESTR_genioFMT:
ffestb_local_.rewrite.ix = FFESTP_rewriteixFMT;
ffestb_local_.rewrite.left = FALSE;
ffestb_local_.rewrite.context = FFEEXPR_contextFILEFORMAT;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.rewrite.ix = FFESTP_rewriteixIOSTAT;
ffestb_local_.rewrite.left = TRUE;
ffestb_local_.rewrite.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioUNIT:
ffestb_local_.rewrite.ix = FFESTP_rewriteixUNIT;
ffestb_local_.rewrite.left = FALSE;
ffestb_local_.rewrite.context = FFEEXPR_contextFILENUM;
break;
default:
goto bad;
}
if (ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
.kw_or_val_present)
break;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
.kw_or_val_present = TRUE;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
.kw_present = TRUE;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
.value_present = FALSE;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value_is_label
= ffestb_local_.rewrite.label;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_V0188_;
default:
break;
}
bad:
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0188_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.rewrite.label)
return (ffelexHandler) ffestb_V01810_;
if (ffestb_local_.rewrite.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.rewrite.context,
(ffeexprCallback) ffestb_V0189_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.rewrite.context,
(ffeexprCallback) ffestb_V0189_);
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0189_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
if (ffestb_local_.rewrite.context == FFEEXPR_contextFILEFORMAT)
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix]
.value_is_label = TRUE;
else
break;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value_present
= TRUE;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value
= ffelex_token_use (ft);
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0187_;
return (ffelexHandler) ffestb_V01812_;
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V01810_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value_present
= TRUE;
ffestp_file.rewrite.rewrite_spec[ffestb_local_.rewrite.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_V01811_;
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V01811_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_V0187_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_V01812_;
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V01812_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
ffestc_V018_start ();
ffestc_V018_finish ();
}
ffestb_subr_kill_rewrite_ ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeNAME:
case FFELEX_typeOPEN_PAREN:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V018_start ();
ffestb_subr_kill_rewrite_ ();
if (!ffe_is_pedantic () && (ffelex_token_type (t) == FFELEX_typeCOMMA))
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V01813_);
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V01813_)))
(t);
default:
break;
}
ffestb_subr_kill_rewrite_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V01813_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_V018_item (expr, ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V01813_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_V018_item (expr, ft);
ffestc_V018_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_V018_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "REWRITE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_V019 (ffelexToken t)
{
ffelexHandler next;
ffestpAcceptIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstACCEPT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
case FFELEX_typeNAME:
case FFELEX_typeNUMBER:
ffesta_confirmed ();
break;
default:
break;
}
for (ix = 0; ix < FFESTP_acceptix; ++ix)
ffestp_file.accept.accept_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0191_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstACCEPT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlACCEPT)
break;
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
default:
break;
}
for (ix = 0; ix < FFESTP_acceptix; ++ix)
ffestp_file.accept.accept_spec[ix].kw_or_val_present = FALSE;
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0191_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
FFESTR_firstlACCEPT);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0191_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].kw_present = FALSE;
ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].value_present = TRUE;
ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].value_is_label
= (expr == NULL);
ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.accept.accept_spec[FFESTP_acceptixFORMAT].u.expr = expr;
if (!ffesta_is_inhibited ())
ffestc_V019_start ();
ffestb_subr_kill_accept_ ();
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextIOLIST,
(ffeexprCallback) ffestb_V0192_);
if (!ffesta_is_inhibited ())
ffestc_V019_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_accept_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0192_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_V019_item (expr, ft);
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextIOLIST,
(ffeexprCallback) ffestb_V0192_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_V019_item (expr, ft);
ffestc_V019_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_V019_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "ACCEPT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_V020 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexHandler next;
ffestpTypeIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstTYPE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
case FFELEX_typeCOMMA:
goto bad_1;
case FFELEX_typeNUMBER:
ffesta_confirmed ();
break;
case FFELEX_typeNAME:
default:
break;
}
for (ix = 0; ix < FFESTP_typeix; ++ix)
ffestp_file.type.type_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) (*((ffelexHandler)
ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0201_)))
(t);
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstTYPE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlTYPE)
break;
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (ffelex_token_length (ffesta_tokens[0]) == FFESTR_firstlTYPE)
break;
goto bad_1;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typeCOLON:
goto bad_1;
default:
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlTYPE);
if (ISDIGIT (*p))
ffesta_confirmed ();
for (ix = 0; ix < FFESTP_typeix; ++ix)
ffestp_file.type.type_spec[ix].kw_or_val_present = FALSE;
next = (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILEFORMATNML, (ffeexprCallback) ffestb_V0201_);
next = (ffelexHandler) ffelex_splice_tokens (next, ffesta_tokens[0],
FFESTR_firstlTYPE);
if (next == NULL)
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0201_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
bool comma = TRUE;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffe_is_vxt () && (expr != NULL)
&& (ffebld_op (expr) == FFEBLD_opSYMTER))
break;
comma = FALSE;
case FFELEX_typeCOMMA:
if (!ffe_is_vxt () && comma && (expr != NULL)
&& (ffebld_op (expr) == FFEBLD_opPAREN)
&& (ffebld_op (ffebld_left (expr)) == FFEBLD_opSYMTER))
break;
ffesta_confirmed ();
ffestp_file.type.type_spec[FFESTP_typeixFORMAT].kw_or_val_present
= TRUE;
ffestp_file.type.type_spec[FFESTP_typeixFORMAT].kw_present = FALSE;
ffestp_file.type.type_spec[FFESTP_typeixFORMAT].value_present = TRUE;
ffestp_file.type.type_spec[FFESTP_typeixFORMAT].value_is_label
= (expr == NULL);
ffestp_file.type.type_spec[FFESTP_typeixFORMAT].value
= ffelex_token_use (ft);
ffestp_file.type.type_spec[FFESTP_typeixFORMAT].u.expr = expr;
if (!ffesta_is_inhibited ())
ffestc_V020_start ();
ffestb_subr_kill_type_ ();
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V0202_);
if (!ffesta_is_inhibited ())
ffestc_V020_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_type_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0202_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_V020_item (expr, ft);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextIOLIST, (ffeexprCallback) ffestb_V0202_);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_V020_item (expr, ft);
ffestc_V020_finish ();
}
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_V020_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "TYPE I/O", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_VXT
ffelexHandler
ffestb_V021 (ffelexToken t)
{
ffestpDeleteIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstDELETE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstDELETE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlDELETE)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
for (ix = 0; ix < FFESTP_deleteix; ++ix)
ffestp_file.delete.delete_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_V0211_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0211_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0212_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0213_)))
(t);
}
}
static ffelexHandler
ffestb_V0212_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_V0214_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0213_)))
(ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_V0213_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].kw_or_val_present
= TRUE;
ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].kw_present = FALSE;
ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].value_present = TRUE;
ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].value_is_label
= FALSE;
ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].value
= ffelex_token_use (ft);
ffestp_file.delete.delete_spec[FFESTP_deleteixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0214_;
return (ffelexHandler) ffestb_V0219_;
default:
break;
}
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0214_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.delete.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioERR:
ffestb_local_.delete.ix = FFESTP_deleteixERR;
ffestb_local_.delete.label = TRUE;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.delete.ix = FFESTP_deleteixIOSTAT;
ffestb_local_.delete.left = TRUE;
ffestb_local_.delete.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioREC:
ffestb_local_.delete.ix = FFESTP_deleteixREC;
ffestb_local_.delete.left = FALSE;
ffestb_local_.delete.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_genioUNIT:
ffestb_local_.delete.ix = FFESTP_deleteixUNIT;
ffestb_local_.delete.left = FALSE;
ffestb_local_.delete.context = FFEEXPR_contextFILENUM;
break;
default:
goto bad;
}
if (ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
.kw_or_val_present)
break;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
.kw_or_val_present = TRUE;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
.kw_present = TRUE;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix]
.value_present = FALSE;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value_is_label
= ffestb_local_.delete.label;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_V0215_;
default:
break;
}
bad:
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0215_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.delete.label)
return (ffelexHandler) ffestb_V0217_;
if (ffestb_local_.delete.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.delete.context,
(ffeexprCallback) ffestb_V0216_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.delete.context, (ffeexprCallback) ffestb_V0216_);
default:
break;
}
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0216_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value_present
= TRUE;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value
= ffelex_token_use (ft);
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0214_;
return (ffelexHandler) ffestb_V0219_;
default:
break;
}
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0217_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value_present
= TRUE;
ffestp_file.delete.delete_spec[ffestb_local_.delete.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_V0218_;
default:
break;
}
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0218_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_V0214_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_V0219_;
default:
break;
}
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0219_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V021 ();
ffestb_subr_kill_delete_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_delete_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "DELETE", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_V026 (ffelexToken t)
{
ffestpFindIx ix;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstFIND)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstFIND)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlFIND)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
for (ix = 0; ix < FFESTP_findix; ++ix)
ffestp_file.find.find_spec[ix].kw_or_val_present = FALSE;
return (ffelexHandler) ffestb_V0261_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0261_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0262_;
default:
return (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0263_)))
(t);
}
}
static ffelexHandler
ffestb_V0262_ (ffelexToken t)
{
ffelexHandler next;
ffelexToken nt;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
nt = ffesta_tokens[1];
next = (ffelexHandler) ffestb_V0264_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
next = (ffelexHandler) (*((ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextFILENUM, (ffeexprCallback) ffestb_V0263_)))
(ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) (*next) (t);
}
}
static ffelexHandler
ffestb_V0263_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.find.find_spec[FFESTP_findixUNIT].kw_or_val_present
= TRUE;
ffestp_file.find.find_spec[FFESTP_findixUNIT].kw_present = FALSE;
ffestp_file.find.find_spec[FFESTP_findixUNIT].value_present = TRUE;
ffestp_file.find.find_spec[FFESTP_findixUNIT].value_is_label
= FALSE;
ffestp_file.find.find_spec[FFESTP_findixUNIT].value
= ffelex_token_use (ft);
ffestp_file.find.find_spec[FFESTP_findixUNIT].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0264_;
return (ffelexHandler) ffestb_V0269_;
default:
break;
}
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0264_ (ffelexToken t)
{
ffestrGenio kw;
ffestb_local_.find.label = FALSE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
kw = ffestr_genio (t);
switch (kw)
{
case FFESTR_genioERR:
ffestb_local_.find.ix = FFESTP_findixERR;
ffestb_local_.find.label = TRUE;
break;
case FFESTR_genioIOSTAT:
ffestb_local_.find.ix = FFESTP_findixIOSTAT;
ffestb_local_.find.left = TRUE;
ffestb_local_.find.context = FFEEXPR_contextFILEINT;
break;
case FFESTR_genioREC:
ffestb_local_.find.ix = FFESTP_findixREC;
ffestb_local_.find.left = FALSE;
ffestb_local_.find.context = FFEEXPR_contextFILENUM;
break;
case FFESTR_genioUNIT:
ffestb_local_.find.ix = FFESTP_findixUNIT;
ffestb_local_.find.left = FALSE;
ffestb_local_.find.context = FFEEXPR_contextFILENUM;
break;
default:
goto bad;
}
if (ffestp_file.find.find_spec[ffestb_local_.find.ix]
.kw_or_val_present)
break;
ffestp_file.find.find_spec[ffestb_local_.find.ix]
.kw_or_val_present = TRUE;
ffestp_file.find.find_spec[ffestb_local_.find.ix]
.kw_present = TRUE;
ffestp_file.find.find_spec[ffestb_local_.find.ix]
.value_present = FALSE;
ffestp_file.find.find_spec[ffestb_local_.find.ix].value_is_label
= ffestb_local_.find.label;
ffestp_file.find.find_spec[ffestb_local_.find.ix].kw
= ffelex_token_use (t);
return (ffelexHandler) ffestb_V0265_;
default:
break;
}
bad:
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0265_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (ffestb_local_.find.label)
return (ffelexHandler) ffestb_V0267_;
if (ffestb_local_.find.left)
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
ffestb_local_.find.context,
(ffeexprCallback) ffestb_V0266_);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.find.context,
(ffeexprCallback) ffestb_V0266_);
default:
break;
}
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0266_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestp_file.find.find_spec[ffestb_local_.find.ix].value_present
= TRUE;
ffestp_file.find.find_spec[ffestb_local_.find.ix].value
= ffelex_token_use (ft);
ffestp_file.find.find_spec[ffestb_local_.find.ix].u.expr = expr;
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_V0264_;
return (ffelexHandler) ffestb_V0269_;
default:
break;
}
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0267_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestp_file.find.find_spec[ffestb_local_.find.ix].value_present
= TRUE;
ffestp_file.find.find_spec[ffestb_local_.find.ix].value
= ffelex_token_use (t);
return (ffelexHandler) ffestb_V0268_;
default:
break;
}
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0268_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_V0264_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_V0269_;
default:
break;
}
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0269_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V026 ();
ffestb_subr_kill_find_ ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestb_subr_kill_find_ ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FIND", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
ffelexHandler
ffestb_dimlist (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
}
ffestb_local_.dimlist.started = TRUE;
return (ffelexHandler) ffestb_dimlist1_;
case FFELEX_typeNAME:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
}
ffestb_local_.dimlist.started = TRUE;
return (ffelexHandler) ffestb_dimlist1_ (t);
}
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.dimlist.len);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
}
ffestb_local_.dimlist.started = TRUE;
next = (ffelexHandler) ffestb_dimlist1_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
}
ffestb_local_.dimlist.started = TRUE;
return (ffelexHandler) ffestb_dimlist1_;
case FFELEX_typeOPEN_PAREN:
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
ffestb_local_.dimlist.started = FALSE;
next = (ffelexHandler) ffestb_dimlist1_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_dimlist1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_dimlist2_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
break;
}
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_finish ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_finish ();
break;
case FFESTR_firstTARGET:
ffestc_R527_finish ();
break;
default:
assert (FALSE);
}
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_dimlist2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_dimlist3_;
ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLIST;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDIMLIST, (ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.dimlist.started)
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
ffestb_local_.dimlist.started = TRUE;
}
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_item (ffesta_tokens[1], NULL);
break;
case FFESTR_firstPOINTER:
ffestc_R526_item (ffesta_tokens[1], NULL);
break;
case FFESTR_firstTARGET:
ffestc_R527_item (ffesta_tokens[1], NULL);
break;
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_dimlist4_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.dimlist.started)
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
}
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_item (ffesta_tokens[1], NULL);
ffestc_R525_finish ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_item (ffesta_tokens[1], NULL);
ffestc_R526_finish ();
break;
case FFESTR_firstTARGET:
ffestc_R527_item (ffesta_tokens[1], NULL);
ffestc_R527_finish ();
break;
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
break;
}
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_finish ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_finish ();
break;
case FFESTR_firstTARGET:
ffestc_R527_finish ();
break;
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_dimlist3_ (ffelexToken t)
{
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.dimlist.started)
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
ffestb_local_.dimlist.started = TRUE;
}
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
break;
case FFESTR_firstPOINTER:
ffestc_R526_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
break;
case FFESTR_firstTARGET:
ffestc_R527_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
break;
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_dimlist4_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.dimlist.started)
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_start ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_start ();
break;
case FFESTR_firstTARGET:
ffestc_R527_start ();
break;
default:
assert (FALSE);
}
}
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_R525_finish ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_R526_finish ();
break;
case FFESTR_firstTARGET:
ffestc_R527_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_R527_finish ();
break;
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
if (ffestb_local_.dimlist.started && !ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_finish ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_finish ();
break;
case FFESTR_firstTARGET:
ffestc_R527_finish ();
break;
default:
assert (FALSE);
}
}
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_dimlist4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
switch (ffesta_first_kw)
{
case FFESTR_firstALLOCATABLE:
ffestc_R525_finish ();
break;
case FFESTR_firstPOINTER:
ffestc_R526_finish ();
break;
case FFESTR_firstTARGET:
ffestc_R527_finish ();
break;
default:
assert (FALSE);
}
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dimlist.badname, t);
return (ffelexHandler) ffesta_zero (t);
default:
return (ffelexHandler) ffestb_dimlist1_ (t);
}
}
#endif
ffelexHandler
ffestb_dummy (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
ffestb_local_.decl.recursive = NULL;
ffestb_local_.dummy.badname = ffestb_args.dummy.badname;
ffestb_local_.dummy.is_subr = ffestb_args.dummy.is_subr;
ffestb_local_.dummy.first_kw = ffesta_first_kw;
return (ffelexHandler) ffestb_dummy1_;
case FFELEX_typeNAMES:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
case FFELEX_typeOPEN_PAREN:
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.dummy.len);
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1]
= ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
ffestb_local_.decl.recursive = NULL;
ffestb_local_.dummy.badname = ffestb_args.dummy.badname;
ffestb_local_.dummy.is_subr = ffestb_args.dummy.is_subr;
ffestb_local_.dummy.first_kw = ffesta_first_kw;
return (ffelexHandler) ffestb_dummy1_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dummy.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.dummy.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.dummy.badname, ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_dummy1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (ffestb_local_.dummy.first_kw == FFESTR_firstFUNCTION)
{
ffesta_confirmed ();
break;
}
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
ffestb_subrargs_.name_list.args = NULL;
ffestb_subrargs_.name_list.ok = TRUE;
ffestb_subrargs_.name_list.close_paren = ffelex_token_use (t);
return (ffelexHandler) ffestb_dummy2_ (t);
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.name_list.args = ffestt_tokenlist_create ();
ffestb_subrargs_.name_list.handler = (ffelexHandler) ffestb_dummy2_;
ffestb_subrargs_.name_list.is_subr = ffestb_local_.dummy.is_subr;
ffestb_subrargs_.name_list.names = FALSE;
return (ffelexHandler) ffestb_subr_name_list_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_local_.dummy.badname, t);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_dummy2_ (ffelexToken t)
{
if (!ffestb_subrargs_.name_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
switch (ffestb_local_.dummy.first_kw)
{
case FFESTR_firstFUNCTION:
ffestc_R1219 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
ffestb_subrargs_.name_list.close_paren, FFESTP_typeNone,
NULL, NULL, NULL, NULL, ffestb_local_.decl.recursive, NULL);
break;
case FFESTR_firstSUBROUTINE:
ffestc_R1223 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
ffestb_subrargs_.name_list.close_paren,
ffestb_local_.decl.recursive);
break;
case FFESTR_firstENTRY:
ffestc_R1226 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
ffestb_subrargs_.name_list.close_paren);
break;
default:
assert (FALSE);
}
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
if (ffestb_subrargs_.name_list.args != NULL)
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeNAME:
ffesta_confirmed ();
if ((ffestb_local_.dummy.first_kw != FFESTR_firstFUNCTION)
|| (ffestr_other (t) != FFESTR_otherRESULT))
break;
ffestb_local_.decl.type = FFESTP_typeNone;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_funcname_6_;
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_local_.dummy.badname, t);
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
if (ffestb_subrargs_.name_list.args != NULL)
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_R524 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R524_start (ffesta_first_kw == FFESTR_firstVIRTUAL);
ffestb_local_.dimension.started = TRUE;
return (ffelexHandler) ffestb_R5241_ (t);
}
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.R524.len);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
case FFELEX_typeOPEN_PAREN:
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
ffestb_local_.dimension.started = FALSE;
next = (ffelexHandler) ffestb_R5241_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5241_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R5242_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R524_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5242_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_R5243_;
ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
ffestb_subrargs_.dim_list.ctx = ffesta_is_entry_valid
? FFEEXPR_contextDIMLIST : FFEEXPR_contextDIMLISTCOMMON;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R524_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5243_ (ffelexToken t)
{
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.dimension.started)
{
ffestc_R524_start (ffesta_first_kw == FFESTR_firstVIRTUAL);
ffestb_local_.dimension.started = TRUE;
}
ffestc_R524_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_R5244_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.dimension.started)
{
ffestc_R524_start (ffesta_first_kw == FFESTR_firstVIRTUAL);
ffestb_local_.dimension.started = TRUE;
}
ffestc_R524_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_R524_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
if (ffestb_local_.dimension.started && !ffesta_is_inhibited ())
ffestc_R524_finish ();
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5244_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R524_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, ffestb_args.R524.badname, t);
return (ffelexHandler) ffesta_zero (t);
default:
return (ffelexHandler) ffestb_R5241_ (t);
}
}
ffelexHandler
ffestb_R547 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCOMMON)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R547_start ();
ffestb_local_.common.started = TRUE;
return (ffelexHandler) ffestb_R5471_ (t);
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCOMMON)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCOMMON);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
ffesta_confirmed ();
if (*p != '\0')
break;
if (!ffesta_is_inhibited ())
ffestc_R547_start ();
ffestb_local_.common.started = TRUE;
return (ffelexHandler) ffestb_R5471_ (t);
case FFELEX_typeOPEN_PAREN:
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (ffelex_token_type (t) == FFELEX_typeOPEN_PAREN)
ffestb_local_.common.started = FALSE;
else
{
if (!ffesta_is_inhibited ())
ffestc_R547_start ();
ffestb_local_.common.started = TRUE;
}
next = (ffelexHandler) ffestb_R5471_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "COMMON", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5471_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
return (ffelexHandler) ffestb_R5474_ (t);
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_R5472_;
case FFELEX_typeCONCAT:
if (!ffesta_is_inhibited ())
ffestc_R547_item_cblock (NULL);
return (ffelexHandler) ffestb_R5474_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R547_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5472_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R5473_;
case FFELEX_typeSLASH:
if (!ffesta_is_inhibited ())
ffestc_R547_item_cblock (NULL);
return (ffelexHandler) ffestb_R5474_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R547_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5473_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeSLASH:
if (!ffesta_is_inhibited ())
ffestc_R547_item_cblock (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R5474_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R547_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5474_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_R5475_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R547_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5475_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_R5476_;
ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLISTCOMMON;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDIMLISTCOMMON, (ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_R547_item_object (ffesta_tokens[1], NULL);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R5477_;
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
if (!ffesta_is_inhibited ())
ffestc_R547_item_object (ffesta_tokens[1], NULL);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_R5471_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_R547_item_object (ffesta_tokens[1], NULL);
ffestc_R547_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_R547_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5476_ (ffelexToken t)
{
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.common.started)
{
ffestc_R547_start ();
ffestb_local_.common.started = TRUE;
}
ffestc_R547_item_object (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_R5477_;
case FFELEX_typeSLASH:
case FFELEX_typeCONCAT:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.common.started)
{
ffestc_R547_start ();
ffestb_local_.common.started = TRUE;
}
ffestc_R547_item_object (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_R5471_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.common.started)
ffestc_R547_start ();
ffestc_R547_item_object (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_R547_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
if (ffestb_local_.common.started && !ffesta_is_inhibited ())
ffestc_R547_finish ();
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R5477_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R547_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "COMMON", t);
return (ffelexHandler) ffesta_zero (t);
default:
return (ffelexHandler) ffestb_R5471_ (t);
}
}
#if FFESTR_F90
ffelexHandler
ffestb_R624 (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstNULLIFY)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstNULLIFY)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlNULLIFY)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeNAME:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffestb_local_.R624.exprs = ffestt_exprlist_create ();
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextNULLIFY,
(ffeexprCallback) ffestb_R6241_);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R6241_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestt_exprlist_append (ffestb_local_.R624.exprs, expr,
ffelex_token_use (t));
return (ffelexHandler) ffestb_R6242_;
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
ffestt_exprlist_append (ffestb_local_.R624.exprs, expr,
ffelex_token_use (t));
return (ffelexHandler) ffeexpr_lhs (ffesta_output_pool,
FFEEXPR_contextNULLIFY,
(ffeexprCallback) ffestb_R6241_);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", t);
ffestt_exprlist_kill (ffestb_local_.R624.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R6242_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R624 (ffestb_local_.R624.exprs);
ffestt_exprlist_kill (ffestb_local_.R624.exprs);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "NULLIFY", t);
ffestt_exprlist_kill (ffestb_local_.R624.exprs);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_R1229 (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
case FFELEX_typeNAMES:
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeNAME:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffestb_subrargs_.name_list.args = ffestt_tokenlist_create ();
ffestb_subrargs_.name_list.handler = (ffelexHandler) ffestb_R12291_;
ffestb_subrargs_.name_list.is_subr = FALSE;
ffestb_subrargs_.name_list.names = TRUE;
return (ffelexHandler) ffestb_subr_name_list_;
bad_0:
bad_1:
ffesta_ffebad_2t (FFEBAD_UNREC_STMT, ffesta_tokens[0], t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12291_ (ffelexToken t)
{
ffelex_set_names (FALSE);
if (!ffestb_subrargs_.name_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1229_start (ffesta_tokens[0],
ffestb_subrargs_.name_list.args,
ffestb_subrargs_.name_list.close_paren);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextSFUNCDEF, (ffeexprCallback) ffestb_R12292_);
default:
break;
}
bad:
ffesta_ffebad_2t (FFEBAD_UNREC_STMT, ffesta_tokens[0], t);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_R12292_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
if (expr == NULL)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1229_finish (expr, ft);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffestc_R1229_finish (NULL, NULL);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "statement-function-definition", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_decl_chartype (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
ffestb_local_.decl.recursive = NULL;
ffestb_local_.decl.parameter = FALSE;
ffestb_local_.decl.coloncolon = FALSE;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstCHRCTR)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeASTERISK:
ffesta_confirmed ();
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_chartype1_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_starlen_;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "_TYPEDECL";
return (ffelexHandler) ffestb_decl_typeparams_;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_entsp_ (t);
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstCHRCTR)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlCHRCTR);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (*p != '\0')
break;
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeASTERISK:
ffesta_confirmed ();
if (*p != '\0')
break;
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_chartype1_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_starlen_;
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (*p != '\0')
break;
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (*p != '\0')
break;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_typeparams_;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffesta_tokens[1] = ffelex_token_names_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_decl_entsp_2_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_chartype1_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, ffestb_local_.decl.len, ffestb_local_.decl.lent);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffestb_decl_ents_;
default:
return (ffelexHandler) ffestb_decl_entsp_ (t);
}
}
ffelexHandler
ffestb_decl_dbltype (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffestb_local_.decl.type = ffestb_args.decl.type;
ffestb_local_.decl.recursive = NULL;
ffestb_local_.decl.parameter = FALSE;
ffestb_local_.decl.coloncolon = FALSE;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_entsp_ (t);
}
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.decl.len);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (*p != '\0')
break;
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (*p != '\0')
break;
goto bad_1;
case FFELEX_typeOPEN_PAREN:
if (*p != '\0')
break;
goto bad_1;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffesta_tokens[1] = ffelex_token_names_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_decl_entsp_2_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_decl_double (ffelexToken t)
{
ffestb_local_.decl.recursive = NULL;
ffestb_local_.decl.parameter = FALSE;
ffestb_local_.decl.coloncolon = FALSE;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstDBL)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
switch (ffestr_second (t))
{
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
break;
case FFESTR_secondPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
break;
default:
goto bad_1;
}
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_attrsp_;
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_decl_gentype (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffestb_local_.decl.type = ffestb_args.decl.type;
ffestb_local_.decl.recursive = NULL;
ffestb_local_.decl.parameter = FALSE;
ffestb_local_.decl.coloncolon = FALSE;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeASTERISK:
ffesta_confirmed ();
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_starkind_;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_kindparam_;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_entsp_ (t);
}
case FFELEX_typeNAMES:
p = ffelex_token_text (ffesta_tokens[0]) + (i = ffestb_args.decl.len);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
break;
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (*p != '\0')
break;
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (*p != '\0')
goto bad_i;
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (*p != '\0')
break;
goto bad_1;
case FFELEX_typeASTERISK:
ffesta_confirmed ();
if (*p != '\0')
break;
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_starkind_;
case FFELEX_typeOPEN_PAREN:
if (*p != '\0')
break;
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "TYPEDECL";
return (ffelexHandler) ffestb_decl_kindparam_;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
ffesta_tokens[1] = ffelex_token_names_from_names (ffesta_tokens[0], i, 0);
return (ffelexHandler) ffestb_decl_entsp_2_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
ffelexHandler
ffestb_decl_recursive (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexToken nt;
ffelexToken ot;
ffelexHandler next;
bool needfunc;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstRECURSIVE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
ffestb_local_.decl.recursive = ffelex_token_use (ffesta_tokens[0]);
switch (ffesta_second_kw)
{
case FFESTR_secondINTEGER:
ffestb_local_.decl.type = FFESTP_typeINTEGER;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondBYTE:
ffestb_local_.decl.type = FFESTP_typeBYTE;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondWORD:
ffestb_local_.decl.type = FFESTP_typeWORD;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondREAL:
ffestb_local_.decl.type = FFESTP_typeREAL;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondLOGICAL:
ffestb_local_.decl.type = FFESTP_typeLOGICAL;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondCHARACTER:
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
return (ffelexHandler) ffestb_decl_recursive1_;
case FFESTR_secondDOUBLE:
return (ffelexHandler) ffestb_decl_recursive2_;
case FFESTR_secondDOUBLEPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_func_;
case FFESTR_secondDOUBLECOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_func_;
case FFESTR_secondTYPE:
ffestb_local_.decl.type = FFESTP_typeTYPE;
return (ffelexHandler) ffestb_decl_recursive3_;
case FFESTR_secondFUNCTION:
ffestb_local_.dummy.first_kw = FFESTR_firstFUNCTION;
ffestb_local_.dummy.badname = "FUNCTION";
ffestb_local_.dummy.is_subr = FALSE;
return (ffelexHandler) ffestb_decl_recursive4_;
case FFESTR_secondSUBROUTINE:
ffestb_local_.dummy.first_kw = FFESTR_firstSUBROUTINE;
ffestb_local_.dummy.badname = "SUBROUTINE";
ffestb_local_.dummy.is_subr = TRUE;
return (ffelexHandler) ffestb_decl_recursive4_;
default:
ffelex_token_kill (ffestb_local_.decl.recursive);
goto bad_1;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstRECURSIVE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeASTERISK:
case FFELEX_typeSEMICOLON:
case FFELEX_typeEOS:
ffesta_confirmed ();
break;
default:
break;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlRECURSIVE);
if (!ffesrc_is_name_init (*p))
goto bad_0;
ffestb_local_.decl.recursive
= ffelex_token_name_from_names (ffesta_tokens[0], 0,
FFESTR_firstlRECURSIVE);
nt = ffelex_token_names_from_names (ffesta_tokens[0],
FFESTR_firstlRECURSIVE, 0);
switch (ffestr_first (nt))
{
case FFESTR_firstINTGR:
p = ffelex_token_text (nt) + (i = FFESTR_firstlINTGR);
ffestb_local_.decl.type = FFESTP_typeINTEGER;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstBYTE:
p = ffelex_token_text (nt) + (i = FFESTR_firstlBYTE);
ffestb_local_.decl.type = FFESTP_typeBYTE;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstWORD:
p = ffelex_token_text (nt) + (i = FFESTR_firstlWORD);
ffestb_local_.decl.type = FFESTP_typeWORD;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstREAL:
p = ffelex_token_text (nt) + (i = FFESTR_firstlREAL);
ffestb_local_.decl.type = FFESTP_typeREAL;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstCMPLX:
p = ffelex_token_text (nt) + (i = FFESTR_firstlCMPLX);
ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstLGCL:
p = ffelex_token_text (nt) + (i = FFESTR_firstlLGCL);
ffestb_local_.decl.type = FFESTP_typeLOGICAL;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstCHRCTR:
p = ffelex_token_text (nt) + (i = FFESTR_firstlCHRCTR);
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
needfunc = FALSE;
goto typefunc;
case FFESTR_firstDBLPRCSN:
p = ffelex_token_text (nt) + (i = FFESTR_firstlDBLPRCSN);
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
needfunc = TRUE;
goto typefunc;
case FFESTR_firstDBLCMPLX:
p = ffelex_token_text (nt) + (i = FFESTR_firstlDBLCMPLX);
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
needfunc = TRUE;
goto typefunc;
case FFESTR_firstTYPE:
p = ffelex_token_text (nt) + (i = FFESTR_firstlTYPE);
ffestb_local_.decl.type = FFESTP_typeTYPE;
next = (ffelexHandler) ffestb_decl_recursive3_;
break;
case FFESTR_firstFUNCTION:
p = ffelex_token_text (nt) + (i = FFESTR_firstlFUNCTION);
ffestb_local_.dummy.first_kw = FFESTR_firstFUNCTION;
ffestb_local_.dummy.badname = "FUNCTION";
ffestb_local_.dummy.is_subr = FALSE;
next = (ffelexHandler) ffestb_decl_recursive4_;
break;
case FFESTR_firstSUBROUTINE:
p = ffelex_token_text (nt) + (i = FFESTR_firstlSUBROUTINE);
ffestb_local_.dummy.first_kw = FFESTR_firstSUBROUTINE;
ffestb_local_.dummy.badname = "SUBROUTINE";
ffestb_local_.dummy.is_subr = TRUE;
next = (ffelexHandler) ffestb_decl_recursive4_;
break;
default:
ffelex_token_kill (ffestb_local_.decl.recursive);
ffelex_token_kill (nt);
goto bad_1;
}
if (*p == '\0')
{
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ot = ffelex_token_name_from_names (nt, i, 0);
ffelex_token_kill (nt);
next = (ffelexHandler) (*next) (ot);
ffelex_token_kill (ot);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
typefunc:
if (*p == '\0')
{
ffelex_token_kill (nt);
if (needfunc)
{
ffelex_token_kill (ffestb_local_.decl.recursive);
goto bad_1;
}
return (ffelexHandler) ffestb_decl_recursive1_ (t);
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ot = ffelex_token_names_from_names (nt, i, 0);
ffelex_token_kill (nt);
if (ffestr_first (ot) != FFESTR_firstFUNCTION)
goto bad_o;
p = ffelex_token_text (ot) + (i = FFESTR_firstlFUNCTION);
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1] = ffelex_token_name_from_names (ot, i, 0);
ffelex_token_kill (ot);
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_funcname_1_ (t);
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "type-declaration", nt, i, t);
ffelex_token_kill (nt);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_o:
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", ot);
ffelex_token_kill (ot);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_recursive1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeASTERISK:
ffesta_confirmed ();
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_func_;
ffestb_local_.decl.badname = "TYPEFUNC";
if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
return (ffelexHandler) ffestb_decl_starlen_;
return (ffelexHandler) ffestb_decl_starkind_;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_func_;
ffestb_local_.decl.badname = "TYPEFUNC";
if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
{
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_typeparams_;
}
return (ffelexHandler) ffestb_decl_kindparam_;
case FFELEX_typeNAME:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_func_ (t);
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_recursive2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_second (t))
{
case FFESTR_secondPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
break;
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
break;
default:
goto bad;
}
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_func_;
default:
break;
}
bad:
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_recursive3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_func_;
ffestb_local_.decl.badname = "TYPEFUNC";
return (ffelexHandler) ffestb_decl_typetype1_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_recursive4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_dummy1_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
#if FFESTR_F90
ffelexHandler
ffestb_decl_typetype (ffelexToken t)
{
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstTYPE)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstTYPE)
goto bad_0;
if (ffelex_token_length (ffesta_tokens[0]) != FFESTR_firstlTYPE)
goto bad_0;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
break;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
}
ffestb_local_.decl.recursive = NULL;
ffestb_local_.decl.parameter = FALSE;
ffestb_local_.decl.coloncolon = FALSE;
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_attrsp_;
ffestb_local_.decl.badname = "type-declaration";
return (ffelexHandler) ffestb_decl_typetype1_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
#endif
static ffelexHandler
ffestb_decl_attrs_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_first (t))
{
#if FFESTR_F90
case FFESTR_firstALLOCATABLE:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribALLOCATABLE, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#endif
case FFESTR_firstDIMENSION:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_attrs_1_;
case FFESTR_firstEXTERNAL:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribEXTERNAL, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#if FFESTR_F90
case FFESTR_firstINTENT:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_attrs_3_;
#endif
case FFESTR_firstINTRINSIC:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribINTRINSIC, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#if FFESTR_F90
case FFESTR_firstOPTIONAL:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribOPTIONAL, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#endif
case FFESTR_firstPARAMETER:
ffestb_local_.decl.parameter = TRUE;
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribPARAMETER, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#if FFESTR_F90
case FFESTR_firstPOINTER:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribPOINTER, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#endif
#if FFESTR_F90
case FFESTR_firstPRIVATE:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribPRIVATE, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
case FFESTR_firstPUBLIC:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribPUBLIC, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#endif
case FFESTR_firstSAVE:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribSAVE, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#if FFESTR_F90
case FFESTR_firstTARGET:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribTARGET, t,
FFESTR_otherNone, NULL);
return (ffelexHandler) ffestb_decl_attrs_7_;
#endif
default:
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
return (ffelexHandler) ffestb_decl_attrs_7_;
}
break;
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_attrs_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_decl_attrs_2_;
ffestb_subrargs_.dim_list.pool = ffesta_scratch_pool;
ffestb_subrargs_.dim_list.ctx = ffesta_is_entry_valid
? FFEEXPR_contextDIMLIST : FFEEXPR_contextDIMLISTCOMMON;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_scratch_pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_decl_attrs_7_ (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_attrs_2_ (ffelexToken t)
{
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
if (!ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribDIMENSION, ffesta_tokens[1],
FFESTR_otherNone, ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_decl_attrs_7_ (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
static ffelexHandler
ffestb_decl_attrs_3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffestb_decl_attrs_4_;
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_decl_attrs_7_ (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_attrs_4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffestb_local_.decl.kw = ffestr_other (t);
switch (ffestb_local_.decl.kw)
{
case FFESTR_otherIN:
return (ffelexHandler) ffestb_decl_attrs_5_;
case FFESTR_otherINOUT:
return (ffelexHandler) ffestb_decl_attrs_6_;
case FFESTR_otherOUT:
return (ffelexHandler) ffestb_decl_attrs_6_;
default:
ffestb_local_.decl.kw = FFESTR_otherNone;
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
return (ffelexHandler) ffestb_decl_attrs_5_;
}
break;
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_attrs_5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_other (t))
{
case FFESTR_otherOUT:
if (ffestb_local_.decl.kw != FFESTR_otherNone)
ffestb_local_.decl.kw = FFESTR_otherINOUT;
return (ffelexHandler) ffestb_decl_attrs_6_;
default:
if (ffestb_local_.decl.kw != FFESTR_otherNone)
{
ffestb_local_.decl.kw = FFESTR_otherNone;
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_ATTR, t);
}
return (ffelexHandler) ffestb_decl_attrs_5_;
}
break;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_decl_attrs_6_ (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_attrs_6_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if ((ffestb_local_.decl.kw != FFESTR_otherNone)
&& !ffesta_is_inhibited ())
ffestc_decl_attrib (FFESTP_attribINTENT, ffesta_tokens[1],
ffestb_local_.decl.kw, NULL);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_decl_attrs_7_;
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
static ffelexHandler
ffestb_decl_attrs_7_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
return (ffelexHandler) ffestb_decl_ents_;
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_attrsp_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
ffestb_local_.decl.len, ffestb_local_.decl.lent);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffestb_decl_attrs_;
case FFELEX_typeCOLONCOLON:
ffestb_local_.decl.coloncolon = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
ffestb_local_.decl.len, ffestb_local_.decl.lent);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffestb_decl_ents_;
default:
return (ffelexHandler) ffestb_decl_entsp_ (t);
}
}
static ffelexHandler
ffestb_decl_ents_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_ents_1_;
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_decl_item (ffesta_tokens[1], NULL, NULL, NULL, NULL, NULL, NULL,
NULL, FALSE);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_decl_item (ffesta_tokens[1], NULL, NULL, NULL, NULL, NULL, NULL,
NULL, FALSE);
ffestc_decl_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeASTERISK:
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_ents_2_;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_ents_3_ (t);
case FFELEX_typeEQUALS:
case FFELEX_typeSLASH:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_subrargs_.dim_list.dims = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_ents_7_ (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
if (ffestb_local_.decl.type != FFESTP_typeCHARACTER)
{
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_ents_3_;
}
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_subrargs_.dim_list.dims = NULL;
return (ffelexHandler) ffestb_decl_ents_5_ (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, NULL, NULL, NULL, NULL, NULL, FALSE);
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, NULL, NULL, NULL, NULL, NULL, FALSE);
ffestc_decl_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeASTERISK:
ffestb_subrargs_.dim_list.dims = NULL;
return (ffelexHandler) ffestb_decl_ents_5_;
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_decl_ents_4_;
ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
ffestb_subrargs_.dim_list.ctx = ffesta_is_entry_valid
? FFEEXPR_contextDIMLIST : FFEEXPR_contextDIMLISTCOMMON;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_subrargs_.dim_list.ctx,
(ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeEQUALS:
case FFELEX_typeSLASH:
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_subrargs_.dim_list.dims = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_ents_7_ (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_4_ (ffelexToken t)
{
ffelexToken nt;
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
if (ffelex_token_type (ffesta_tokens[1]) == FFELEX_typeNAMES)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeASTERISK:
case FFELEX_typeSLASH:
case FFELEX_typeCOLONCOLON:
break;
default:
goto bad;
}
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
nt = ffelex_token_name_from_names (ffesta_tokens[1], 0, 0);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_tokens[1] = nt;
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
NULL, NULL, NULL, NULL);
}
}
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
FALSE);
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
FALSE);
ffestc_decl_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeASTERISK:
if (ffestb_local_.decl.lent != NULL)
break;
return (ffelexHandler) ffestb_decl_ents_5_;
case FFELEX_typeEQUALS:
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_decl_ents_7_ (t);
default:
break;
}
bad:
if ((ffelex_token_type (ffesta_tokens[1]) != FFELEX_typeNAMES)
&& !ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_ents_7_;
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE, (ffeexprCallback) ffestb_decl_ents_6_);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_6_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
ffestb_local_.decl.len = expr;
ffestb_local_.decl.lent = ffelex_token_use (ft);
return (ffelexHandler) ffestb_decl_ents_7_;
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_7_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
FALSE);
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
FALSE);
ffestc_decl_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeEQUALS:
if (!ffestb_local_.decl.coloncolon)
ffesta_ffebad_1t (FFEBAD_INVALID_TYPEDECL_INIT, t);
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
ffestb_local_.decl.parameter ? FFEEXPR_contextPARAMETER
: FFEEXPR_contextINITVAL, (ffeexprCallback) ffestb_decl_ents_8_);
case FFELEX_typeSLASH:
if (!ffesta_is_inhibited ())
{
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, NULL, NULL,
TRUE);
ffestc_decl_itemstartvals ();
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_decl_ents_9_);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_8_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, expr, ft,
FALSE);
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_decl_item (ffesta_tokens[1], ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_subrargs_.dim_list.dims,
ffestb_local_.decl.len, ffestb_local_.decl.lent, expr, ft,
FALSE);
ffestc_decl_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_subrargs_.dim_list.dims != NULL)
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_9_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_decl_itemvalue (NULL, NULL, expr, ft);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_decl_ents_9_);
case FFELEX_typeASTERISK:
if (expr == NULL)
break;
ffestb_local_.decl.expr = expr;
ffesta_tokens[1] = ffelex_token_use (ft);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_decl_ents_10_);
case FFELEX_typeSLASH:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_decl_itemvalue (NULL, NULL, expr, ft);
ffestc_decl_itemendvals (t);
}
return (ffelexHandler) ffestb_decl_ents_11_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
break;
}
if (!ffesta_is_inhibited ())
{
ffestc_decl_itemendvals (t);
ffestc_decl_finish ();
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_10_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_decl_itemvalue (ffestb_local_.decl.expr, ffesta_tokens[1],
expr, ft);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffeexpr_rhs
(ffesta_output_pool, FFEEXPR_contextDATA,
(ffeexprCallback) ffestb_decl_ents_9_);
case FFELEX_typeSLASH:
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_decl_itemvalue (ffestb_local_.decl.expr, ffesta_tokens[1],
expr, ft);
ffestc_decl_itemendvals (t);
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_decl_ents_11_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
break;
}
if (!ffesta_is_inhibited ())
{
ffestc_decl_itemendvals (t);
ffestc_decl_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_ents_11_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_decl_ents_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (!ffesta_is_inhibited ())
ffestc_decl_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_entsp_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_entsp_1_;
case FFELEX_typeNAMES:
ffesta_confirmed ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_entsp_2_;
default:
break;
}
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "type-declaration", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_entsp_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_first (ffesta_tokens[1]))
{
#if FFESTR_F90
case FFESTR_firstRECURSIVE:
if (ffestr_first (t) != FFESTR_firstFUNCTION)
{
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
}
ffestb_local_.decl.recursive = ffesta_tokens[1];
return (ffelexHandler) ffestb_decl_funcname_;
#endif
case FFESTR_firstFUNCTION:
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_decl_funcname_ (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", ffesta_tokens[1]);
break;
}
break;
default:
if ((ffelex_token_type (ffesta_tokens[1]) != FFELEX_typeNAMES)
&& !ffesta_is_inhibited ())
ffestc_decl_start (ffestb_local_.decl.type, ffesta_tokens[0],
ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
ffestb_local_.decl.len, ffestb_local_.decl.lent);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
return (ffelexHandler) ffestb_decl_ents_1_ (t);
}
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_entsp_2_ (ffelexToken t)
{
ffelexToken nt;
bool asterisk_ok;
unsigned const char *p;
ffeTokenLength i;
switch (ffelex_token_type (t))
{
case FFELEX_typeASTERISK:
ffesta_confirmed ();
switch (ffestb_local_.decl.type)
{
case FFESTP_typeINTEGER:
case FFESTP_typeREAL:
case FFESTP_typeCOMPLEX:
case FFESTP_typeLOGICAL:
asterisk_ok = (ffestb_local_.decl.kindt == NULL);
break;
case FFESTP_typeCHARACTER:
asterisk_ok = (ffestb_local_.decl.lent == NULL);
break;
case FFESTP_typeBYTE:
case FFESTP_typeWORD:
default:
asterisk_ok = FALSE;
break;
}
switch (ffestr_first (ffesta_tokens[1]))
{
#if FFESTR_F90
case FFESTR_firstRECURSIVEFNCTN:
if (!asterisk_ok)
break;
p = ffelex_token_text (ffesta_tokens[1])
+ (i = FFESTR_firstlRECURSIVEFNCTN);
if (!ffesrc_is_name_init (*p))
break;
ffestb_local_.decl.recursive
= ffelex_token_name_from_names (ffesta_tokens[1], 0,
FFESTR_firstlRECURSIVEFNCTN);
ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
FFESTR_firstlRECURSIVEFNCTN, 0);
return (ffelexHandler) ffestb_decl_entsp_3_;
#endif
case FFESTR_firstFUNCTION:
if (!asterisk_ok)
break;
p = ffelex_token_text (ffesta_tokens[1])
+ (i = FFESTR_firstlFUNCTION);
if (!ffesrc_is_name_init (*p))
break;
ffestb_local_.decl.recursive = NULL;
ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
FFESTR_firstlFUNCTION, 0);
return (ffelexHandler) ffestb_decl_entsp_3_;
default:
break;
}
break;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.aster_after = FALSE;
switch (ffestr_first (ffesta_tokens[1]))
{
#if FFESTR_F90
case FFESTR_firstRECURSIVEFNCTN:
p = ffelex_token_text (ffesta_tokens[1])
+ (i = FFESTR_firstlRECURSIVEFNCTN);
if (!ffesrc_is_name_init (*p))
break;
ffestb_local_.decl.recursive
= ffelex_token_name_from_names (ffesta_tokens[1], 0,
FFESTR_firstlRECURSIVEFNCTN);
ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
FFESTR_firstlRECURSIVEFNCTN, 0);
return (ffelexHandler) ffestb_decl_entsp_5_ (t);
#endif
case FFESTR_firstFUNCTION:
p = ffelex_token_text (ffesta_tokens[1])
+ (i = FFESTR_firstlFUNCTION);
if (!ffesrc_is_name_init (*p))
break;
ffestb_local_.decl.recursive = NULL;
ffesta_tokens[2] = ffelex_token_name_from_names (ffesta_tokens[1],
FFESTR_firstlFUNCTION, 0);
return (ffelexHandler) ffestb_decl_entsp_5_ (t);
default:
break;
}
if ((ffestb_local_.decl.kindt != NULL)
|| (ffestb_local_.decl.lent != NULL))
break;
return (ffelexHandler) ffestb_decl_entsp_1_ (t);
default:
break;
}
nt = ffelex_token_name_from_names (ffesta_tokens[1], 0, 0);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_tokens[1] = nt;
return (ffelexHandler) ffestb_decl_entsp_1_ (t);
}
static ffelexHandler
ffestb_decl_entsp_3_ (ffelexToken t)
{
ffestb_local_.decl.aster_after = TRUE;
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
switch (ffestb_local_.decl.type)
{
case FFESTP_typeINTEGER:
case FFESTP_typeREAL:
case FFESTP_typeCOMPLEX:
case FFESTP_typeLOGICAL:
ffestb_local_.decl.kindt = ffelex_token_use (t);
break;
case FFESTP_typeCHARACTER:
ffestb_local_.decl.lent = ffelex_token_use (t);
break;
case FFESTP_typeBYTE:
case FFESTP_typeWORD:
default:
assert (FALSE);
}
return (ffelexHandler) ffestb_decl_entsp_5_;
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE,
(ffeexprCallback) ffestb_decl_entsp_4_);
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_entsp_4_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
switch (ffestb_local_.decl.type)
{
case FFESTP_typeCHARACTER:
ffestb_local_.decl.len = expr;
ffestb_local_.decl.lent = ffelex_token_use (ft);
break;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
}
return (ffelexHandler) ffestb_decl_entsp_5_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_entsp_5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
if (ffestb_local_.decl.aster_after && (ffestb_local_.decl.len != NULL))
{
ffelex_token_kill (ffesta_tokens[1]);
ffesta_tokens[1] = ffesta_tokens[2];
return (ffelexHandler) ffestb_decl_funcname_4_ (t);
}
ffestb_local_.decl.toklist = ffestt_tokenlist_create ();
ffestb_local_.decl.empty = TRUE;
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_entsp_6_;
default:
break;
}
assert (ffestb_local_.decl.aster_after);
ffesta_confirmed ();
ffestb_subr_ambig_to_ents_ ();
ffestb_subrargs_.dim_list.dims = NULL;
return (ffelexHandler) ffestb_decl_ents_7_ (t);
}
static ffelexHandler
ffestb_decl_entsp_6_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (!ffestb_local_.decl.empty)
{
ffestt_tokenlist_append (ffestb_local_.decl.toklist,
ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_entsp_8_;
}
ffelex_token_kill (ffesta_tokens[1]);
ffesta_tokens[1] = ffesta_tokens[2];
next = (ffelexHandler) ffestt_tokenlist_handle
(ffestb_local_.decl.toklist, (ffelexHandler) ffestb_decl_funcname_4_);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
case FFELEX_typeNAME:
ffestb_local_.decl.empty = FALSE;
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_entsp_7_;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typePERCENT:
case FFELEX_typePERIOD:
case FFELEX_typeOPEN_PAREN:
if ((ffestb_local_.decl.kindt != NULL)
|| (ffestb_local_.decl.lent != NULL))
break;
return (ffelexHandler) ffestb_subr_ambig_nope_ (t);
default:
break;
}
ffesta_confirmed ();
ffestb_subr_ambig_to_ents_ ();
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_decl_ents_3_);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
static ffelexHandler
ffestb_decl_entsp_7_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_entsp_8_;
case FFELEX_typeCOMMA:
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_entsp_6_;
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typePERCENT:
case FFELEX_typePERIOD:
case FFELEX_typeOPEN_PAREN:
if ((ffestb_local_.decl.kindt != NULL)
|| (ffestb_local_.decl.lent != NULL))
break;
return (ffelexHandler) ffestb_subr_ambig_nope_ (t);
default:
break;
}
ffesta_confirmed ();
ffestb_subr_ambig_to_ents_ ();
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_decl_ents_3_);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
static ffelexHandler
ffestb_decl_entsp_8_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (ffestc_is_decl_not_R1219 ())
break;
case FFELEX_typeNAME:
ffesta_confirmed ();
ffelex_token_kill (ffesta_tokens[1]);
ffesta_tokens[1] = ffesta_tokens[2];
next = (ffelexHandler) ffestt_tokenlist_handle
(ffestb_local_.decl.toklist, (ffelexHandler) ffestb_decl_funcname_4_);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
case FFELEX_typeEQUALS:
case FFELEX_typePOINTS:
case FFELEX_typePERCENT:
case FFELEX_typePERIOD:
case FFELEX_typeOPEN_PAREN:
if ((ffestb_local_.decl.kindt != NULL)
|| (ffestb_local_.decl.lent != NULL))
break;
return (ffelexHandler) ffestb_subr_ambig_nope_ (t);
default:
break;
}
ffesta_confirmed ();
ffestb_subr_ambig_to_ents_ ();
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_decl_ents_3_);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
#if FFESTR_F90
static ffelexHandler
ffestb_decl_func_ (ffelexToken t)
{
const char *p;
ffeTokenLength i;
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (ffestr_first (t) != FFESTR_firstFUNCTION)
break;
return (ffelexHandler) ffestb_decl_funcname_;
case FFELEX_typeNAMES:
ffesta_confirmed ();
if (ffestr_first (t) != FFESTR_firstFUNCTION)
break;
p = ffelex_token_text (t) + (i = FFESTR_firstlFUNCTION);
if (*p == '\0')
break;
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffesta_tokens[1] = ffelex_token_name_from_names (t, i, 0);
return (ffelexHandler) ffestb_decl_funcname_1_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_i:
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t, i, NULL);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
static ffelexHandler
ffestb_decl_funcname_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_funcname_1_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeASTERISK:
return (ffelexHandler) ffestb_decl_funcname_2_;
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffestb_decl_funcname_4_ (t);
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNUMBER:
switch (ffestb_local_.decl.type)
{
case FFESTP_typeINTEGER:
case FFESTP_typeREAL:
case FFESTP_typeCOMPLEX:
case FFESTP_typeLOGICAL:
if (ffestb_local_.decl.kindt == NULL)
ffestb_local_.decl.kindt = ffelex_token_use (t);
else
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
case FFESTP_typeCHARACTER:
if (ffestb_local_.decl.lent == NULL)
ffestb_local_.decl.lent = ffelex_token_use (t);
else
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
case FFESTP_typeBYTE:
case FFESTP_typeWORD:
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
}
return (ffelexHandler) ffestb_decl_funcname_4_;
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextCHARACTERSIZE,
(ffeexprCallback) ffestb_decl_funcname_3_);
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_3_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
if (expr == NULL)
break;
switch (ffestb_local_.decl.type)
{
case FFESTP_typeCHARACTER:
if (ffestb_local_.decl.lent == NULL)
{
ffestb_local_.decl.len = expr;
ffestb_local_.decl.lent = ffelex_token_use (ft);
}
else
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
break;
}
return (ffelexHandler) ffestb_decl_funcname_4_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.name_list.args = ffestt_tokenlist_create ();
ffestb_subrargs_.name_list.handler
= (ffelexHandler) ffestb_decl_funcname_5_;
ffestb_subrargs_.name_list.is_subr = FALSE;
ffestb_subrargs_.name_list.names = FALSE;
return (ffelexHandler) ffestb_subr_name_list_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_5_ (ffelexToken t)
{
if (!ffestb_subrargs_.name_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R1219 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
ffestb_subrargs_.name_list.close_paren, ffestb_local_.decl.type,
ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
ffestb_local_.decl.len, ffestb_local_.decl.lent,
ffestb_local_.decl.recursive, NULL);
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeNAME:
if (ffestr_other (t) != FFESTR_otherRESULT)
break;
return (ffelexHandler) ffestb_decl_funcname_6_;
default:
break;
}
bad:
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_6_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
return (ffelexHandler) ffestb_decl_funcname_7_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_7_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[2] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_funcname_8_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_8_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_decl_funcname_9_;
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_funcname_9_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_R1219 (ffesta_tokens[1], ffestb_subrargs_.name_list.args,
ffestb_subrargs_.name_list.close_paren, ffestb_local_.decl.type,
ffestb_local_.decl.kind, ffestb_local_.decl.kindt,
ffestb_local_.decl.len, ffestb_local_.decl.lent,
ffestb_local_.decl.recursive, ffesta_tokens[2]);
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
if (ffestb_local_.decl.recursive != NULL)
ffelex_token_kill (ffestb_local_.decl.recursive);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffelex_token_kill (ffesta_tokens[1]);
ffelex_token_kill (ffesta_tokens[2]);
ffelex_token_kill (ffestb_subrargs_.name_list.close_paren);
ffestt_tokenlist_kill (ffestb_subrargs_.name_list.args);
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "FUNCTION", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_VXT
ffelexHandler
ffestb_V003 (ffelexToken t)
{
ffeTokenLength i;
const char *p;
ffelexToken nt;
ffelexHandler next;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstSTRUCTURE)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V003_start (NULL);
ffestb_local_.structure.started = TRUE;
return (ffelexHandler) ffestb_V0034_ (t);
case FFELEX_typeSLASH:
ffesta_confirmed ();
return (ffelexHandler) ffestb_V0031_;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstSTRUCTURE)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlSTRUCTURE);
switch (ffelex_token_type (t))
{
default:
goto bad_1;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
break;
case FFELEX_typeSLASH:
ffesta_confirmed ();
if (*p != '\0')
goto bad_1;
return (ffelexHandler) ffestb_V0031_;
case FFELEX_typeOPEN_PAREN:
break;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
nt = ffelex_token_name_from_names (ffesta_tokens[0], i, 0);
if (ffelex_token_type (t) == FFELEX_typeOPEN_PAREN)
ffestb_local_.structure.started = FALSE;
else
{
if (!ffesta_is_inhibited ())
ffestc_V003_start (NULL);
ffestb_local_.structure.started = TRUE;
}
next = (ffelexHandler) ffestb_V0034_ (nt);
ffelex_token_kill (nt);
return (ffelexHandler) (*next) (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0031_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0032_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
break;
}
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0032_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeSLASH:
if (!ffesta_is_inhibited ())
ffestc_V003_start (ffesta_tokens[1]);
ffestb_local_.structure.started = TRUE;
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_V0033_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
break;
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0033_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
return (ffelexHandler) ffestb_V0034_ (t);
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
ffestc_V003_finish ();
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
break;
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0034_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0035_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V003_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0035_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_V0036_;
ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLISTCOMMON;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDIMLISTCOMMON, (ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_V003_item (ffesta_tokens[1], NULL);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_V0034_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_V003_item (ffesta_tokens[1], NULL);
ffestc_V003_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V003_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0036_ (ffelexToken t)
{
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.structure.started)
{
ffestc_V003_start (NULL);
ffestb_local_.structure.started = TRUE;
}
ffestc_V003_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_V0034_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
{
if (!ffestb_local_.structure.started)
ffestc_V003_start (NULL);
ffestc_V003_item (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_V003_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "STRUCTURE", t);
if (ffestb_local_.structure.started && !ffesta_is_inhibited ())
ffestc_V003_finish ();
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_V016 (ffelexToken t)
{
const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstRECORD)
goto bad_0;
break;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstRECORD)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlRECORD);
if (*p != '\0')
goto bad_i;
break;
default:
goto bad_0;
}
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeSLASH:
break;
}
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V016_start ();
return (ffelexHandler) ffestb_V0161_;
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "RECORD", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0161_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (!ffesta_is_inhibited ())
ffestc_V016_item_structure (t);
return (ffelexHandler) ffestb_V0162_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V016_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0162_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_V0163_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V016_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0163_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0164_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V016_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0164_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_subrargs_.dim_list.dims = ffestt_dimlist_create ();
ffestb_subrargs_.dim_list.handler = (ffelexHandler) ffestb_V0165_;
ffestb_subrargs_.dim_list.pool = ffesta_output_pool;
ffestb_subrargs_.dim_list.ctx = FFEEXPR_contextDIMLISTCOMMON;
#ifdef FFECOM_dimensionsMAX
ffestb_subrargs_.dim_list.ndims = 0;
#endif
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextDIMLISTCOMMON, (ffeexprCallback) ffestb_subr_dimlist_);
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_V016_item_object (ffesta_tokens[1], NULL);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_V0166_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_V016_item_object (ffesta_tokens[1], NULL);
ffestc_V016_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V016_finish ();
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0165_ (ffelexToken t)
{
if (!ffestb_subrargs_.dim_list.ok)
goto bad;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (!ffesta_is_inhibited ())
ffestc_V016_item_object (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffestb_V0166_;
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffesta_is_inhibited ())
{
ffestc_V016_item_object (ffesta_tokens[1],
ffestb_subrargs_.dim_list.dims);
ffestc_V016_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
bad:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
if (ffestb_local_.structure.started && !ffesta_is_inhibited ())
ffestc_V016_finish ();
ffestt_dimlist_kill (ffestb_subrargs_.dim_list.dims);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0166_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0164_;
case FFELEX_typeSLASH:
return (ffelexHandler) ffestb_V0161_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "RECORD", t);
break;
}
if (!ffesta_is_inhibited ())
ffestc_V016_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
ffelexHandler
ffestb_V027 (ffelexToken t)
{
unsigned const char *p;
ffeTokenLength i;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstPARAMETER)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
break;
default:
goto bad_1;
}
ffesta_confirmed ();
ffestb_local_.vxtparam.started = TRUE;
if (!ffesta_is_inhibited ())
ffestc_V027_start ();
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0271_;
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstPARAMETER)
goto bad_0;
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlPARAMETER);
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
break;
default:
goto bad_1;
}
if (!ffesrc_is_name_init (*p))
goto bad_i;
ffestb_local_.vxtparam.started = FALSE;
ffesta_tokens[1] = ffelex_token_name_from_names (ffesta_tokens[0], i,
0);
return (ffelexHandler) ffestb_V0271_ (t);
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
bad_i:
ffesta_ffebad_1sp (FFEBAD_INVALID_STMT_FORM, "PARAMETER", ffesta_tokens[0], i, t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0271_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEQUALS:
return (ffelexHandler) ffeexpr_rhs (ffesta_output_pool,
FFEEXPR_contextPARAMETER, (ffeexprCallback) ffestb_V0272_);
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
break;
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.vxtparam.started && !ffesta_is_inhibited ())
ffestc_V027_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0272_ (ffelexToken ft, ffebld expr, ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffestb_local_.vxtparam.started)
{
if (ffestc_is_let_not_V027 ())
break;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_V027_start ();
ffestb_local_.vxtparam.started = TRUE;
}
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
{
ffestc_V027_item (ffesta_tokens[1], expr, ft);
ffestc_V027_finish ();
}
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeCOMMA:
ffesta_confirmed ();
if (!ffestb_local_.vxtparam.started)
{
if (!ffesta_is_inhibited ())
ffestc_V027_start ();
ffestb_local_.vxtparam.started = TRUE;
}
if (expr == NULL)
break;
if (!ffesta_is_inhibited ())
ffestc_V027_item (ffesta_tokens[1], expr, ft);
ffelex_token_kill (ffesta_tokens[1]);
return (ffelexHandler) ffestb_V0273_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
if (ffestb_local_.vxtparam.started && !ffesta_is_inhibited ())
ffestc_V027_finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_V0273_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_V0271_;
default:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "PARAMETER", t);
break;
}
if (ffestb_local_.vxtparam.started && !ffesta_is_inhibited ())
ffestc_V027_finish ();
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
ffelexHandler
ffestb_decl_R539 (ffelexToken t)
{
ffeTokenLength i;
unsigned const char *p;
ffelexToken nt;
ffestrSecond kw;
ffestb_local_.decl.recursive = NULL;
switch (ffelex_token_type (ffesta_tokens[0]))
{
case FFELEX_typeNAME:
if (ffesta_first_kw != FFESTR_firstIMPLICIT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
ffesta_confirmed ();
goto bad_1;
default:
goto bad_1;
case FFELEX_typeNAME:
break;
}
ffesta_confirmed ();
ffestb_local_.decl.imp_started = FALSE;
switch (ffesta_second_kw)
{
case FFESTR_secondINTEGER:
ffestb_local_.decl.type = FFESTP_typeINTEGER;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondBYTE:
ffestb_local_.decl.type = FFESTP_typeBYTE;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondWORD:
ffestb_local_.decl.type = FFESTP_typeWORD;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondREAL:
ffestb_local_.decl.type = FFESTP_typeREAL;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondLOGICAL:
ffestb_local_.decl.type = FFESTP_typeLOGICAL;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondCHARACTER:
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondDOUBLE:
return (ffelexHandler) ffestb_decl_R5392_;
case FFESTR_secondDOUBLEPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_;
case FFESTR_secondDOUBLECOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_;
case FFESTR_secondNONE:
return (ffelexHandler) ffestb_decl_R5394_;
#if FFESTR_F90
case FFESTR_secondTYPE:
ffestb_local_.decl.type = FFESTP_typeTYPE;
return (ffelexHandler) ffestb_decl_R5393_;
#endif
default:
goto bad_1;
}
case FFELEX_typeNAMES:
if (ffesta_first_kw != FFESTR_firstIMPLICIT)
goto bad_0;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeCOLONCOLON:
case FFELEX_typeASTERISK:
case FFELEX_typeSEMICOLON:
case FFELEX_typeEOS:
ffesta_confirmed ();
break;
case FFELEX_typeOPEN_PAREN:
break;
default:
goto bad_1;
}
p = ffelex_token_text (ffesta_tokens[0]) + (i = FFESTR_firstlIMPLICIT);
if (!ffesrc_is_name_init (*p))
goto bad_0;
ffestb_local_.decl.imp_started = FALSE;
nt = ffelex_token_name_from_names (ffesta_tokens[0],
FFESTR_firstlIMPLICIT, 0);
kw = ffestr_second (nt);
ffelex_token_kill (nt);
switch (kw)
{
case FFESTR_secondINTEGER:
ffestb_local_.decl.type = FFESTP_typeINTEGER;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondBYTE:
ffestb_local_.decl.type = FFESTP_typeBYTE;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondWORD:
ffestb_local_.decl.type = FFESTP_typeWORD;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondREAL:
ffestb_local_.decl.type = FFESTP_typeREAL;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondLOGICAL:
ffestb_local_.decl.type = FFESTP_typeLOGICAL;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondCHARACTER:
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
return (ffelexHandler) ffestb_decl_R5391_ (t);
case FFESTR_secondDOUBLEPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_ (t);
case FFESTR_secondDOUBLECOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_ (t);
case FFESTR_secondNONE:
return (ffelexHandler) ffestb_decl_R5394_ (t);
#if FFESTR_F90
case FFESTR_secondTYPE:
ffestb_local_.decl.type = FFESTP_typeTYPE;
return (ffelexHandler) ffestb_decl_R5393_ (t);
#endif
default:
goto bad_1;
}
default:
goto bad_0;
}
bad_0:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", ffesta_tokens[0]);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
bad_1:
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t,
(ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R5391_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeASTERISK:
ffesta_confirmed ();
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_R539letters_;
ffestb_local_.decl.badname = "IMPLICIT";
if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
return (ffelexHandler) ffestb_decl_starlen_;
return (ffelexHandler) ffestb_decl_starkind_;
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_R539letters_;
ffestb_local_.decl.badname = "IMPLICIT";
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
if (ffestb_local_.decl.type == FFESTP_typeCHARACTER)
ffestb_local_.decl.imp_handler
= (ffelexHandler) ffestb_decl_typeparams_;
else
ffestb_local_.decl.imp_handler
= (ffelexHandler) ffestb_decl_kindparam_;
return (ffelexHandler) ffestb_decl_R539maybe_ (t);
default:
break;
}
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R5392_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_second (t))
{
case FFESTR_secondPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
break;
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
break;
default:
goto bad;
}
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_;
default:
break;
}
bad:
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#if FFESTR_F90
static ffelexHandler
ffestb_decl_R5393_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.handler = (ffelexHandler) ffestb_decl_R539letters_;
ffestb_local_.decl.badname = "IMPLICIT";
return (ffelexHandler) ffestb_decl_typetype1_;
default:
break;
}
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
#endif
static ffelexHandler
ffestb_decl_R5394_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R539 ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R5395_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
switch (ffestr_second (t))
{
case FFESTR_secondINTEGER:
ffestb_local_.decl.type = FFESTP_typeINTEGER;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondBYTE:
ffestb_local_.decl.type = FFESTP_typeBYTE;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondWORD:
ffestb_local_.decl.type = FFESTP_typeWORD;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondREAL:
ffestb_local_.decl.type = FFESTP_typeREAL;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondCOMPLEX:
ffestb_local_.decl.type = FFESTP_typeCOMPLEX;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondLOGICAL:
ffestb_local_.decl.type = FFESTP_typeLOGICAL;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondCHARACTER:
ffestb_local_.decl.type = FFESTP_typeCHARACTER;
return (ffelexHandler) ffestb_decl_R5391_;
case FFESTR_secondDOUBLE:
return (ffelexHandler) ffestb_decl_R5392_;
case FFESTR_secondDOUBLEPRECISION:
ffestb_local_.decl.type = FFESTP_typeDBLPRCSN;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_;
case FFESTR_secondDOUBLECOMPLEX:
ffestb_local_.decl.type = FFESTP_typeDBLCMPLX;
ffestb_local_.decl.kind = NULL;
ffestb_local_.decl.kindt = NULL;
ffestb_local_.decl.len = NULL;
ffestb_local_.decl.lent = NULL;
return (ffelexHandler) ffestb_decl_R539letters_;
#if FFESTR_F90
case FFESTR_secondTYPE:
ffestb_local_.decl.type = FFESTP_typeTYPE;
return (ffelexHandler) ffestb_decl_R5393_;
#endif
default:
break;
}
break;
default:
break;
}
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539letters_ (ffelexToken t)
{
ffelex_set_names (FALSE);
switch (ffelex_token_type (t))
{
case FFELEX_typeOPEN_PAREN:
ffestb_local_.decl.imps = ffestt_implist_create ();
return (ffelexHandler) ffestb_decl_R539letters_1_;
default:
break;
}
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539letters_1_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (ffelex_token_length (t) != 1)
break;
ffesta_tokens[1] = ffelex_token_use (t);
return (ffelexHandler) ffestb_decl_R539letters_2_;
default:
break;
}
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539letters_2_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
return (ffelexHandler) ffestb_decl_R539letters_1_;
case FFELEX_typeCLOSE_PAREN:
ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
return (ffelexHandler) ffestb_decl_R539letters_5_;
case FFELEX_typeMINUS:
return (ffelexHandler) ffestb_decl_R539letters_3_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539letters_3_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (ffelex_token_length (t) != 1)
break;
ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1],
ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539letters_4_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539letters_4_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
return (ffelexHandler) ffestb_decl_R539letters_1_;
case FFELEX_typeCLOSE_PAREN:
return (ffelexHandler) ffestb_decl_R539letters_5_;
default:
break;
}
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539letters_5_ (ffelexToken t)
{
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
if (!ffestb_local_.decl.imp_started)
{
ffestb_local_.decl.imp_started = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R539start ();
}
if (!ffesta_is_inhibited ())
ffestc_R539item (ffestb_local_.decl.type, ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_local_.decl.len,
ffestb_local_.decl.lent, ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_decl_R5395_;
if (!ffesta_is_inhibited ())
ffestc_R539finish ();
return (ffelexHandler) ffesta_zero (t);
default:
break;
}
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}
static ffelexHandler
ffestb_decl_R539maybe_ (ffelexToken t)
{
assert (ffelex_token_type (t) == FFELEX_typeOPEN_PAREN);
ffestb_local_.decl.imps = ffestt_implist_create ();
ffestb_local_.decl.toklist = ffestt_tokenlist_create ();
ffestb_local_.decl.imp_seen_comma
= (ffestb_local_.decl.type != FFESTP_typeCHARACTER);
return (ffelexHandler) ffestb_decl_R539maybe_1_;
}
static ffelexHandler
ffestb_decl_R539maybe_1_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (ffelex_token_length (t) != 1)
break;
ffesta_tokens[1] = ffelex_token_use (t);
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_2_;
default:
break;
}
ffestt_implist_kill (ffestb_local_.decl.imps);
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_local_.decl.imp_handler);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
static ffelexHandler
ffestb_decl_R539maybe_2_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
if (ffestb_local_.decl.imp_seen_comma)
{
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) ffestb_decl_R539letters_1_;
}
ffestb_local_.decl.imp_seen_comma = TRUE;
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_1_;
case FFELEX_typeCLOSE_PAREN:
ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1], NULL);
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_5_;
case FFELEX_typeMINUS:
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_3_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_implist_kill (ffestb_local_.decl.imps);
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_local_.decl.imp_handler);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
static ffelexHandler
ffestb_decl_R539maybe_3_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeNAME:
if (ffelex_token_length (t) != 1)
break;
ffestt_implist_append (ffestb_local_.decl.imps, ffesta_tokens[1],
ffelex_token_use (t));
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_4_;
default:
break;
}
ffelex_token_kill (ffesta_tokens[1]);
ffestt_implist_kill (ffestb_local_.decl.imps);
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_local_.decl.imp_handler);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
static ffelexHandler
ffestb_decl_R539maybe_4_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
if (ffestb_local_.decl.imp_seen_comma)
{
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) ffestb_decl_R539letters_1_;
}
ffestb_local_.decl.imp_seen_comma = TRUE;
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_1_;
case FFELEX_typeCLOSE_PAREN:
ffestt_tokenlist_append (ffestb_local_.decl.toklist, ffelex_token_use (t));
return (ffelexHandler) ffestb_decl_R539maybe_5_;
default:
break;
}
ffestt_implist_kill (ffestb_local_.decl.imps);
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_local_.decl.imp_handler);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
}
static ffelexHandler
ffestb_decl_R539maybe_5_ (ffelexToken t)
{
ffelexHandler next;
switch (ffelex_token_type (t))
{
case FFELEX_typeCOMMA:
case FFELEX_typeEOS:
case FFELEX_typeSEMICOLON:
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
if (!ffestb_local_.decl.imp_started)
{
ffestb_local_.decl.imp_started = TRUE;
ffesta_confirmed ();
if (!ffesta_is_inhibited ())
ffestc_R539start ();
}
if (!ffesta_is_inhibited ())
ffestc_R539item (ffestb_local_.decl.type, ffestb_local_.decl.kind,
ffestb_local_.decl.kindt, ffestb_local_.decl.len,
ffestb_local_.decl.lent, ffestb_local_.decl.imps);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
ffestt_implist_kill (ffestb_local_.decl.imps);
if (ffelex_token_type (t) == FFELEX_typeCOMMA)
return (ffelexHandler) ffestb_decl_R5395_;
if (!ffesta_is_inhibited ())
ffestc_R539finish ();
return (ffelexHandler) ffesta_zero (t);
case FFELEX_typeOPEN_PAREN:
ffesta_confirmed ();
ffestt_implist_kill (ffestb_local_.decl.imps);
next = (ffelexHandler) ffestt_tokenlist_handle (ffestb_local_.decl.toklist,
(ffelexHandler) ffestb_local_.decl.imp_handler);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
return (ffelexHandler) (*next) (t);
default:
break;
}
ffestt_implist_kill (ffestb_local_.decl.imps);
ffestt_tokenlist_kill (ffestb_local_.decl.toklist);
if (ffestb_local_.decl.kindt != NULL)
ffelex_token_kill (ffestb_local_.decl.kindt);
if (ffestb_local_.decl.lent != NULL)
ffelex_token_kill (ffestb_local_.decl.lent);
if (ffestb_local_.decl.imp_started && !ffesta_is_inhibited ())
ffestc_R539finish ();
ffesta_ffebad_1st (FFEBAD_INVALID_STMT_FORM, "IMPLICIT", t);
return (ffelexHandler) ffelex_swallow_tokens (t, (ffelexHandler) ffesta_zero);
}