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