Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
263 dpurdie 1
/*
2
	CPP V5 -- Header file for all enumerations.
3
 
4
	source:  enum.h
5
	started: June 20, 1986
6
	version: December 12, 1987; January 19, 1988
7
 
8
	Written by Edward K. Ream.
9
	This software is in the public domain.
10
 
11
	See the read.me file for disclaimer and other information.
12
*/
13
 
14
/*
15
	----------    PARSING    ----------
16
*/
17
 
18
/*
19
	Input Codes and Internal Operator Codes:
20
	Type fields of parse nodes.
21
*/
22
typedef enum /* en_tokens */ { NULL_TOK, ERR_TOK,
23
 
24
/*	start of key subenum.				*/
25
/*	kdecl subenum.					*/
26
 
27
K_AUTO,  K_CHAR, K_CONST, K_DOUBLE,  K_EXTERN,
28
K_FLOAT, K_INT, K_LONG, K_REGISTER, K_SHORT,
29
K_STATIC, K_TYPEDEF, K_SIGNED, K_STRUCT, K_UNION,
30
K_UNSIGNED, K_VOID, K_VOLATILE,
31
 
32
/*	kcontrol subenum.				*/
33
 
34
K_BREAK, K_CASE,
35
K_CONTINUE, K_DEFAULT, K_DO, K_ELSE, K_ENUM, K_FOR,
36
K_GOTO, K_IF, K_RETURN, K_SWITCH, K_WHILE,
37
 
38
/*	Remainder of key subenum.			*/
39
 
40
K_ENTRY, K_SIZEOF,
41
 
42
/*	Separator and grouping tokens.			*/
43
/*	Start of is_op subenum.				*/
44
 
45
SEPARATOR_TOK, NL_TOK,
46
SEMICOLON_TOK, LBRACK_TOK, LCURLY_TOK, LPAREN_TOK, RBRACK_TOK,
47
RCURLY_TOK, RPAREN_TOK,
48
 
49
/*	is_ternop.					*/
50
 
51
COLON_TOK, QUESTION_TOK,
52
 
53
/*	Start of is_binop enum.				*/
54
 
55
ARRAY_TOK, ARROW_TOK, DOT_TOK, LAND_TOK, LOR_TOK, COMMA_TOK,
56
 
57
/*	is_assnop subenum.				*/
58
 
59
ASSN_TOK,
60
AND_ASSN_TOK, DIV_ASSN_TOK, LSHIFT_ASSN_TOK, MINUS_ASSN_TOK, MOD_ASSN_TOK,
61
OR_ASSN_TOK, PLUS_ASSN_TOK, RSHIFT_ASSN_TOK, STAR_ASSN_TOK, XOR_ASSN_TOK,
62
 
63
/*	is_aop, is_abelian  subenum.			*/
64
 
65
AND_TOK, OR_TOK, PLUS_TOK, STAR_TOK, XOR_TOK,
66
 
67
DIV_TOK, LSHIFT_TOK, MINUS_TOK, MOD_TOK, RSHIFT_TOK,
68
 
69
/* 	end of is_aop.					*/
70
 
71
/*	is_relop subenum.				*/
72
/*	Final entries of is_binop subenum.		*/
73
 
74
EQUAL_TOK, GE_TOK, GT_TOK, LE_TOK, LT_TOK, NE_TOK,
75
 
76
/*	Unary operators returned by get_token().	*/
77
 
78
DEC_TOK, INC_TOK,
79
 
80
/*	Start of is_unop subenum.			*/
81
 
82
NOT_TOK, TILDE_TOK,
83
 
84
/*	Unary operators created by expr().		*/
85
/*	End of is_unop subenum.				*/
86
 
87
CAST_TOK, POST_DEC_TOK, POST_INC_TOK, PRE_DEC_TOK, PRE_INC_TOK,
88
 
89
/*	Artificial unary operators; also is_unop	*/
90
 
91
UAND_TOK, UMINUS_TOK, UPLUS_TOK, USTAR_TOK,
92
 
93
/*	Operators with variable operand count		*/
94
/*	Final entries in is_op subenum.			*/
95
 
96
CALL_TOK,
97
 
98
/*	Class tokens.					*/
99
 
100
CHAR_TOK, EOP_TOK, ID_TOK, INT_TOK, FLOAT_TOK, LONG_TOK, STRING_TOK,
101
 
102
/*	Miscellaneous tokens			*/
103
 
104
DOTS3, LABEL_TOK
105
 
106
} en_tokens;
107
 
108
/*
109
	Most of the unary operators are specials generated in the parser.
110
	Only NOT_TOK and TILDE_TOK are unambiguously unary.
111
*/
112
#define is_kdecl(n)	(n >= K_AUTO	&& n <= K_VOLATILE)
113
#define is_kcontrol(n)	(n >= K_BREAK	&& n <= K_WHILE)
114
#define is_key(n)	(n >= K_AUTO	&& n <= K_SIZEOF)
115
 
116
#define is_op(n)	(n >= SEPARATOR_TOK	&& n <= CALL_TOK)
117
#define is_binop(n)	(n >= ARRAY_TOK	&& n <= NE_TOK)
118
#define is_assnop(n)	(n >= ASSN_TOK	&& n <= XOR_ASSN_TOK)
119
#define is_abelian(n)	(n >= AND_TOK	&& n <= XOR_TOK)
120
#define is_aop(n)	(n >= AND_TOK	&& n <= RSHIFT_TOK)
121
#define is_relop(n)	(n >= EQUAL_TOK	&& n <= NE_TOK)
122
#define is_unop(n)	(n >= NOT_TOK	&& n <= USTAR_TOK)
123
#define is_argop(n)	(n >= COLON_TOK && n <= CALL_TOK)