| 218 | } |
| 219 | |
| 220 | char * tokenize_string(char * s) |
| 221 | { |
| 222 | char * result; |
| 223 | char * literal = s; |
| 224 | int l; |
| 225 | int c; |
| 226 | |
| 227 | if (strcmp(s,":") == 0) literal = "_colon"; |
| 228 | else if (strcmp(s,"!") == 0) literal = "_bang"; |
| 229 | else if (strcmp(s,"!=") == 0) literal = "_bang_equals"; |
| 230 | else if (strcmp(s,"&&") == 0) literal = "_amperamper"; |
| 231 | else if (strcmp(s,"&") == 0) literal = "_amper"; |
| 232 | else if (strcmp(s,"+") == 0) literal = "_plus"; |
| 233 | else if (strcmp(s,"+=") == 0) literal = "_plus_equals"; |
| 234 | else if (strcmp(s,"||") == 0) literal = "_barbar"; |
| 235 | else if (strcmp(s,"|") == 0) literal = "_bar"; |
| 236 | else if (strcmp(s,";") == 0) literal = "_semic"; |
| 237 | else if (strcmp(s,"-") == 0) literal = "_minus"; |
| 238 | else if (strcmp(s,"<") == 0) literal = "_langle"; |
| 239 | else if (strcmp(s,"<=") == 0) literal = "_langle_equals"; |
| 240 | else if (strcmp(s,">") == 0) literal = "_rangle"; |
| 241 | else if (strcmp(s,">=") == 0) literal = "_rangle_equals"; |
| 242 | else if (strcmp(s,".") == 0) literal = "_period"; |
| 243 | else if (strcmp(s,"?") == 0) literal = "_question"; |
| 244 | else if (strcmp(s,"?=") == 0) literal = "_question_equals"; |
| 245 | else if (strcmp(s,"=") == 0) literal = "_equals"; |
| 246 | else if (strcmp(s,",") == 0) literal = "_comma"; |
| 247 | else if (strcmp(s,"[") == 0) literal = "_lbracket"; |
| 248 | else if (strcmp(s,"]") == 0) literal = "_rbracket"; |
| 249 | else if (strcmp(s,"{") == 0) literal = "_lbrace"; |
| 250 | else if (strcmp(s,"}") == 0) literal = "_rbrace"; |
| 251 | else if (strcmp(s,"(") == 0) literal = "_lparen"; |
| 252 | else if (strcmp(s,")") == 0) literal = "_rparen"; |
| 253 | l = strlen(literal)+2; |
| 254 | result = (char*)malloc(l+1); |
| 255 | for (c = 0; literal[c] != 0; ++c) |
| 256 | { |
| 257 | result[c] = toupper(literal[c]); |
| 258 | } |
| 259 | result[l-2] = '_'; |
| 260 | result[l-1] = 't'; |
| 261 | result[l] = 0; |
| 262 | return result; |
| 263 | } |
| 264 | |
| 265 | int cmp_literal(const void * a, const void * b) |
| 266 | { |