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

📄 cpp.h

📁 类PASCAL语言的编译器,LINUX环境的,我没试过是否正确.
💻 H
字号:
/****************************************************************************** *                               FREXXWARE * ---------------------------------------------------------------------------- * * Project: Frexx C Preprocessor * $Source: /home/user/start/cpp/RCS/cpp.h,v $ * $Revision: 1.3 $ * $Date: 1993/12/06 13:51:20 $ * $Author: start $ * $State: Exp $ * $Locker: start $ * * ---------------------------------------------------------------------------- * $Log: cpp.h,v $ * Revision 1.3  1993/12/06  13:51:20  start * A lot of new stuff (too much to mention) * * Revision 1.2  1993/11/11  07:16:39  start * New stuff * * Revision 1.2  1993/11/11  07:16:39  start * New stuff * * Revision 1.1  1993/11/03  09:15:59  start * Initial revision * * *****************************************************************************//* *	I n t e r n a l   D e f i n i t i o n s    f o r   C P P * * In general, definitions in this file should not be changed. */#include <stdlib.h>#include <string.h>#ifndef toupper#define toupper(c) ((c) + ('A' - 'a'))#endif /* no toupper */#ifndef tolower#define tolower(c) ((c) + ('a' - 'A'))#endif /* no tolower */#ifndef TRUE#define TRUE		1#define FALSE		0#endif#ifndef EOS/* * This is predefined in Decus C */#define EOS		'\0'            /* End of string                */#endif#define EOF_CHAR	0		/* Returned by get() on eof     */#define NULLST		((char *) NULL) /* Pointer to nowhere (linted)  */#define DEF_NOARGS	(-1)            /* #define foo vs #define foo() *//* * The following may need to change if the host system doesn't use ASCII. */#define QUOTE_PARM	0x1C		/* Magic quoting operator	*/#define DEF_MAGIC	0x1D		/* Magic for #defines		*/#define TOK_SEP 	0x1E		/* Token concatenation delim.	*/#define COM_SEP 	0x1F		/* Magic comment separator	*//* * Note -- in Ascii, the following will map macro formals onto DEL + the * C1 control character region (decimal 128 .. (128 + PAR_MAC)) which will * be ok as long as PAR_MAC is less than 33).  Note that the last PAR_MAC * value is reserved for string substitution. */#define MAC_PARM	0x7F		/* Macro formals start here	*/#ifndef OS9#if (PAR_MAC >= 33)#error	"assertion fails -- PAR_MAC isn't less than 33"#endif#endif#define LASTPARM	(PAR_MAC - 1)/* * Character type codes. */#define INV		0		/* Invalid, must be zero	*/#define OP_EOE		INV		/* End of expression		*/#define DIG		1		/* Digit			*/#define LET		2		/* Identifier start		*/#define FIRST_BINOP	OP_ADD#define OP_ADD		3#define OP_SUB		4#define OP_MUL		5#define OP_DIV		6#define OP_MOD		7#define OP_ASL		8#define OP_ASR		9#define OP_AND		10		/* &, not &&			*/#define OP_OR		11		/* |, not ||			*/#define OP_XOR		12#define OP_EQ		13#define OP_NE		14#define OP_LT		15#define OP_LE		16#define OP_GE		17#define OP_GT		18#define OP_ANA		19		/* &&				*/#define OP_ORO		20		/* ||				*/#define OP_QUE		21		/* ?				*/#define OP_COL		22		/* :				*/#define OP_CMA		23		/* , (relevant?)                */#define LAST_BINOP	OP_CMA		/* Last binary operand		*//* * The following are unary. */#define FIRST_UNOP	OP_PLU		/* First Unary operand		*/#define OP_PLU		24		/* + (draft ANSI standard)      */#define OP_NEG		25		/* -				*/#define OP_COM		26		/* ~				*/#define OP_NOT		27		/* !				*/#define LAST_UNOP	OP_NOT#define OP_LPA		28		/* (                            */#define OP_RPA		29		/* )				*/#define OP_END		30		/* End of expression marker	*/#define OP_MAX		(OP_END + 1)    /* Number of operators          */#define OP_FAIL 	(OP_END + 1)    /* For error returns            *//* * The following are for lexical scanning only. */#define QUO		65		/* Both flavors of quotation	*/#define DOT		66		/* . might start a number	*/#define SPA		67		/* Space and tab		*/#define BSH		68		/* Just a backslash		*/#define END		69		/* EOF				*//* * These bits are set in ifstack[] */#define WAS_COMPILING	1		/* TRUE if compile set at entry */#define ELSE_SEEN	2		/* TRUE when #else processed	*/#define TRUE_SEEN	4		/* TRUE when #if TRUE processed *//* * Define bits for the basic types and their adjectives */#define T_CHAR		  1#define T_INT		  2#define T_FLOAT 	  4#define T_DOUBLE	  8#define T_SHORT 	 16#define T_LONG		 32#define T_SIGNED	 64#define T_UNSIGNED	128#define T_PTR		256		/* Pointer			*/#define T_FPTR		512		/* Pointer to functions 	*//* * The DEFBUF structure stores information about #defined * macros.  Note that the defbuf->repl information is always * in malloc storage. */typedef struct defbuf {	struct defbuf	*link;		/* Next define in chain */	char		*repl;		/* -> replacement	*/	int		hash;		/* Symbol table hash	*/	int		nargs;		/* For define(args)     */	char		name[1];	/* #define name 	*/} DEFBUF;/* * The FILEINFO structure stores information about open files * and macros being expanded. */typedef struct fileinfo {	char		*bptr;		/* Buffer pointer	*/	int		line;		/* for include or macro */	FILE		*fp;		/* File if non-null	*/	struct fileinfo *parent;	/* Link to includer	*/	char		*filename;	/* File/macro name	*/	char		*progname;	/* From #line statement */	unsigned int	unrecur;	/* For macro recursion	*/	char		buffer[1];	/* current input line	*/} FILEINFO;/* * The SIZES structure is used to store the values for #if sizeof */typedef struct sizes {    short	bits;			/* If this bit is set,		*/    short	size;			/* this is the datum size value */    short	psize;			/* this is the pointer size	*/} SIZES;/* * nomacarg is a built-in #define on Decus C. */#ifdef	nomacarg#define cput		output		/* cput concatenates tokens	*/#else#if COMMENT_INVISIBLE#define cput(c)         { if (c != TOK_SEP && c != COM_SEP) putchar(c); }#else#define cput(c)         { if (c != TOK_SEP) putchar(c); }#endif#endif#ifndef nomacarg#define streq(s1, s2)   (strcmp(s1, s2) == 0)#endif/* * Note: IO_NORMAL and IO_ERROR are defined in the Decus C stdio.h file */#ifndef IO_NORMAL#define IO_NORMAL	0#endif#ifndef IO_ERROR#define IO_ERROR	1#endif/* * Externs */#include "fpp.h"    /* structs and defines */#include "cppadd.h" /* Added prototypes for ANSI complience! */#ifdef AMIGA#include <dos.h>extern int _OSERR;#endifextern char	type[]; 		/* Character classifier 	*/#define compiling global->ifstack[0]#if	DEBUGextern int	debug;			/* Debug level			*/#endifextern SIZES	size_table[];		/* For #if sizeof sizes 	*/#define MAX_SPACE_SIZE 512 /* maximum number of whitespaces possible                              to remember */

⌨️ 快捷键说明

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