http://t3x.org/subc/defs.h.html

defs.h

This source file is part of the SubC compiler, which is described in the book

Practical Compiler Construction.

You might prefer to download the compiler source code. It is in the public domain.

Global Definitions

This header contains the definitions of global parameters, sizes, limits, external resources, and other constants. Sizes, limits, and external resources are tunable.

/*
 *	NMH's Simple C Compiler, 2011,2012,2022
 *	Definitions
 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

/* define this on 64-bit systems */
#define W64

/* define when linking against host's LIBC */
/* #define HOSTLIB */

#define PREFIX		'C'
#define LPREFIX		'L'

#ifndef SCCDIR
 #define SCCDIR		"."
#endif

#define ASCMD		"as -32 -o %s %s"

#ifdef W64
 #define LDCMD		"ld -m elf_i386_fbsd -o %s %s/lib/crt0.o"
 #define SYSLIBC	"/usr/lib32/libc.a"
#else
 #define LDCMD		"ld -o %s %s/lib/crt0.o"
 #define SYSLIBC	"/usr/lib/libc.a"
#endif

#define SCCLIBC		"%s/lib/libscc.a"

#ifndef HOSTLIB
 #undef SYSLIBC
 #define SYSLIBC	""
#endif

#define INTSIZE		4
#define PTRSIZE		INTSIZE
#define CHARSIZE	1

#define TEXTLEN		512
#define NAMELEN		16

#define MAXFILES	32

#define MAXIFDEF	16
#define MAXNMAC		32
#define MAXCASE		256
#define MAXBREAK	16
#define MAXLOCINIT	32
#define MAXFNARGS	32

#define NSYMBOLS	1024
#define POOLSIZE	8192

/* types */
#define TVARIABLE	1
#define TARRAY		2
#define TFUNCTION	3
#define TCONSTANT	4
#define TMACRO		5

/* primitive types */
#define PCHAR	1
#define PINT	2
#define CHARPTR	3
#define INTPTR	4
#define CHARPP	5
#define INTPP	6
#define PVOID	7
#define VOIDPTR	8
#define VOIDPP	9
#define FUNPTR	10

/* storage classes */
#define CPUBLIC	1
#define CEXTERN	2
#define CSTATIC	3
#define CLSTATC	4
#define CAUTO	5

/* lvalue structure */
#define LVSYM	0
#define LVPRIM	1
#define LV	2

/* debug options */
#define D_LSYM	1
#define D_GSYM	2
#define D_STAT	4

enum {
	/* !!! The order of the following symbols must match
	   !!! the order of corresponding symbols in prec.h */
	SLASH, STAR, MOD, PLUS, MINUS, LSHIFT, RSHIFT,
	GREATER, GTEQ, LESS, LTEQ, EQUAL, NOTEQ, AMPER,
	CARET, PIPE, LOGAND, LOGOR,

	__ARGC, ASAND, ASXOR, ASLSHIFT, ASMINUS, ASMOD, ASOR,
	ASPLUS, ASRSHIFT, ASDIV, ASMUL, ASSIGN, BREAK, CASE,
	CHAR, COLON, COMMA, CONTINUE, DECR, DEFAULT, DO, ELLIPSIS,
	ELSE, ENUM, EXTERN, FOR, IDENT, IF, INCR, INT, INTLIT,
	LBRACE, LBRACK, LPAREN, NOT, QMARK, RBRACE, RBRACK,
	RETURN, RPAREN, SEMI, SIZEOF, STATIC, STRLIT, SWITCH,
	TILDE, VOID, WHILE, XEOF, XMARK,

	P_INCLUDE, P_DEFINE, P_ENDIF, P_ELSE, P_ELSENOT, P_IFDEF,
	P_IFNDEF, P_UNDEF
};

contact  |  privacy