⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 symtab.h

📁 这是一个Linux下的集成开发环境
💻 H
📖 第 1 页 / 共 2 页
字号:
	BYTE type;	unsigned		/* copies of flags from symtab */	  used:1,	  set:1,	  used_before_set:1,	  assigned:1;} ComListElement;typedef struct CMHead {	/* ComListHeader: head node of common var list */	short numargs;	unsigned line_num;	ComListElement *com_list_array;	struct gSymtEntry *module;	char *filename,*topfile;	struct CMHead *next;	unsigned	  any_used:1,		/* any of its variables accessed */	  any_set:1,		/* any of its variables set */	  saved:1;		/* declared in SAVE statement */} ComListHeader;typedef struct TLHead {	/* TokenListHeader: head node of token list */	Token *tokenlist;	struct TLHead *next;	char *filename;	unsigned line_num;	unsigned	  external_decl:1,	  actual_arg:1;} TokenListHeader;			/* Structure for intrinsic-function info */typedef struct IInfo{	char *name;	short num_args,	      arg_type,	      result_type;	unsigned short	      intrins_flags;	/* nonstandard,  mixed arg types */} IntrinsInfo;	/* Define special num_args values for intrinsics that have	   variable numbers of arguments. */#define I_1or2	(-1)		/* 1 or 2 arguments */#define I_2up	(-2)		/* 2 or more arguments */#define I_0or1	(-3)		/* 0 or 1 argument */			/* for intrins_flags field */	/* Integer-valued intrinsics that are evaluated if args const */#define I_ABS		0x1#define I_SIGN		0x2#define I_DIM		0x3#define I_MOD		0x4#define I_MAX		0x5#define I_MIN		0x6#define I_ICHAR		0x7#define I_LEN		0x8#define I_INDEX		0x9#define I_EVALUATED	0xf	/* any bit of digit set */		/* Various properties of intrinsics*/#define I_F77 		0x00	/* Standard intrinsic (no flag: placeholder) */#define I_NONF77	0x10	/* Nonstandard */#define I_MIXED_ARGS	0x20	/* Has mixed arg types */#define I_NONPURE	0x40	/* Arg need not be set when called */#define I_C_TO_R	0x80	/* Complex -> real in generic form */#define I_NOTARG	0x100	/* Not allowed as actual argument */			/* Structure for call-tree child list */typedef struct childlist {  struct gSymtEntry *child;	/* Pointer to child's symtab entry */  struct childlist *next;/* Pointer to next child on list */} ChildList;		/*  Identifier symbol table declaration */typedef struct lSymtEntry{	char *name;             /* Identifier name in stringspace */	InfoUnion info;	struct lSymtEntry *equiv_link;	/* Link for equivalence lists */	long size;		/* Size of object in bytes */	BYTE  type;		/* Type & storage class: see macros below */			/* Flags */	unsigned	     used_flag: 1,	/* value is accessed (read from variable) */	     set_flag: 1,	/* variable is set or passed as subr arg */	     assigned_flag: 1,	/* value is really set (by assignment stmt) */	     used_before_set: 1,/* set_flag is not set when used_flag is set */	     is_current_module: 1, /* this symtab entry is the main module */	     library_module: 1,	/* module was processed in -library mode */	     array_var: 1,	/* variable is dimensioned */	     common_var: 1,	/* variable is in common */	     entry_point: 1,	/* name of an entry point */	     parameter: 1,	/* name of a parameter */	     argument: 1,	/* dummy argument */	     external: 1,	/* function or subr called by this routine */	     intrinsic: 1,	/* intrinsic function */	     saved: 1,		/* named in SAVE statement */	     invoked_as_func: 1, /* usage as f(x) was seen */	     defined_in_include: 1, /* to suppress some warnings if unused */	     declared_external: 1, /* explicitly declared external */	     declared_intrinsic: 1; /* explicitly declared intrinsic */	int common_hash;	int common_orig_hash;	int record_hash;	unsigned line_num;			/* rigo */} Lsymtab;typedef struct gSymtEntry{	/* Global symbol table element */	char *name;             /* Identifier name in stringspace */	InfoUnion info;	union {	  struct childlist *child_list; /* List of callees (for module) */	  struct gSymtEntry *module; /* Module (for interior entry) */	} link;	long size;	BYTE  type;		/* Type & storage class: see macros below */			/* Flags.  See remarks above */	unsigned	     used_flag: 1,	     set_flag: 1,	     assigned_flag: 1,	     used_before_set: 1,	     library_module: 1,	     internal_entry: 1,	/* entry point other than at the top */	     invoked_as_func: 1,	     visited: 1,	   /* this entry point is in call tree */	     visited_somewhere: 1, /* some entry point of module is in call tree */	     defined_in_include: 1,	     declared_external: 1;} Gsymtab;		/*  Identifier hashtable declaration  */typedef struct hashEntry {	char	*name;		/* Identifier name in stringspace */	Lsymtab	*loc_symtab,	/* Local symtab entry for vars etc. */		*com_loc_symtab;/* Local symtab entry for common blocks */	Gsymtab	*glob_symtab,	/* Global symtab entry for vars etc. */		*com_glob_symtab;/* Global symtab entry for common blocks */	int define;} HashTable;		/* Macro to zero out symbol table entry */#define clear_symtab_entry(S) {register int i;\				 for(i=0;i<sizeof(*S);i++)((char*)S)[i]=0;}	/* These macros pack and unpack datatype and storage class in type	   field of symbol table entry. Datatype is least 4 bits. */#define datatype_of(TYPE) ((unsigned)((TYPE) & 0xF))#define storage_class_of(TYPE) ((unsigned)((TYPE) >> 4))#define type_byte(SCLASS,DTYPE) ((unsigned)(((SCLASS)<<4) + (DTYPE)))	/* This macro is for pattern matching in flag checking */#define flag_combo(A,B,C) (((A)<<2) | ((B)<<1) | (C))	/* These macros are for dimensions & sizes of arrays */#define array_dims(dim_info) ((dim_info)&0xF)#define array_size(dim_info) ((dim_info)>>4)#define array_dim_info(dim,size) (((long)(size)<<4)+(dim))		/* Defns used by expression type propagation mechanisms		   in fortran.y and exprtype.c  The flags go in token.subclass		 */#define make_true(flag,x) ((x) |= (flag))		/* x.flag <-- true   */#define make_false(flag,x) ((x) &= ~(flag))		/* x.flag <-- false  */#define is_true(flag,x) ((x) & (flag))			/* x.flag == true?   */#define copy_flag(flag,x,y)  ((x) |= ((y)&(flag)))	/* x.flag <-- y.flag */#define ID_EXPR			0x1	/* a variable */#define LVALUE_EXPR		0x2	/* assignable */#define CONST_EXPR		0x4	/* compile-time constant per std 6.7*/#define LIT_CONST		0x8	/* a number or string literal */#define ARRAY_ID_EXPR		0x10	/* an array or array element */#define INT_QUOTIENT_EXPR	0x20	/* contains INT/INT */#define STMT_FUNCTION_EXPR	0x40#define PARAMETER_EXPR		0x80 /* == CONST_EXPR || intrinsic || **real */#define EVALUATED_EXPR		0x100  /* token.value has value of expr */#define SET_FLAG		0x200  /* these are for id's and lvalues */#define ASSIGNED_FLAG		0x400#define USED_BEFORE_SET		0x800#define COMPLEX_FLAG		0x1000	/* remembers complex_const_allowed */#define CHAR_ID_EXPR		0x2000	/* char var or array elt not substr */#define IN_ASSIGN		0x4000	/* for tracking assgn stmt lhs */#define COMMA_FLAG 		0x8000/* keeps track of extra or missing commas				   	in exprlists */#define NONSTD_USAGE_FLAG	0x10000	/* concentrator for -f77 warnings */#define SYNTAX_ERROR_FLAG	0x20000	/* concentrator for syntax errors */#ifdef DYNAMIC_TABLES		/* tables will be mallocked at runtime */SYM_SHAREDLsymtab	*loc_symtab#ifdef SYMTAB  =(Lsymtab *)NULL#endif;SYM_SHAREDGsymtab *glob_symtab#ifdef SYMTAB  =(Gsymtab *)NULL#endif;SYM_SHAREDHashTable *hashtab#ifdef SYMTAB  =(HashTable *)NULL#endif;SYM_SHAREDchar *strspace#ifdef SYMTAB  =(char *)NULL#endif;SYM_SHAREDToken *tokenspace#ifdef SYMTAB  =(Token *)NULL#endif;SYM_SHAREDTokenListHeader *tokheadspace#ifdef SYMTAB  =(TokenListHeader *)NULL#endif;#else				/* static tables declared at compile time */		/* Each major table is housed in a separate file so that		   on IBM PC architecture with huge memory model		   each will be in its own 64K segment not all in one. */#ifndef PLSYMTABextern#endifLsymtab	loc_symtab[LOCSYMTABSZ]; /* Local identifiers */#ifndef PGSYMTABextern#endifGsymtab glob_symtab[GLOBSYMTABSZ]; /* Global identifiers: subrs and com blks */#ifndef EXPRTYPEextern#endifHashTable hashtab[HASHSZ];	/* Hash table for identifier lookup */#ifndef SYMTABextern#endifchar strspace[STRSPACESZ];	/* String space for storing identifiers */#ifndef FORLEXextern#endifToken tokenspace[TOKENSPACESZ];	/* Tokens for arg lists etc */#ifndef PROJECTextern#endifTokenListHeader tokheadspace[TOKENSPACESZ];/* Tokenlist headers */#endif		/* Shared routines */			/* in fortran.y/fortran.c */voidcheck_seq_header(), check_stmt_sequence();			/* in plsymtab.c */voiddebug_symtabs(), print_loc_symbols();			/* in symtab.c */voidcheck_loose_ends(),call_func(), call_subr(), declare_type(), def_arg_name(),def_array_dim(), def_com_block(), def_com_variable(),def_equiv_name(), def_ext_name(), def_function(), def_intrins_name(),def_namelist(), def_namelist_item(), def_parameter(),def_stmt_function(), do_ASSIGN(), do_assigned_GOTO(), do_ENTRY(),do_RETURN(), equivalence(),process_lists(), ref_array(), ref_namelist(), ref_variable(),save_com_block(), save_variable(), set_implicit_type(),stmt_function_stmt(),use_actual_arg(), use_implied_do_index(),use_io_keyword(), use_special_open_keywd(),use_lvalue(), use_parameter(),use_function_arg(), use_variable();Token*new_token();Lsymtab *install_local();Gsymtab *install_global();unsignedhash_lookup();intdef_curr_module(), get_type(), int_expr_value();char *token_name();				/* in hash.c (now symtab.c) */unsigned longhash(), kwd_hash(), rehash();			/* in exprtype.c */voidbinexpr_type(),unexpr_type(),assignment_stmt_type(),func_ref_expr(),primary_id_expr(),stmt_fun_arg_cmp();intintrins_arg_cmp();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -