1 
2 //**************************************************************************
3 //**
4 //** token.h
5 //**
6 //**************************************************************************
7 
8 #ifndef __TOKEN_H__
9 #define __TOKEN_H__
10 
11 // HEADER FILES ------------------------------------------------------------
12 
13 #include "common.h"
14 #include "error.h"
15 
16 // MACROS ------------------------------------------------------------------
17 
18 // TYPES -------------------------------------------------------------------
19 
20 typedef enum
21 {
22 	TK_NONE,
23 	TK_EOF,
24 	TK_IDENTIFIER,		// VALUE: (char *) tk_String
25 	TK_STRING,			// VALUE: (char *) tk_String
26 	TK_NUMBER,			// VALUE: (int) tk_Number
27 	TK_LINESPECIAL,		// VALUE: (int) tk_LineSpecial
28 	TK_PLUS,			// '+'
29 	TK_MINUS,			// '-'
30 	TK_ASTERISK,		// '*'
31 	TK_SLASH,			// '/'
32 	TK_PERCENT,			// '%'
33 	TK_ASSIGN,			// '='
34 	TK_ADDASSIGN,		// '+='
35 	TK_SUBASSIGN,		// '-='
36 	TK_MULASSIGN,		// '*='
37 	TK_DIVASSIGN,		// '/='
38 	TK_MODASSIGN,		// '%='
39 	TK_INC,				// '++'
40 	TK_DEC,				// '--'
41 	TK_EQ,				// '=='
42 	TK_NE,				// '!='
43 	TK_LT,				// '<'
44 	TK_GT,				// '>'
45 	TK_LE,				// '<='
46 	TK_GE,				// '>='
47 	TK_LSHIFT,			// '<<'
48 	TK_RSHIFT,			// '>>'
49 	TK_ANDLOGICAL,		// '&&'
50 	TK_ORLOGICAL,		// '||'
51 	TK_ANDBITWISE,		// '&'
52 	TK_ORBITWISE,		// '|'
53 	TK_EORBITWISE,		// '^'
54 	TK_TILDE,			// '~'
55 	TK_LPAREN,			// '('
56 	TK_RPAREN,			// ')'
57 	TK_LBRACE,			// '{'
58 	TK_RBRACE,			// '}'
59 	TK_LBRACKET,		// '['
60 	TK_RBRACKET,		// ']'
61 	TK_COLON,			// ':'
62 	TK_SEMICOLON,		// ';'
63 	TK_COMMA,			// ','
64 	TK_PERIOD,			// '.'
65 	TK_NOT,				// '!'
66 	TK_NUMBERSIGN,		// '#'
67 	TK_CPPCOMMENT,		// '//'
68 	TK_STARTCOMMENT,	// '/*'
69 	TK_ENDCOMMENT,		// '*/'
70 	TK_BREAK,			// 'break'
71 	TK_CASE,			// 'case'
72 	TK_CONST,			// 'const'
73 	TK_CONTINUE,		// 'continue'
74 	TK_DEFAULT,			// 'default'
75 	TK_DEFINE,			// 'define'
76 	TK_DO,				// 'do'
77 	TK_ELSE,			// 'else'
78 	TK_FOR,				// 'for'
79 	TK_GOTO,			// 'goto'
80 	TK_IF,				// 'if'
81 	TK_INCLUDE,			// 'include'
82 	TK_INT,				// 'int'
83 	TK_OPEN,			// 'open'
84 	TK_PRINT,			// 'print'
85 	TK_PRINTBOLD,		// 'printbold'
86 	TK_LOG,				// 'log'
87 	TK_HUDMESSAGE,		// 'hudmessage'
88 	TK_HUDMESSAGEBOLD,	// 'hudmessagebold'
89 	TK_RESTART,			// 'restart'
90 	TK_SCRIPT,			// 'script'
91 	TK_SPECIAL,			// 'special'
92 	TK_STR,				// 'str'
93 	TK_SUSPEND,			// 'suspend'
94 	TK_SWITCH,			// 'switch'
95 	TK_TERMINATE,		// 'terminate'
96 	TK_UNTIL,			// 'until'
97 	TK_VOID,			// 'void'
98 	TK_WHILE,			// 'while'
99 	TK_WORLD,			// 'world'
100 	TK_GLOBAL,			// 'global'
101 	TK_RESPAWN,			// 'respawn'		[BC]
102 	TK_DEATH,			// 'death'			[BC]
103 	TK_ENTER,			// 'enter'			[BC]
104 	TK_PICKUP,			// 'pickup'			[BC]
105 	TK_BLUERETURN,		// 'bluereturn'		[BC]
106 	TK_REDRETURN,		// 'redreturn'		[BC]
107 	TK_WHITERETURN,		// 'whitereturn'	[BC]
108 	TK_NOCOMPACT,		// 'nocompact'
109 	TK_LIGHTNING,		// 'ligtning'
110 	TK_CREATETRANSLATION,// 'createtranslation'
111 	TK_FUNCTION,		// 'function'
112 	TK_RETURN,			// 'return'
113 	TK_WADAUTHOR,		// 'wadauthor'
114 	TK_NOWADAUTHOR,		// 'nowadauthor'
115 	TK_ACSEXECUTEWAIT,	// 'acs_executewait'
116 	TK_ENCRYPTSTRINGS,	// 'encryptstrings'
117 	TK_IMPORT,			// 'import'
118 	TK_LIBRARY,			// 'library'
119 	TK_LIBDEFINE,		// 'libdefine'
120 	TK_BOOL,			// 'bool'
121 	TK_NET,				// 'net'
122 	TK_CLIENTSIDE,		// 'clientside'
123 	TK_DISCONNECT,		// 'disconnect'
124 	TK_UNLOADING,		// 'unloading'
125 	TK_STATIC,			// 'static'
126 	TK_ANDASSIGN,		// '&='
127 	TK_ORASSIGN,		// '|='
128 	TK_EORASSIGN,		// '^='
129 	TK_LSASSIGN,		// '<<='
130 	TK_RSASSIGN,		// '>>='
131 } tokenType_t;
132 
133 // PUBLIC FUNCTION PROTOTYPES ----------------------------------------------
134 
135 void TK_Init(void);
136 void TK_OpenSource(char *fileName);
137 void TK_Include(char *fileName);
138 void TK_Import(char *fileName, enum ImportModes prevMode);
139 void TK_CloseSource(void);
140 int TK_GetDepth(void);
141 tokenType_t TK_NextToken(void);
142 int TK_NextCharacter(void);
143 boolean TK_NextTokenMustBe(tokenType_t token, error_t error);
144 boolean TK_TokenMustBe(tokenType_t token, error_t error);
145 boolean TK_Member(tokenType_t *list);
146 void TK_Undo(void);
147 void TK_SkipLine(void);
148 void TK_SkipPast(tokenType_t token);
149 void TK_SkipTo(tokenType_t token);
150 void TK_AddIncludePath(char *sourceName);
151 void TK_AddProgramIncludePath(char *argv0);
152 
153 // PUBLIC DATA DECLARATIONS ------------------------------------------------
154 
155 extern tokenType_t tk_Token;
156 extern int tk_Line;
157 extern int tk_Number;
158 extern char *tk_String;
159 extern int tk_SpecialValue;
160 extern int tk_SpecialArgCount;
161 extern char *tk_SourceName;
162 extern int tk_IncludedLines;
163 extern boolean forSemicolonHack;
164 extern char MasterSourceLine[];  // master line - Ty 07jan2000
165 extern int MasterSourcePos;      // master position - Ty 07jan2000
166 extern boolean ClearMasterSourceLine; // ready for new line - Ty 07jan2000
167 
168 #endif
169