OSDN Git Service

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