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

📄 set.h

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 H
字号:
#ifndef __GATE_SET_H#define __GATE_SET_H/*	set.h	The following is a general-purpose set library originally developed	by Hank Dietz and enhanced by Terence Parr to allow dynamic sets.		Sets are now structs containing the #words in the set and	a pointer to the actual set words.	1987 by Hank Dietz		Modified by:		Terence Parr		Purdue University		October 1989		Added ANSI prototyping Dec. 1992 -- TJP*/#include "pcctscfg.h"#ifdef NOT_USED /* SEE config.h *//* Define usable bits per unsigned int word */#ifdef PC#define WORDSIZE 16#define LogWordSize	4#else#define	WORDSIZE 32#define LogWordSize 5#endif#define BytesPerWord	sizeof(unsigned)#endif#define	SETSIZE(a) ((a).n<<LogWordSize)		/* Maximum items per set */#define	MODWORD(x) ((x) & (WORDSIZE-1))		/* x % WORDSIZE */#define	DIVWORD(x) ((x) >> LogWordSize)		/* x / WORDSIZE */#define	nil	(~((unsigned) 0))	/* An impossible set member all bits on (big!) */typedef struct _set {			unsigned int n;		/* Number of words in set */			unsigned *setword;		} set;#define set_init	{0, NULL}#define set_null(a)	((a).setword==NULL)#define	NumBytes(x)		(((x)>>3)+1)						/* Num bytes to hold x */#define	NumWords(x)		((((unsigned)(x))>>LogWordSize)+1)	/* Num words to hold x *//* M a c r o s *//* make arg1 a set big enough to hold max elem # of arg2 */#define set_new(a,_max) \if (((a).setword=(unsigned *)calloc(NumWords(_max),BytesPerWord))==NULL) \        fprintf(stderr, "set_new: Cannot allocate set with max of %d\n", _max); \        (a).n = NumWords(_max);#define set_free(a)									\	{if ( (a).setword != NULL ) free((char *)((a).setword));	\	(a) = empty;}#ifdef __STDC__extern void set_size( unsigned );extern unsigned int set_deg( set );extern set set_or( set, set );extern set set_and( set, set );extern set set_dif( set, set );extern set set_of( unsigned );extern void set_ext( set *, unsigned int );extern set set_not( set );extern int set_equ( set, set );extern int set_sub( set, set );extern unsigned set_int( set );extern int set_el( unsigned, set );extern int set_nil( set );extern char * set_str( set );extern set set_val( register char * );extern void set_orel( unsigned, set * );extern void set_orin( set *, set );extern void set_andin( set *, set );extern void set_rm( unsigned, set );extern void set_clr( set );extern set set_dup( set );extern void set_PDQ( set, register unsigned * );extern unsigned *set_pdq( set );extern void _set_pdq( set a, register unsigned *q );extern unsigned int set_hash( set, register unsigned int );#elseextern void set_size();extern unsigned int set_deg();extern set set_or();extern set set_and();extern set set_dif();extern set set_of();extern void set_ext();extern set set_not();extern int set_equ();extern int set_sub();extern unsigned set_int();extern int set_el();extern int set_nil();extern char * set_str();extern set set_val();extern void set_orel();extern void set_orin();extern void set_andin();extern void set_rm();extern void set_clr();extern set set_dup();extern void set_PDQ();extern unsigned *set_pdq();extern void _set_pdq();extern unsigned int set_hash();#endifextern set empty;#endif

⌨️ 快捷键说明

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