home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
adaptor.zip
/
adapt.zip
/
adaptor
/
src
/
eval.c
< prev
next >
Wrap
Text File
|
1993-07-08
|
11KB
|
387 lines
# define IFNOTIN(b, s) if (! (s & 1 << b)) {
# define INCL(s, b) s |= 1 << b
# define REMOTE_SYN(i, b, c, n, t, a) (n->yyHead.i & 1 << b ? (void) 0 : c (n), n->t.a)
# define REMOTE_INH(i, b, k, n, t, a) (n->yyHead.i & 1 << b ? (void) 0 : yyI [n->yyHead.yyOffset + k](n->yyHead.yyParent), n->t.a)
# define DEP(a, b) a
# define SELF yyt
# include "Eval.h"
static char yyb;
static void yyE ARGS((register tTree yyt));
static void yyS1 ARGS((register tTree yyt));
static void yyS2 ARGS((register tTree yyt));
static void yyS3 ARGS((register tTree yyt));
static Tree_tProcTree yyI [1] = { 0,
};
static void yyAbort
# if defined __STDC__ | defined __cplusplus
(tTree yyt)
# else
(yyt) tTree yyt;
# endif
{
(void) fprintf (stderr, "Error: module Eval, cyclic dependencies\n");
exit (1);
}
void Eval
# if defined __STDC__ | defined __cplusplus
(tTree yyt)
# else
(yyt) tTree yyt;
# endif
{ InitTree (yyt); yyE (yyt); }
static void yyE
# if defined __STDC__ | defined __cplusplus
(register tTree yyt)
# else
(yyt) register tTree yyt;
# endif
{
for (;;) {
if (yyt == NoTree || yyt->yyHead.yyIsComp0 & 1) return;
yyt->yyHead.yyIsComp0 |= 1;
switch (yyt->Kind) {
case kCOMP_UNIT:
yyt = yyt->COMP_UNIT.COMP_ELEMENTS; break;
case kBODY_NODE:
yyE (yyt->BODY_NODE.DECLS);
yyE (yyt->BODY_NODE.STATS);
yyt = yyt->BODY_NODE.INTERNALS; break;
case kSTRING_TYPE:
yyt = yyt->STRING_TYPE.LENGTH; break;
case kINDEX_TYPE:
yyE (yyt->INDEX_TYPE.LOWER);
yyt = yyt->INDEX_TYPE.UPPER; break;
case kTYPE_ID:
yyt = yyt->TYPE_ID.ID; break;
case kARRAY_TYPE:
yyE (yyt->ARRAY_TYPE.ARRAY_INDEX_TYPES);
yyt = yyt->ARRAY_TYPE.ARRAY_COMP_TYPE; break;
case kRECORD_TYPE:
yyt = yyt->RECORD_TYPE.COMPONENTS; break;
case kUNION_TYPE:
yyt = yyt->UNION_TYPE.COMPONENTS; break;
case kENUM_TYPE:
yyt = yyt->ENUM_TYPE.COMPONENTS; break;
case kPOINTER_TYPE:
yyt = yyt->POINTER_TYPE.PTR_COMP; break;
case kARRAY1_TYPE:
yyE (yyt->ARRAY1_TYPE.SIZE);
yyt = yyt->ARRAY1_TYPE.ARRAY1_COMP_TYPE; break;
case kFUNCTION_TYPE:
yyE (yyt->FUNCTION_TYPE.FORMALS);
yyt = yyt->FUNCTION_TYPE.RESULT_TYPE; break;
case kTYPE_LIST:
yyE (yyt->TYPE_LIST.Elem);
yyt = yyt->TYPE_LIST.Next; break;
case kMODULE_DECL:
yyt = yyt->MODULE_DECL.MODULE_BODY; break;
case kPROGRAM_DECL:
yyE (yyt->PROGRAM_DECL.FORMALS);
yyt = yyt->PROGRAM_DECL.PROGRAM_BODY; break;
case kPROC_DECL:
yyE (yyt->PROC_DECL.FORMALS);
yyt = yyt->PROC_DECL.PROC_BODY; break;
case kFUNC_DECL:
yyE (yyt->FUNC_DECL.FORMALS);
yyE (yyt->FUNC_DECL.FUNC_BODY);
yyt = yyt->FUNC_DECL.RESULT_TYPE; break;
case kBLOCK_DATA_DECL:
yyt = yyt->BLOCK_DATA_DECL.DATA_BODY; break;
case kTYPE_DECL:
yyt = yyt->TYPE_DECL.VAL; break;
case kENTITY_DECL:
yyt = yyt->ENTITY_DECL.ATTRIBUTES; break;
case kVAR_DECL:
yyt = yyt->VAR_DECL.VAL; break;
case kCOMMON_DECL:
yyt = yyt->COMMON_DECL.IDS; break;
case kNAMELIST_DECL:
yyt = yyt->NAMELIST_DECL.IDS; break;
case kTEMPLATE_DECL:
yyt = yyt->TEMPLATE_DECL.DIMENSIONS; break;
case kPROCESSORS_DECL:
yyt = yyt->PROCESSORS_DECL.DIMENSIONS; break;
case kSTMT_FUNC_DECL:
yyE (yyt->STMT_FUNC_DECL.FORMALS);
yyE (yyt->STMT_FUNC_DECL.RESULT_TYPE);
yyt = yyt->STMT_FUNC_DECL.FFUNC_BODY; break;
case kINTERFACE_DECL:
yyt = yyt->INTERFACE_DECL.ITEMS; break;
case kEXT_PROC_DECL:
yyt = yyt->EXT_PROC_DECL.FORMALS; break;
case kEXT_FUNC_DECL:
yyE (yyt->EXT_FUNC_DECL.FORMALS);
yyt = yyt->EXT_FUNC_DECL.RESULT_TYPE; break;
case kVAL_PARAM_DECL:
yyt = yyt->VAL_PARAM_DECL.VAL; break;
case kVAR_PARAM_DECL:
yyt = yyt->VAR_PARAM_DECL.VAL; break;
case kPROC_PARAM_DECL:
yyt = yyt->PROC_PARAM_DECL.FORMAL; break;
case kFUNC_PARAM_DECL:
yyE (yyt->FUNC_PARAM_DECL.FORMAL);
yyt = yyt->FUNC_PARAM_DECL.RESULT_TYPE; break;
case kIMPLICIT_DECL:
yyt = yyt->IMPLICIT_DECL.VAL; break;
case kUSE_DECL:
yyt = yyt->USE_DECL.RENAMINGS; break;
case kONLY_USE_DECL:
yyt = yyt->ONLY_USE_DECL.NAMES; break;
case kEQV_DECL:
yyt = yyt->EQV_DECL.VARS; break;
case kDATA_DECL:
yyE (yyt->DATA_DECL.VARS);
yyt = yyt->DATA_DECL.VALS; break;
case kDIMENSION_DECL:
yyt = yyt->DIMENSION_DECL.INDEXES; break;
case kINIT_DATA_DECL:
yyt = yyt->INIT_DATA_DECL.VAL; break;
case kTYPESPEC_DECL:
yyt = yyt->TYPESPEC_DECL.VAL; break;
case kPARAMETER_DECL:
yyt = yyt->PARAMETER_DECL.VAL; break;
case kDISTRIBUTE_DECL:
yyt = yyt->DISTRIBUTE_DECL.DISTRIBUTION; break;
case kALIGN_DECL:
yyE (yyt->ALIGN_DECL.ALIGN_SOURCE);
yyt = yyt->ALIGN_DECL.ALIGN_SPEC; break;
case kDECL_LIST:
yyE (yyt->DECL_LIST.Elem);
yyt = yyt->DECL_LIST.Next; break;
case kNODE_DISTRIBUTION:
yyt = yyt->NODE_DISTRIBUTION.MAPPING; break;
case kBLOCK_DISTRIBUTION:
yyt = yyt->BLOCK_DISTRIBUTION.SIZE; break;
case kCYCLIC_DISTRIBUTION:
yyt = yyt->CYCLIC_DISTRIBUTION.SIZE; break;
case kDIST_LIST:
yyE (yyt->DIST_LIST.Elem);
yyt = yyt->DIST_LIST.Next; break;
case kACF_LIST:
yyE (yyt->ACF_LIST.Elem);
yyt = yyt->ACF_LIST.Next; break;
case kACF_BASIC:
yyt = yyt->ACF_BASIC.BASIC_STMT; break;
case kACF_IF:
yyE (yyt->ACF_IF.IF_EXP);
yyE (yyt->ACF_IF.THEN_PART);
yyt = yyt->ACF_IF.ELSE_PART; break;
case kACF_WHERE:
yyE (yyt->ACF_WHERE.WHERE_EXP);
yyE (yyt->ACF_WHERE.TRUE_PART);
yyt = yyt->ACF_WHERE.FALSE_PART; break;
case kACF_SWITCH:
yyE (yyt->ACF_SWITCH.SWITCH_EXP);
yyt = yyt->ACF_SWITCH.SWITCH_STMT; break;
case kACF_ALTER:
yyE (yyt->ACF_ALTER.ALTER_EXP);
yyt = yyt->ACF_ALTER.ALTER_STMT; break;
case kACF_CASE:
yyE (yyt->ACF_CASE.CASE_EXP);
yyE (yyt->ACF_CASE.CASE_ALTS);
yyt = yyt->ACF_CASE.CASE_OTHERWISE; break;
case kACF_WHILE:
yyE (yyt->ACF_WHILE.WHILE_EXP);
yyt = yyt->ACF_WHILE.WHILE_BODY; break;
case kACF_REPEAT:
yyE (yyt->ACF_REPEAT.REPEAT_BODY);
yyt = yyt->ACF_REPEAT.REPEAT_EXP; break;
case kACF_WITH:
yyE (yyt->ACF_WITH.WITH_VARS);
yyt = yyt->ACF_WITH.WITH_BODY; break;
case kACF_LOOP:
yyt = yyt->ACF_LOOP.LOOP_BODY; break;
case kACF_DO:
yyE (yyt->ACF_DO.DO_ID);
yyE (yyt->ACF_DO.DO_RANGE);
yyt = yyt->ACF_DO.DO_BODY; break;
case kACF_DOLOCAL:
yyE (yyt->ACF_DOLOCAL.DOLOCAL_ID);
yyE (yyt->ACF_DOLOCAL.DOLOCAL_RANGE);
yyt = yyt->ACF_DOLOCAL.DOLOCAL_BODY; break;
case kACF_DOVEC:
yyE (yyt->ACF_DOVEC.DOVEC_ID);
yyE (yyt->ACF_DOVEC.DOVEC_RANGE);
yyt = yyt->ACF_DOVEC.DOVEC_BODY; break;
case kACF_DOALL:
yyE (yyt->ACF_DOALL.DOALL_NEW);
yyE (yyt->ACF_DOALL.DOALL_ID);
yyE (yyt->ACF_DOALL.DOALL_RANGE);
yyt = yyt->ACF_DOALL.DOALL_BODY; break;
case kACF_FORALL:
yyE (yyt->ACF_FORALL.FORALL_ID);
yyE (yyt->ACF_FORALL.FORALL_RANGE);
yyt = yyt->ACF_FORALL.FORALL_BODY; break;
case kACF_ON:
yyE (yyt->ACF_ON.ON_VAR);
yyt = yyt->ACF_ON.ON_STMT; break;
case kACF_BODY:
yyt = yyt->ACF_BODY.NEW_BODY; break;
case kACF_FLOW_GRAPH:
yyt = yyt->ACF_FLOW_GRAPH.FLOW_NODES; break;
case kACF_ENTRY:
yyt = yyt->ACF_ENTRY.ENTRY_DECL; break;
case kSELECTED_ACF_LIST:
yyE (yyt->SELECTED_ACF_LIST.Elem);
yyt = yyt->SELECTED_ACF_LIST.Next; break;
case kSELECTED_ACF_NODE:
yyE (yyt->SELECTED_ACF_NODE.SELECT_LIST);
yyt = yyt->SELECTED_ACF_NODE.SELECT_ACFS; break;
case kEXP_STMT:
yyt = yyt->EXP_STMT.STMT_EXP; break;
case kASSIGN_STMT:
yyE (yyt->ASSIGN_STMT.ASSIGN_VAR);
yyt = yyt->ASSIGN_STMT.ASSIGN_EXP; break;
case kPTR_ASSIGN_STMT:
yyE (yyt->PTR_ASSIGN_STMT.ASSIGN_VAR);
yyt = yyt->PTR_ASSIGN_STMT.ASSIGN_EXP; break;
case kLABEL_ASSIGN_STMT:
yyt = yyt->LABEL_ASSIGN_STMT.LABEL_VAR; break;
case kCALL_STMT:
yyE (yyt->CALL_STMT.CALL_ID);
yyt = yyt->CALL_STMT.CALL_PARAMS; break;
case kIO_STMT:
yyE (yyt->IO_STMT.ID);
yyE (yyt->IO_STMT.IO_SPECS);
yyt = yyt->IO_STMT.IO_ITEMS; break;
case kASS_GOTO_STMT:
yyE (yyt->ASS_GOTO_STMT.GOTO_VAR);
return;
case kCOMP_GOTO_STMT:
yyt = yyt->COMP_GOTO_STMT.GOTO_EXP; break;
case kCOMP_IF_STMT:
yyt = yyt->COMP_IF_STMT.IF_EXP; break;
case kRETURN_STMT:
yyt = yyt->RETURN_STMT.RETURN_EXP; break;
case kSTOP_STMT:
yyt = yyt->STOP_STMT.STOP_CONST; break;
case kFORMAT_STMT:
yyt = yyt->FORMAT_STMT.FORMAT_PARAMS; break;
case kALLOCATE_STMT:
yyE (yyt->ALLOCATE_STMT.PARAMS);
yyt = yyt->ALLOCATE_STMT.STAT; break;
case kDEALLOCATE_STMT:
yyE (yyt->DEALLOCATE_STMT.PARAMS);
yyt = yyt->DEALLOCATE_STMT.STAT; break;
case kNULLIFY_STMT:
yyt = yyt->NULLIFY_STMT.PARAMS; break;
case kREDUCE_STMT:
yyE (yyt->REDUCE_STMT.RED_FUNC);
yyt = yyt->REDUCE_STMT.RED_PARAMS; break;
case kGLOBAL_STMT:
yyE (yyt->GLOBAL_STMT.ARRAY);
yyE (yyt->GLOBAL_STMT.INDEXED_ARRAY);
yyE (yyt->GLOBAL_STMT.INDEXES);
yyt = yyt->GLOBAL_STMT.MASK; break;
case kALIGN_STMT:
yyE (yyt->ALIGN_STMT.ALIGNEE);
yyt = yyt->ALIGN_STMT.ALIGN_SPEC; break;
case kDISTRIBUTE_STMT:
yyE (yyt->DISTRIBUTE_STMT.DISTRIBUTEE);
yyt = yyt->DISTRIBUTE_STMT.DISTRIBUTION; break;
case kOP_EXP:
yyE (yyt->OP_EXP.OPND1);
yyt = yyt->OP_EXP.OPND2; break;
case kOP1_EXP:
yyt = yyt->OP1_EXP.OPND; break;
case kSLICE_EXP:
yyE (yyt->SLICE_EXP.START);
yyE (yyt->SLICE_EXP.STOP);
yyt = yyt->SLICE_EXP.INC; break;
case kPOSTFIX_EXP:
yyt = yyt->POSTFIX_EXP.OPND; break;
case kCALL_EXP:
yyE (yyt->CALL_EXP.FUNC_ID);
yyt = yyt->CALL_EXP.FUNC_PARAMS; break;
case kCAST_EXP:
yyE (yyt->CAST_EXP.ID);
yyt = yyt->CAST_EXP.CAST; break;
case kINDEXED_EXP:
yyE (yyt->INDEXED_EXP.IND_EXP);
yyt = yyt->INDEXED_EXP.INDEX; break;
case kSELECTED_EXP:
yyE (yyt->SELECTED_EXP.SELEC_EXP);
yyt = yyt->SELECTED_EXP.SELECTOR; break;
case kASSIGN_EXP:
yyE (yyt->ASSIGN_EXP.LHS);
yyt = yyt->ASSIGN_EXP.RHS; break;
case kUSED_EXP:
yyt = yyt->USED_EXP.VARNAME; break;
case kCOND_EXP:
yyE (yyt->COND_EXP.COND);
yyE (yyt->COND_EXP.TRUE_EXP);
yyt = yyt->COND_EXP.FALSE_EXP; break;
case kVAR_EXP:
yyt = yyt->VAR_EXP.V; break;
case kFUNC_CALL_EXP:
yyE (yyt->FUNC_CALL_EXP.FUNC_ID);
yyt = yyt->FUNC_CALL_EXP.FUNC_PARAMS; break;
case kNAMED_EXP:
yyt = yyt->NAMED_EXP.VAL; break;
case kDO_EXP:
yyE (yyt->DO_EXP.DO_ID);
yyE (yyt->DO_EXP.RANGE);
yyt = yyt->DO_EXP.BODY; break;
case kTYPE_EXP:
yyE (yyt->TYPE_EXP.ID);
yyt = yyt->TYPE_EXP.ELEMENTS; break;
case kARRAY_EXP:
yyt = yyt->ARRAY_EXP.ELEMENTS; break;
case kBTE_LIST:
yyE (yyt->BTE_LIST.Elem);
yyt = yyt->BTE_LIST.Next; break;
case kUSED_VAR:
yyt = yyt->USED_VAR.VARNAME; break;
case kINDEXED_VAR:
yyE (yyt->INDEXED_VAR.IND_VAR);
yyt = yyt->INDEXED_VAR.IND_EXPS; break;
case kSUBSTRING_VAR:
yyE (yyt->SUBSTRING_VAR.IND_VAR);
yyt = yyt->SUBSTRING_VAR.IND_EXP; break;
case kSELECTED_VAR:
yyE (yyt->SELECTED_VAR.SELEC_VAR);
yyt = yyt->SELECTED_VAR.SELECTOR; break;
case kLOOP_VAR:
yyt = yyt->LOOP_VAR.LOOP_VARNAME; break;
case kADDR:
yyt = yyt->ADDR.E; break;
case kDO_VAR:
yyE (yyt->DO_VAR.DO_ID);
yyE (yyt->DO_VAR.RANGE);
yyt = yyt->DO_VAR.BODY; break;
case kBTV_LIST:
yyE (yyt->BTV_LIST.Elem);
yyt = yyt->BTV_LIST.Next; break;
case kVAR_PARAM:
yyt = yyt->VAR_PARAM.V; break;
case kVALUE_PARAM:
yyt = yyt->VALUE_PARAM.E; break;
case kNAMED_PARAM:
yyt = yyt->NAMED_PARAM.VAL; break;
case kPROC_PARAM:
yyt = yyt->PROC_PARAM.P; break;
case kFUNC_PARAM:
yyt = yyt->FUNC_PARAM.F; break;
case kBTP_LIST:
yyE (yyt->BTP_LIST.Elem);
yyt = yyt->BTP_LIST.Next; break;
default: return;
}
}
}
void BeginEval ()
{
}
void CloseEval ()
{
}