moved to dvm_svn

This commit is contained in:
2025-03-13 09:28:27 +03:00
parent 033bbce220
commit 7a51067b7a
351 changed files with 20 additions and 41 deletions

View File

@@ -0,0 +1,225 @@
/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
/* VPC Version modified by Jenq-Kuen Lee Nov 15 , 1987 */
/* Original Filename : symb.h */
/* New filename : vsymb.h */
/************************************************************************
* *
* hash and symbol table entries *
* *
************************************************************************/
struct hash_entry
{
char *ident;
struct hash_entry *next_entry;
PTR_SYMB id_attr;
};
struct symb {
int variant;
int id;
char *ident;
struct hash_entry *parent;
PTR_SYMB outer; /* pointer to symbol in enclosing block */
PTR_SYMB next_symb; /* pointer to next symbol in same block */
PTR_SYMB id_list; /* used for making lists of ids */
PTR_SYMB thread; /* list of all allocated symbol pointers */
PTR_TYPE type; /* data type of this identifier */
PTR_BFND scope; /* level at which ident is declared */
PTR_BLOB ud_chain; /* use_definition chain */
int attr; /* attributes of the variable */
int dovar; /* set if used as loop's control variable */
int decl; /* field that the parser use in keeping track
of declarations */
union symb_union {
PTR_LLND const_value; /* for constants */
struct { /* for enum-field and record field */
int tag;
int offset;
PTR_SYMB declared_name ; /* used for friend construct */
PTR_SYMB next;
PTR_SYMB base_name; /* name of record or enumerated type */
PTR_LLND restricted_bit ; /* Used by VPC++ for restricted bit number */
} field;
struct { /* for variant fields */
int tag;
int offset;
PTR_SYMB next;
PTR_SYMB base_name;
PTR_LLND variant_list;
} variant_field;
struct { /* for program */
PTR_SYMB symb_list;
PTR_LABEL label_list;
PTR_BFND prog_hedr;
} prog_decl;
struct { /* for PROC */
int seen;
int num_input, num_output, num_io;
PTR_SYMB in_list;
PTR_SYMB out_list;
PTR_SYMB symb_list;
int local_size;
PTR_LABEL label_list;
PTR_BFND proc_hedr;
PTR_LLND call_list;
} proc_decl;
struct { /* for FUNC */
int seen;
int num_input, num_output, num_io;
PTR_SYMB in_list;
PTR_SYMB out_list;
PTR_SYMB symb_list;
int local_size;
PTR_LABEL label_list;
PTR_BFND func_hedr;
PTR_LLND call_list;
} func_decl;
struct { /* for variable declaration */
int local; /* local or input or output or both param*/
int num1, num2, num3 ; /*24.02.03*/
PTR_SYMB next_out; /* for list of output parameters*//*perestanovka c next_out *24.02.03*/
PTR_SYMB next_in; /* for list of input parameters*/
int offset;
int dovar; /* set if being used as DO control var */
} var_decl;
struct {
int seen ;
int num_input, num_output, num_io ;
PTR_SYMB in_list ;
PTR_SYMB out_list ;
PTR_SYMB symb_list;
int local_size;
PTR_LABEL label_list ;
PTR_BFND func_hedr ;
PTR_LLND call_list ;
/* the following information for field */
int tag ;
int offset ;
PTR_SYMB declared_name; /* used for friend construct */
PTR_SYMB next ;
PTR_SYMB base_name ;
/* the following is newly added */
} member_func ; /* New one for VPC */
/* an attempt to unify the data structure */
struct {
int seen ;
int num_input, num_output, num_io ;
PTR_SYMB in_list ;
PTR_SYMB out_list ;
PTR_SYMB symb_list;
int local_size;
PTR_LABEL label_list ;
PTR_BFND func_hedr ;
PTR_LLND call_list ;
/* the following information for field */
int tag ;
int offset ;
PTR_SYMB declared_name; /* used for friend construct */
PTR_SYMB next ;
PTR_SYMB base_name ;
/* the following is newly added */
} Template ; /* New one for VPC */
} entry;
};
struct data_type {
int variant;
int id;
int length;
PTR_TYPE thread; /* list of all allocated symbol pointers */
PTR_SYMB name; /* type name */
PTR_BLOB ud_chain; /* use_definition chain */
union type_union {
/* no entry needed for T_INT, T_CHAR, T_FLOAT, T_DOUBLE, T_VOID T_BOOL */
struct { /* for T_SUBRANGE */
PTR_TYPE base_type; /* = to T_INT, T_CHAR, T_FLOAT */
PTR_LLND lower, upper;
} subrange;
struct { /* for T_ARRAY */
PTR_TYPE base_type; /* New order */
int num_dimensions;
PTR_LLND ranges;
} ar_decl;
struct {
PTR_TYPE base_type ;
int dummy1;
PTR_LLND ranges ;
PTR_LLND kind_len ;
int dummy3;
int dummy4;
int dummy5;
} Template ; /* for T_DESCRIPT,T_ARRAY,T_FUNCTION,T_POINTER */
PTR_TYPE base_type; /* for T_LIST */
struct { /* for T_RECORD or T_ENUM */
int num_fields;
int record_size;
PTR_SYMB first;
} re_decl;
/* the following is added fro VPC */
struct {
PTR_SYMB symbol;
PTR_SYMB scope_symbol;
} derived_type ; /* for type name deriving type */
struct { /* for class T_CLASS T_UNION T_STRUCT */
int num_fields;
int record_size;
PTR_SYMB first;
PTR_BFND original_class ;
PTR_TYPE base_type; /* base type or inherited collection */
} derived_class ;
struct { /* for class T_DERIVED_TEMPLATE */
PTR_SYMB templ_name;
PTR_LLND args; /* argument list for templ */
} templ_decl ;
/* for T_MEMBER_POINTER and */
struct { /* for class T_DERIVED_COLLECTION */
PTR_SYMB collection_name;
PTR_TYPE base_type; /* base type or inherited collection */
} col_decl ;
struct { /* for T_DESCRIPT */
PTR_TYPE base_type ;
int signed_flag ;
PTR_LLND ranges ;
int long_short_flag ;
int mod_flag ;
int storage_flag;
int access_flag;
} descriptive ;
} entry;
};
#define __SYMB_DEF__