8 // Make the scope character ('.') be a symbol, otherwise it's just
10 #define USE_SCOPE_CHAR 1
22 int LastToken, LastTokenLen;
23 const char *LastTokenStr;
26 int NextToken, NextTokenLen;
27 const char *NextTokenStr;
36 struct sSpiderVariant *Variant;
40 int GetToken(tParser *File);
41 void PutBack(tParser *File);
42 int LookAhead(tParser *File);
90 TOK_EQUALS, TOK_NOTEQUALS,
95 TOK_BWNOT, TOK_LOGICNOT,
99 TOK_LOGICAND, TOK_LOGICOR, TOK_LOGICXOR,
100 TOK_AND, TOK_OR, TOK_XOR,
102 // Assignment Operations
103 TOK_INCREMENT, TOK_DECREMENT,
104 TOK_ASSIGN_DIV, TOK_ASSIGN_MUL,
105 TOK_ASSIGN_PLUS, TOK_ASSIGN_MINUS,
106 TOK_ASSIGN_SHL, TOK_ASSIGN_SHR,
107 TOK_ASSIGN_LOGICAND, TOK_ASSIGN_LOGICOR, TOK_ASSIGN_LOGXICOR,
108 TOK_ASSIGN_AND, TOK_ASSIGN_OR, TOK_ASSIGN_XOR,
110 TOK_PAREN_OPEN, TOK_PAREN_CLOSE,
111 TOK_BRACE_OPEN, TOK_BRACE_CLOSE,
112 TOK_SQUARE_OPEN, TOK_SQUARE_CLOSE,
117 #define TOKEN_GROUP_TYPES TOK_RWD_VOID:\
118 case TOK_RWD_OBJECT:\
119 case TOK_RWD_OPAQUE:\
120 case TOK_RWD_INTEGER:\
121 case TOK_RWD_STRING:\
123 #define TOKEN_GROUP_TYPES_STR "TOK_RWD_VOID, TOK_RWD_OBJECT, TOK_RWD_OPAQUE, TOK_RWD_INTEGER, TOK_RWD_STRING or TOK_RWD_REAL"
125 #define TOKEN_GET_DATATYPE(_type, _tok) do { switch(_tok) {\
126 case TOK_RWD_VOID: _type = SS_DATATYPE_UNDEF; break;\
127 case TOK_RWD_INTEGER:_type = SS_DATATYPE_INTEGER; break;\
128 case TOK_RWD_OPAQUE: _type = SS_DATATYPE_OPAQUE; break;\
129 case TOK_RWD_OBJECT: _type = SS_DATATYPE_OBJECT; break;\
130 case TOK_RWD_REAL: _type = SS_DATATYPE_REAL; break;\
131 case TOK_RWD_STRING: _type = SS_DATATYPE_STRING; break;\
132 default:_type=SS_DATATYPE_UNDEF;fprintf(stderr,\
133 "ERROR: Unexpected %s, expected "TOKEN_GROUP_TYPES_STR"\n",csaTOKEN_NAMES[Parser->Token]);\
137 # if WANT_TOKEN_STRINGS
138 const char * const csaTOKEN_NAMES[] = {
176 "TOK_EQUALS", "TOK_NOTEQUALS",
180 "TOK_BWNOT", "TOK_LOGICNOT",
181 "TOK_DIV", "TOK_MUL",
182 "TOK_PLUS", "TOK_MINUS",
183 "TOK_SHL", "TOK_SHR",
184 "TOK_LOGICAND", "TOK_LOGICOR", "TOK_LOGICXOR",
185 "TOK_AND", "TOK_OR", "TOK_XOR",
187 "TOK_INCREMENT", "TOK_DECREMENT",
188 "TOK_ASSIGN_DIV", "TOK_ASSIGN_MUL",
189 "TOK_ASSIGN_PLUS", "TOK_ASSIGN_MINUS",
190 "TOK_ASSIGN_SHL", "TOK_ASSIGN_SHR",
191 "TOK_ASSIGN_LOGICAND", "TOK_ASSIGN_LOGICOR", "TOK_ASSIGN_LOGICXOR",
192 "TOK_ASSIGN_AND", "TOK_ASSIGN_OR", "TOK_ASSIGN_XOR",
194 "TOK_PAREN_OPEN", "TOK_PAREN_CLOSE",
195 "TOK_BRACE_OPEN", "TOK_BRACE_CLOSE",
196 "TOK_SQUARE_OPEN", "TOK_SQUARE_CLOSE",