1: 
   2: # include <stdio.h>
   3: /*	manifest constant file for the lex/yacc interface */
   4: 
   5: # define ERROR 1
   6: # define NAME 2
   7: # define STRING 3
   8: # define ICON 4
   9: # define FCON 5
  10: # define PLUS 6
  11: # define MINUS 8
  12: # define MUL 11
  13: # define AND 14
  14: # define OR 17
  15: # define ER 19
  16: # define QUEST 21
  17: # define COLON 22
  18: # define ANDAND 23
  19: # define OROR 24
  20: 
  21: /*	special interfaces for yacc alone */
  22: /*	These serve as abbreviations of 2 or more ops:
  23: 	ASOP	=, = ops
  24: 	RELOP	LE,LT,GE,GT
  25: 	EQUOP	EQ,NE
  26: 	DIVOP	DIV,MOD
  27: 	SHIFTOP	LS,RS
  28: 	ICOP	ICR,DECR
  29: 	UNOP	NOT,COMPL
  30: 	STROP	DOT,STREF
  31: 
  32: 	*/
  33: # define ASOP 25
  34: # define RELOP 26
  35: # define EQUOP 27
  36: # define DIVOP 28
  37: # define SHIFTOP 29
  38: # define INCOP 30
  39: # define UNOP 31
  40: # define STROP 32
  41: 
  42: /*	reserved words, etc */
  43: # define TYPE 33
  44: # define CLASS 34
  45: # define STRUCT 35
  46: # define RETURN 36
  47: # define GOTO 37
  48: # define IF 38
  49: # define ELSE 39
  50: # define SWITCH 40
  51: # define BREAK 41
  52: # define CONTINUE 42
  53: # define WHILE 43
  54: # define DO 44
  55: # define FOR 45
  56: # define DEFAULT 46
  57: # define CASE 47
  58: # define SIZEOF 48
  59: # define ENUM 49
  60: 
  61: 
  62: /*	little symbols, etc. */
  63: /*	namely,
  64: 
  65: 	LP	(
  66: 	RP	)
  67: 
  68: 	LC	{
  69: 	RC	}
  70: 
  71: 	LB	[
  72: 	RB	]
  73: 
  74: 	CM	,
  75: 	SM	;
  76: 
  77: 	*/
  78: 
  79: # define LP 50
  80: # define RP 51
  81: # define LC 52
  82: # define RC 53
  83: # define LB 54
  84: # define RB 55
  85: # define CM 56
  86: # define SM 57
  87: # define ASSIGN 58
  88: 
  89: /*	END OF YACC */
  90: 
  91: /*	left over tree building operators */
  92: # define COMOP 59
  93: # define DIV 60
  94: # define MOD 62
  95: # define LS 64
  96: # define RS 66
  97: # define DOT 68
  98: # define STREF 69
  99: # define CALL 70
 100: # define FORTCALL 73
 101: # define NOT 76
 102: # define COMPL 77
 103: # define INCR 78
 104: # define DECR 79
 105: # define EQ 80
 106: # define NE 81
 107: # define LE 82
 108: # define LT 83
 109: # define GE 84
 110: # define GT 85
 111: # define ULE 86
 112: # define ULT 87
 113: # define UGE 88
 114: # define UGT 89
 115: # define SETBIT 90
 116: # define TESTBIT 91
 117: # define RESETBIT 92
 118: # define ARS 93
 119: # define REG 94
 120: # define OREG 95
 121: # define CCODES 96
 122: # define FREE 97
 123: # define STASG 98
 124: # define STARG 99
 125: # define STCALL 100
 126: 
 127: /*	some conversion operators */
 128: # define FLD 103
 129: # define SCONV 104
 130: # define PCONV 105
 131: # define PMCONV 106
 132: # define PVCONV 107
 133: 
 134: /*	special node operators, used for special contexts */
 135: # define FORCE 108
 136: # define CBRANCH 109
 137: # define INIT 110
 138: # define CAST 111
 139: 
 140: /*	node types */
 141: # define LTYPE 02
 142: # define UTYPE 04
 143: # define BITYPE 010
 144: 
 145:     /* DSIZE is the size of the dope array */
 146: # define DSIZE CAST+1
 147: 
 148: /*	type names, used in symbol table building */
 149: # define TNULL PTR    /* pointer to UNDEF */
 150: # define UNDEF 0
 151: # define FARG 1
 152: # define CHAR 2
 153: # define SHORT 3
 154: # define INT 4
 155: # define LONG 5
 156: # define FLOAT 6
 157: # define DOUBLE 7
 158: # define STRTY 8
 159: # define UNIONTY 9
 160: # define ENUMTY 10
 161: # define MOETY 11
 162: # define UCHAR 12
 163: # define USHORT 13
 164: # define UNSIGNED 14
 165: # define ULONG 15
 166: 
 167: # define ASG 1+
 168: # define UNARY 2+
 169: # define NOASG (-1)+
 170: # define NOUNARY (-2)+
 171: 
 172: /*	various flags */
 173: # define NOLAB (-1)
 174: 
 175: /* type modifiers */
 176: 
 177: # define PTR  020
 178: # define FTN  040
 179: # define ARY  060
 180: 
 181: /* type packing constants */
 182: 
 183: # define TMASK 060
 184: # define TMASK1 0300
 185: # define TMASK2  0360
 186: # define BTMASK 017
 187: # define BTSHIFT 4
 188: # define TSHIFT 2
 189: 
 190: /*	macros	*/
 191: 
 192: # define MODTYPE(x,y) x = (x&(~BTMASK))|y  /* set basic type of x to y */
 193: # define BTYPE(x)  (x&BTMASK)   /* basic type of x */
 194: # define ISUNSIGNED(x) ((x)<=ULONG&&(x)>=UCHAR)
 195: # define UNSIGNABLE(x) ((x)<=LONG&&(x)>=CHAR)
 196: # define ENUNSIGN(x) ((x)+(UNSIGNED-INT))
 197: # define DEUNSIGN(x) ((x)+(INT-UNSIGNED))
 198: # define ISPTR(x) ((x&TMASK)==PTR)
 199: # define ISFTN(x)  ((x&TMASK)==FTN)  /* is x a function type */
 200: # define ISARY(x)   ((x&TMASK)==ARY)   /* is x an array type */
 201: # define INCREF(x) (((x&~BTMASK)<<TSHIFT)|PTR|(x&BTMASK))
 202: # define DECREF(x) (((x>>TSHIFT)&~BTMASK)|(x&BTMASK))
 203: # define SETOFF(x,y)   if( x%y != 0 ) x = ( (x/y + 1) * y)
 204:         /* advance x to a multiple of y */
 205: # define NOFIT(x,y,z)   ( (x%z + y) > z )
 206:         /* can y bits be added to x without overflowing z */
 207:     /* pack and unpack field descriptors (size and offset) */
 208: # define PKFIELD(s,o) ((o<<6)|s)
 209: # define UPKFSZ(v)  (v&077)
 210: # define UPKFOFF(v) (v>>6)
 211: 
 212: /*	operator information */
 213: 
 214: # define TYFLG 016
 215: # define ASGFLG 01
 216: # define LOGFLG 020
 217: 
 218: # define SIMPFLG 040
 219: # define COMMFLG 0100
 220: # define DIVFLG 0200
 221: # define FLOFLG 0400
 222: # define LTYFLG 01000
 223: # define CALLFLG 02000
 224: # define MULFLG 04000
 225: # define SHFFLG 010000
 226: # define ASGOPFLG 020000
 227: 
 228: # define SPFLG 040000
 229: 
 230: #define optype(o) (dope[o]&TYFLG)
 231: #define asgop(o) (dope[o]&ASGFLG)
 232: #define logop(o) (dope[o]&LOGFLG)
 233: #define callop(o) (dope[o]&CALLFLG)
 234: 
 235: /*	table sizes	*/
 236: 
 237: # define BCSZ 100 /* size of the table to save break and continue labels */
 238: # define SYMTSZ 450 /* size of the symbol table */
 239: # define DIMTABSZ 750 /* size of the dimension/size table */
 240: # define PARAMSZ 150 /* size of the parameter stack */
 241: # ifndef FORT
 242: # define TREESZ 350 /* space for building parse tree */
 243: # else
 244: # define TREESZ 1000
 245: # endif
 246: # define SWITSZ 250 /* size of switch table */
 247: 
 248: # define NCHNAM 8  /* number of characters in a name */
 249: 
 250: /*	common defined variables */
 251: 
 252: extern int nerrors;  /* number of errors seen so far */
 253: 
 254: typedef union ndu NODE;
 255: typedef unsigned int TWORD;
 256: extern NODE *NIL;  /* a pointer which will always have 0 in it */
 257: extern int dope[];  /* a vector containing operator information */
 258: extern char *opst[];  /* a vector containing names for ops */
 259: 
 260: # ifdef ONEPASS
 261:     /* in one-pass operation, define the tree nodes */
 262: 
 263: union ndu {
 264: 
 265:     struct {
 266:         int op;
 267:         int rall;
 268:         TWORD type;
 269:         int su;
 270:         char name[NCHNAM];
 271:         NODE *left;
 272:         NODE *right;
 273:         };
 274: 
 275:     struct {
 276:         int op;
 277:         int rall;
 278:         TWORD type;
 279:         int su;
 280:         char name[NCHNAM];
 281:         CONSZ lval;
 282:         int rval;
 283:         };
 284: 
 285:     struct {
 286:         int op, rall;
 287:         TWORD type;
 288:         int su;
 289:         int label;  /* for use with branching */
 290:         };
 291: 
 292:     struct {
 293:         int op, rall;
 294:         TWORD type;
 295:         int su;
 296:         int stsize;  /* sizes of structure objects */
 297:         int stalign;  /* alignment of structure objects */
 298:         };
 299: 
 300:     struct {
 301:         int op;
 302:         int cdim;
 303:         TWORD type;
 304:         int csiz;
 305:         };
 306: 
 307:     struct {
 308:         /* this structure is used when a floating point constant
 309: 		   is being computed */
 310:         int op;
 311:         int cdim;
 312:         TWORD type;
 313:         int csiz;
 314:         double dval;
 315:         };
 316: 
 317:     };
 318: # endif

