164 lines
2.8 KiB
C
164 lines
2.8 KiB
C
|
|
/*********************************************************************/
|
||
|
|
/* pC++/Sage++ Copyright (C) 1993 */
|
||
|
|
/* Indiana University University of Oregon University of Rennes */
|
||
|
|
/*********************************************************************/
|
||
|
|
|
||
|
|
/************************************************************************/
|
||
|
|
/* */
|
||
|
|
/* low level nodes */
|
||
|
|
/* */
|
||
|
|
/************************************************************************/
|
||
|
|
|
||
|
|
struct llnd {
|
||
|
|
|
||
|
|
int variant, id; /* variant and identification tags */
|
||
|
|
|
||
|
|
PTR_LLND thread; /* connects nodes together by allocation order */
|
||
|
|
|
||
|
|
PTR_TYPE type; /* to be modified */
|
||
|
|
|
||
|
|
union llnd_union {
|
||
|
|
|
||
|
|
char *string_val;/* for integers floats doubles and strings*/
|
||
|
|
int ival;
|
||
|
|
double dval; /* for floats and doubles */
|
||
|
|
char cval;
|
||
|
|
int bval; /* for booleans */
|
||
|
|
|
||
|
|
struct { /* for range, upper, and lower */
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
int dim;
|
||
|
|
} array_op;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
|
||
|
|
PTR_LLND ll_ptr1;
|
||
|
|
PTR_LLND ll_ptr2;
|
||
|
|
} Template;
|
||
|
|
|
||
|
|
struct { /* for complexes and double complexes */
|
||
|
|
PTR_SYMB null;
|
||
|
|
|
||
|
|
PTR_LLND real_part;
|
||
|
|
PTR_LLND imag_part;
|
||
|
|
} complex;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_LABEL lab_ptr;
|
||
|
|
|
||
|
|
PTR_LLND null_1;
|
||
|
|
PTR_LLND next;
|
||
|
|
} label_list;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND item;
|
||
|
|
PTR_LLND next;
|
||
|
|
} list;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND size;
|
||
|
|
PTR_LLND list;
|
||
|
|
} cons;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB control_var;
|
||
|
|
|
||
|
|
PTR_LLND array;
|
||
|
|
PTR_LLND range;
|
||
|
|
} access;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB control_var;
|
||
|
|
|
||
|
|
PTR_LLND array;
|
||
|
|
PTR_LLND range;
|
||
|
|
} ioaccess;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
|
||
|
|
PTR_LLND null_1;
|
||
|
|
PTR_LLND null_2;
|
||
|
|
} const_ref;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
|
||
|
|
PTR_LLND null_1;
|
||
|
|
PTR_LLND null_2;
|
||
|
|
} var_ref;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
|
||
|
|
PTR_LLND index;
|
||
|
|
PTR_LLND array_elt;
|
||
|
|
} array_ref;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND access;
|
||
|
|
PTR_LLND index;
|
||
|
|
} access_ref;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND cons;
|
||
|
|
PTR_LLND index;
|
||
|
|
} cons_ref;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
|
||
|
|
PTR_LLND null_1;
|
||
|
|
PTR_LLND rec_field; /* for record fields */
|
||
|
|
} record_ref;
|
||
|
|
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB symbol;
|
||
|
|
|
||
|
|
PTR_LLND param_list;
|
||
|
|
PTR_LLND next_call;
|
||
|
|
} proc;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND operand;
|
||
|
|
PTR_LLND null_2;
|
||
|
|
} unary_op;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND l_operand;
|
||
|
|
PTR_LLND r_operand;
|
||
|
|
} binary_op;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND ddot;
|
||
|
|
PTR_LLND stride;
|
||
|
|
} seq;
|
||
|
|
|
||
|
|
struct {
|
||
|
|
PTR_SYMB null_1;
|
||
|
|
|
||
|
|
PTR_LLND sp_label;
|
||
|
|
PTR_LLND sp_value;
|
||
|
|
} spec_pair;
|
||
|
|
|
||
|
|
} entry;
|
||
|
|
};
|
||
|
|
|
||
|
|
#define __LL_DEF__
|