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

📄 tree_ty.h

📁 早期freebsd实现
💻 H
字号:
/*- * Copyright (c) 1980, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)tree_ty.h	8.1 (Berkeley) 6/6/93 */typedef struct /* T_FORU, T_FORD */{    int		line_no; 	/* line number of for */    struct	tnode	*init_asg;	/* initialization */    struct	tnode	*term_expr;	/* termination expresssion */    struct	tnode	*for_stmnt;	/* for statement */} FOR_NODE;typedef struct  /* T_ASGN */{    int		line_no;	/* line number of := */    struct	tnode	*lhs_var;    struct	tnode	*rhs_expr;} ASG_NODE;#ifndef PTREEtypedef struct				/* T_VAR */{    int 		line_no;    char		*cptr;    struct tnode	*qual;		/* list node */} VAR_NODE;typedef struct		/* T_FIELD */{    char		*id_ptr;    struct tnode	*other;		} FIELD_NODE;#elsetypedef struct				/* T_VAR */{    int 		line_no;    char		*cptr;    struct tnode	*qual;    struct nl		*nl_entry;} VAR_NODE;typedef struct		/* T_FIELD */{    char		*id_ptr;    struct tnode	*other;		    struct nl		*nl_entry;} FIELD_NODE;#endiftypedef struct				/* T_MOD, T_MULT, T_DIVD, T_DIV,					   T_AND, T_ADD, T_SUB, T_OR,					   T_EQ, T_LT, T_GT, T_NE, T_LE					   T_GE, T_IN */{    int		const_tag;    struct	tnode	*lhs;    struct	tnode	*rhs;} EXPR_NODE;typedef struct			/* T_LISTPP */{    struct tnode *list;  /* check the types on these,			    this is used in pclvalue and lvalue */    struct tnode *next;} LIST_NODE;typedef struct			/* T_IF, T_IFEL, T_IFX */{    int           line_no;    struct tnode *cond_expr;    struct tnode *then_stmnt;    struct tnode *else_stmnt;} IF_NODE;typedef struct			/* T_MINUS, T_PLUS, T_NOT */{    int		const_tag;    struct tnode 	*expr;} UN_EXPR;typedef struct /* T_PDEC, T_FDEC, T_PROG */{    int	line_no;    char	*id_ptr;    struct tnode	*param_list;    struct tnode	*type;} P_DEC;typedef struct	/* T_PVAL, T_PVAR */{    struct tnode	*id_list;    struct tnode	*type;} PARAM;typedef struct		/* T_PFUNC, T_PPROC */{    struct tnode	*id_list,			*type,			*param_list;    int			line_no;} PFUNC_NODE;typedef struct		/* T_NIL */{    int	const_tag;} NIL_NODE;typedef struct		/* T_STRNG, T_INT, T_FINT, T_BINT */{    int		const_tag;    char	*cptr;} CONST_NODE;typedef struct		/* T_CSTRNG, T_ID, T_CFINT, T_CINT, T_CBINT */{    char	*cptr;} CHAR_CONST;typedef struct		/* T_PLUSC, T_MINUSC */{    struct tnode	*number;} SIGN_CONST;#ifdef PTREEtypedef struct{    int	line_no    struct tnode	*type;    struct nl		*nl_entry;} COMP_TY;#elsetypedef struct		/* T_TYPACK, T_TYSCAL, T_TYFILE, T_TYSET, T_TYREC */{    int		  line_no;    struct tnode *type;} COMP_TY;#endiftypedef struct		/* T_TYPTR */{    int			 line_no;    struct tnode	*id_node;} PTR_TY;typedef struct		/* T_TYRANG */{    int			 line_no;    struct tnode	*const1;    struct tnode	*const2;} RANG_TY;typedef struct		/* T_TYCRANG */{    int			 line_no;    struct tnode	*lwb_var;    struct tnode	*upb_var;    struct tnode	*type;} CRANG_TY;typedef struct		/* T_TYARY, T_TYCARY */{    int			 line_no;    struct tnode	*type_list;    struct tnode	*type;} ARY_TY;typedef struct		/* T_TYVARNT */{    int 		 line_no;    struct tnode	*const_list;    struct tnode	*fld_list;} TYVARNT;typedef struct		/* T_TYVARPT */{    int			 line_no;    char		*cptr;    struct tnode	*type_id;    struct tnode	*var_list;} VARPT;typedef struct		/* T_CSTAT */{    int 		 line_no;    struct tnode	*const_list;    struct tnode	*stmnt;} C_STMNT;typedef struct		/* T_BSTL, T_BLOCK */{    int			line_no;    struct tnode	*stmnt_list;} STMNT_BLCK;typedef struct		/* T_FLDLST */{    int 		line_no;    struct tnode	*fix_list;    struct tnode	*variant;} FLDLST;typedef struct		/* T_RFIELD */{    int			line_no;    struct tnode	*id_list;    struct tnode	*type;} RFIELD;typedef struct		/* T_LABEL */{    int 		line_no;    char		*lbl_ptr;    struct tnode	*stmnt;} LABEL_NODE;typedef struct		/* T_GOTO */{    int		line_no;    char	*lbl_ptr;} GOTO_NODE;typedef struct		/* T_PCALL, T_FCALL */{    int			line_no;    char		*proc_id;    struct tnode	*arg;} PCALL_NODE;typedef struct		/* T_CASE, T_WHILE */{    int			line_no;    struct tnode	*expr;    struct tnode	*stmnt_list;} WHI_CAS;typedef struct		/* T_WITH */{    int			line_no;    struct tnode	*var_list;    struct tnode	*stmnt;} WITH_NODE;typedef struct		/* T_REPEAT */{    int			line_no;    struct tnode	*stmnt_list;    struct tnode	*term_expr;} REPEAT;typedef struct		/* T_RANG */{    struct tnode	*expr1;    struct tnode	*expr2;} RANG;typedef struct		/* T_CSET */{    int			const_tag;    struct tnode	*el_list;} CSET_NODE;typedef struct		/* T_ARY */{    struct tnode	*expr_list;} ARY_NODE;typedef struct		/* T_WEXPR */{    struct tnode	*expr1;    struct tnode	*expr2;    struct tnode	*expr3;} WEXPR_NODE;typedef struct		/* T_TYID */{    int			line_no;    char		*idptr;} TYID_NODE;typedef struct		/* anything with linenumber in first field */{    int			line_no;} LINED;struct tnode{    int tag;    union    {	FOR_NODE	t_for_node;		ASG_NODE	t_asg_node;	VAR_NODE	t_var_node;	EXPR_NODE	t_expr_node;	LIST_NODE	t_list_node;	IF_NODE		t_if_node;	UN_EXPR		t_un_expr;	P_DEC		t_p_dec;	PARAM		t_param;	PFUNC_NODE	t_pfunc_node;	NIL_NODE	t_nil_node;	CONST_NODE	t_const_node;	CHAR_CONST	t_char_const;	SIGN_CONST	t_sign_const;	COMP_TY		t_comp_ty;	PTR_TY		t_ptr_ty;	RANG_TY		t_rang_ty;	CRANG_TY	t_crang_ty;	ARY_TY		t_ary_ty;	VARPT		t_varpt;	TYVARNT		t_tyvarnt;	C_STMNT		t_c_stmnt;	STMNT_BLCK	t_stmnt_blck;	FLDLST		t_fldlst;	RFIELD		t_rfield;	LABEL_NODE	t_label_node;	PCALL_NODE	t_pcall_node;	WHI_CAS		t_whi_cas;	WITH_NODE	t_with_node;	REPEAT		t_repeat;	RANG		t_rang;	CSET_NODE	t_cset_node;	ARY_NODE	t_ary_node;	WEXPR_NODE	t_wexpr_node;	FIELD_NODE	t_field_node;	TYID_NODE	t_tyid_node;	LINED		t_lined;	GOTO_NODE	t_goto_node;    } tree_ele;};#define	for_node		tree_ele.t_for_node	#define	asg_node		tree_ele.t_asg_node#define	var_node		tree_ele.t_var_node#define	expr_node		tree_ele.t_expr_node#define	list_node tree_ele.t_list_node#define	if_node			tree_ele.t_if_node#define	un_expr			tree_ele.t_un_expr#define	p_dec			tree_ele.t_p_dec#define	param			tree_ele.t_param#define	pfunc_node		tree_ele.t_pfunc_node#define	nil_node		tree_ele.t_nil_node#define	const_node		tree_ele.t_const_node#define	char_const		tree_ele.t_char_const#define	sign_const		tree_ele.t_sign_const#define	comp_ty			tree_ele.t_comp_ty#define	ptr_ty			tree_ele.t_ptr_ty#define	rang_ty			tree_ele.t_rang_ty#define	crang_ty		tree_ele.t_crang_ty#define	ary_ty			tree_ele.t_ary_ty#define	varpt			tree_ele.t_varpt#define	tyvarnt			tree_ele.t_tyvarnt#define	c_stmnt			tree_ele.t_c_stmnt#define	stmnt_blck		tree_ele.t_stmnt_blck#define	fldlst			tree_ele.t_fldlst#define	rfield			tree_ele.t_rfield#define	label_node		tree_ele.t_label_node#define	pcall_node		tree_ele.t_pcall_node#define	whi_cas			tree_ele.t_whi_cas#define	with_node		tree_ele.t_with_node#define	repeat			tree_ele.t_repeat#define	rang			tree_ele.t_rang#define	cset_node		tree_ele.t_cset_node#define	ary_node		tree_ele.t_ary_node#define	wexpr_node		tree_ele.t_wexpr_node#define	field_node		tree_ele.t_field_node#define	tyid_node		tree_ele.t_tyid_node#define	lined			tree_ele.t_lined#define	goto_node		tree_ele.t_goto_node

⌨️ 快捷键说明

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