Defined union's

ndu defined in line 263; used 1 times

Defined typedef's

NODE defined in line 254; used 213 times

Defined macros

ANDAND defined in line 18; used 6 times
ARS defined in line 118; never used
ARY defined in line 179; used 8 times
ASG defined in line 167; used 109 times
ASGFLG defined in line 215; used 10 times
ASGOPFLG defined in line 226; used 1 times
ASOP defined in line 33; used 4 times
BCSZ defined in line 237; used 3 times
BREAK defined in line 51; used 3 times
BTMASK defined in line 186; used 6 times
BTSHIFT defined in line 187; used 2 times
CALLFLG defined in line 223; used 1 times
CASE defined in line 57; used 3 times
CAST defined in line 138; used 5 times
CBRANCH defined in line 136; used 4 times
CCODES defined in line 121; used 4 times
CLASS defined in line 44; used 4 times
COLON defined in line 17; used 12 times
COMMFLG defined in line 219; used 2 times
COMOP defined in line 92; used 4 times
COMPL defined in line 102; used 6 times
CONTINUE defined in line 52; used 3 times
DECR defined in line 104; used 5 times
DEFAULT defined in line 56; used 3 times
DEUNSIGN defined in line 197; used 2 times
DIMTABSZ defined in line 239; used 2 times
DIVFLG defined in line 220; used 2 times
DIVOP defined in line 36; used 7 times
DO defined in line 54; used 3 times
DOT defined in line 97; used 2 times
DSIZE defined in line 146; used 2 times
ELSE defined in line 49; used 3 times
ENUM defined in line 59; used 6 times
ENUNSIGN defined in line 196; used 1 times
EQUOP defined in line 35; used 9 times
ERROR defined in line 5; never used
FARG defined in line 151; used 4 times
FLOFLG defined in line 221; used 2 times
FOR defined in line 55; used 3 times
FORCE defined in line 135; used 3 times
FORTCALL defined in line 100; used 2 times
FTN defined in line 178; used 7 times
GE defined in line 109; used 5 times
GOTO defined in line 47; used 6 times
IF defined in line 48; used 3 times
INCOP defined in line 38; used 8 times
INCREF defined in line 201; used 9 times
INIT defined in line 137; used 7 times
ISUNSIGNED defined in line 194; used 11 times
LB defined in line 83; used 14 times
LC defined in line 81; used 7 times
LOGFLG defined in line 216; used 2 times
LP defined in line 79; used 22 times
LTYFLG defined in line 222; never used
MODTYPE defined in line 192; used 3 times
MOETY defined in line 161; used 4 times
MULFLG defined in line 224; used 2 times
NOASG defined in line 169; never used
NOFIT defined in line 205; never used
NOT defined in line 101; used 3 times
NOUNARY defined in line 170; never used
OROR defined in line 19; used 6 times
PARAMSZ defined in line 240; used 2 times
PCONV defined in line 130; used 3 times
PKFIELD defined in line 208; used 1 times
PMCONV defined in line 131; used 3 times
PTR defined in line 177; used 14 times
PVCONV defined in line 132; used 1 times
QUEST defined in line 16; used 7 times
RB defined in line 84; used 9 times
RC defined in line 82; used 8 times
RELOP defined in line 34; used 12 times
RESETBIT defined in line 117; never used
RETURN defined in line 46; used 7 times
RP defined in line 80; used 22 times
SCONV defined in line 129; used 17 times
SETBIT defined in line 115; never used
SHFFLG defined in line 225; used 2 times
SHIFTOP defined in line 37; used 9 times
SIMPFLG defined in line 218; used 2 times
SIZEOF defined in line 58; used 6 times
SM defined in line 86; used 22 times
SPFLG defined in line 228; used 3 times
STCALL defined in line 125; used 8 times
STREF defined in line 98; used 3 times
STRING defined in line 7; used 4 times
STROP defined in line 40; used 6 times
STRUCT defined in line 45; used 7 times
SWITCH defined in line 50; used 3 times
SWITSZ defined in line 246; used 3 times
TESTBIT defined in line 116; never used
TMASK defined in line 183; used 11 times
TMASK1 defined in line 184; never used
TMASK2 defined in line 185; never used
TNULL defined in line 149; used 11 times
TSHIFT defined in line 188; used 4 times
TYFLG defined in line 214; used 5 times
TYPE defined in line 43; used 12 times
UGT defined in line 114; used 10 times
UNOP defined in line 39; used 6 times
UNSIGNABLE defined in line 195; used 1 times
UPKFOFF defined in line 210; used 4 times
UPKFSZ defined in line 209; used 3 times
USHORT defined in line 163; used 4 times
WHILE defined in line 53; used 4 times
callop defined in line 233; used 2 times
logop defined in line 232; used 7 times

Usage of this include

Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2484
Valid CSS Valid XHTML 1.0 Strict