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

📄 ansi_parse.h

📁 一个很不错的程序切片工具,希望大家来讨论以下,对测试人员很有帮助
💻 H
字号:
#ifndef _ansi_parse_h#define _ansi_parse_h/*******************************************************************                                                               **  Unravel Project: Develop a program slicer for ANSI C         **                                                               **  Developed at N.I.S.T. Computer Systems Lab by:               **                                                               **      D. Wallace     Project Leader                            **                                                               **      J. Lyle, J. Graham, K. Gallagher, D. Binkley & J. Poole  **                                                               *******************************************************************/# define PARSE_H_SCCS_ID "	@(#)ansi_parse.h	1.7  10/26/94 "# include <stdio.h># define YYSTYPE yyunion# define MAX_NEST 40# define True 1# define False 0typedef struct aa token_at,*token_at_ptr;typedef struct bb string_node,*string_ptr;typedef struct cc token_rec,*token_ptr;typedef struct  dd token_desc_rec,*token_desc_ptr;typedef struct ee decl_rec,*decl_ptr;typedef struct ff type_rec,*type_ptr;typedef struct gg stab_rec,*stab_ptr;typedef struct hh var_ste_rec,*var_ste_ptr;typedef struct ii symbol_table_entries;typedef struct jj type_ste_rec,*type_ste_ptr;typedef struct kk tree_rec,*tree_ptr;typedef union ll yyunion;typedef struct mm tag_ste_rec,*tag_ste_ptr;typedef struct nn stmt_rec,*stmt_ptr;typedef struct oo list_rec,*list_ptr;typedef struct pp proc_rec,*proc_ptr;typedef struct ptr_tab_struct ptr_tab_rec,*ptr_tab_ptr;typedef struct addr_tab_struct addr_tab_rec,*addr_tab_ptr;typedef struct label_struct label_rec,*label_ptr;typedef struct chain_struct chain_rec,*chain_ptr;struct chain_struct {	int		chain_id;	int		is_global;	int		current_seq;	int		no_output;	int		is_array;	type_ste_ptr type;	var_ste_ptr	 fields;};struct label_struct {	char		*label;	int			node;	list_ptr	gotos;	label_ptr	next;};struct addr_tab_struct {	int		proc_id;	int		var_id;	int		addr;	addr_tab_ptr next;};struct ptr_tab_struct {	int				ptr_id;	int				id;	int				scope;	int				length;	int				is_used_as_ptr;	int				field_id;	token_ptr		token;	var_ste_ptr		sym_tab;	ptr_tab_ptr		parent;	ptr_tab_ptr		next;};union ll {		/* parser value stack entry				*/	stmt_ptr	stmt;	token_ptr	token;	tree_ptr	tree;	int			op;};struct aa {			/* token_at,*token_at_ptr			*/	int			line_start,				col_start,				line_end,				col_end;};struct bb {			/* string_node,*string_ptr			*/	char		*text;	string_ptr	next;};struct dd {			/* token_desc_rec,*token_desc_ptr	*/	int			*any;	decl_ptr	decl;	/* if token is -> type declaration */	type_ptr	type_desc; /* if -> var being declared		*/};struct cc {				/* T O K E N    R E C O R D		*/			/*   typedef struct cc token_rec,*token_ptr	*/	char			*text;  /* text of this token		*/	token_at		at;   	/* location in source file	*/	token_ptr		next;	/* next token in a list		*/	token_desc_rec	desc;	/* description of token		*/	int				deref_level; /* deref count in xpr	*/};struct ee {		/* decl_rec,*decl_ptr;					*/	unsigned int	decl_flags;	token_ptr		vars;	token_ptr		tag;	token_ptr		members;	var_ste_ptr		member_ste;	int				offset;};# define NO_STYLE	0# define OLD_STYLE	1# define NEW_STYLE	2# define OLD_STYLE_VOID 3struct ff {				/* type_rec,*type_ptr			*/	int			is;	int			style;	token_ptr	formals;	type_ptr	next;};# define IS_SCALAR		0# define IS_FUNC_RET	1# define IS_ARRAY_OF	2# define IS_PTR_TO		3# define STE_NONE 0# define STE_TYPEDEF 1# define STE_TAGGED_STRUCT 2# define STE_ANON_STRUCT 3struct hh {			/* STE for variable */	token_ptr	 token;	token_ptr	 type_decl;	int			 detail;	type_ste_ptr type_entry;	tag_ste_ptr	 tag_entry;	var_ste_ptr	 anon_entry;	int			 id;	addr_tab_ptr addr;	var_ste_ptr	 next;};struct ii {			/* S Y M B O L    T A B L E */	var_ste_ptr		var;	type_ste_ptr	type;	tag_ste_ptr		tag;	};struct jj {			/* STE for typedef */	token_ptr		token;	token_ptr		type_decl;	int				detail;	type_ste_ptr	type_entry;	tag_ste_ptr		tag_entry;	var_ste_ptr		anon_entry;	type_ste_ptr	next;};struct mm {			/* STE for tagged struct */	token_ptr		tag;	token_ptr		type_desc;	var_ste_ptr		vars;	tag_ste_ptr		next;};struct kk {			/* expression tree node 		*/	int			op_code;	tree_ptr	left,right;	token_ptr	token;};/* OP CODES */# define UN_OP 1# define BIN_OP 2# define POINTER_OP 3# define DEREF_OP 4# define DOT_OP 5# define ADDR_OP 6# define CALL_OP 7# define PRE_OP 8# define POST_OP 9# define CAST_OP 10# define ARRAY_OP 11# define ASGN_OP 12# define RELASGN_OP 13# define ID_OP 14# define CON_OP 15# define COMMA_OP 16# define LEFTP_OP 17# define RIGHTP_OP 18# define ARG_OP 19# define TYPENAME_OP 20/* typedef struct nn stmt_rec,*stmt_ptr; */struct nn {	int			is_jump;	int			from,to,entry,exit;	list_ptr	breaks,continues,cases;	stmt_ptr	next,last;};struct oo {		/* list of nodes (see stmt_rec		*/	int			node;	list_ptr	next;	short		is_marked,is_default_case;};struct pp {		/* list of procedures				*/	int			proc_id,				exit_node,				n_locals,				entry_node;		/* entry of -1 ==> called only	*/	token_ptr	type_decl;	token_ptr	proc;	proc_ptr	next;	char		static_or_extern;	short		has_return_xpr;};/*struct gg {	stab_ptr	next;	union {		struct {			char	*name;			int		node;		} label;		struct {			char	*name;			stab_ptr members;		} tag;		struct {			token_ptr	type;			token_ptr	decl;			int			id;			int			is_type;		} var;	} s;};*//* decl flags (types) */#define FLAG_TYPE_CHAR		(1<<0)#define FLAG_TYPE_SHORT		(1<<1)#define FLAG_TYPE_INT		(1<<2)#define FLAG_TYPE_LONG		(1<<3)#define FLAG_TYPE_SIGNED	(1<<4)#define FLAG_TYPE_UNSIGNED	(1<<5)#define FLAG_TYPE_FLOAT		(1<<6)#define FLAG_TYPE_DOUBLE	(1<<7)#define FLAG_TYPE_CONST		(1<<8)#define FLAG_TYPE_VOLATILE	(1<<9)#define FLAG_TYPE_VOID		(1<<10)#define FLAG_TYPE_US		(1<<11)#define FLAG_TYPE_ENUM		(1<<12)#define FLAG_TYPE_USER_NAME	(1<<13)/* storage class flags */#define FLAG_SC_TYPEDEF		(1<<14)#define FLAG_SC_EXTERN		(1<<15)#define FLAG_SC_STATIC		(1<<16)#define FLAG_SC_AUTO		(1<<17)#define FLAG_SC_REGISTER	(1<<18)#define FLAG_TYPE_STRUCT	(1<<19)#define FLAG_TYPE_UNION		(1<<20)extern int	n_opt, c_opt, p_opt, i_opt,	a_opt,	k_opt,				/* output each created token	*/	o_opt,				/* output file name follows		*/	x_opt,				/* expression debugging    		*/	z_opt,				/* LIF details to output file*/	m_opt,				/* memory usage summary    		*/	s_opt,				/* print symbol table      		*/	lineno,	stmtno,	id_max,	current_column,	global_scope,	in_local_decl,	in_struct,	in_union,	in_parms,	n_returns,	proc_returns [5000];extern  int		type_seen,in_init;extern 	FILE	*outfile,*h_file;extern 	char	*progname;extern	char	the_current_file[2000];extern	YYSTYPE	yylval;extern	proc_ptr current_proc;string_ptr		alloc_string();token_ptr		alloc_token(),create_token(),leftmost ();token_ptr 		fake_var_decl();decl_ptr 		alloc_decl();type_ptr 		alloc_type();type_ptr 		make_abstract_type ();type_ste_ptr	alloc_type_ste();var_ste_ptr		alloc_var_ste(),struct_decl(),look_up_id();tag_ste_ptr		alloc_tag_ste();addr_tab_ptr 	alloc_addr_tab(),addr_tab;int				top_scope(),get_stmt_no(),xpr_gen (),find_proc_id;int				current_proc_id(),call_to(),is_malloc();int 			current_global(),current_local();int				current_addr(),current_chain();int				is_var_array();tree_ptr		alloc_tree(), make_tree (), make_leaf();stmt_ptr 		make_stmt (),alloc_stmt(),join_stmt(),if_stmt();stmt_ptr		while_stmt(),do_stmt(),for_stmt(),brace_stmt();stmt_ptr		break_stmt(),continue_stmt(),switch_stmt(),case_stmt();stmt_ptr		return_stmt(),fun_stmt(),stmt_label(),goto_stmt();list_ptr		alloc_list();label_ptr		alloc_label();proc_ptr		alloc_proc(),find_proc();char			*find_string();ptr_tab_ptr		look_for_ptr ();#endif /* _ansi_parse_h */

⌨️ 快捷键说明

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