Cleaned up the TokenStringify function a bit (ignore the returning of a local variable) and updated the tokenizer to better handle new lines.
This commit is contained in:
+11
-25
@@ -13,43 +13,29 @@ struct _token* TokenCreate(TokenType type, int lineNumber, int columnNumber, boo
|
||||
|
||||
char* TokenStringify(const struct _token* token, bool valueOnly) {
|
||||
if (!token) return NULL;
|
||||
char type[32];
|
||||
char number[32];
|
||||
|
||||
int length = StringifyTokenType(token->Type, type);
|
||||
|
||||
char* result = calloc(512, sizeof(char));
|
||||
#ifdef DEBUG
|
||||
|
||||
#endif
|
||||
char buffer[32];
|
||||
|
||||
switch(token->Type) {
|
||||
case Empty:
|
||||
snprintf(result, length + 1, "%s ", type);
|
||||
break;
|
||||
return "<>";
|
||||
case String:
|
||||
snprintf(result, 511, "%s \"%s\" ", type, token->Value.String);
|
||||
break;
|
||||
case Number:
|
||||
snprintf(number, 32, "%d", token->Value.Number);
|
||||
snprintf(result, 511, "%s %s", type, number);
|
||||
break;
|
||||
case Symbol:
|
||||
snprintf(result, 511, "%s %s", type, token->Value.String);
|
||||
return token->Value.String;
|
||||
case Number:
|
||||
sprintf(buffer, "%d", token->Value.Number);
|
||||
|
||||
break;
|
||||
case LineEnd:
|
||||
snprintf(result, 511, "%s\n", type);
|
||||
break;
|
||||
return "\n";
|
||||
case FileEnd:
|
||||
snprintf(result, length + 1, "%s ", type);
|
||||
break;
|
||||
return NULL;
|
||||
default:
|
||||
snprintf(result, length + 2, "%s %c", type, token->Value.Operator[0]);
|
||||
//snprintf(buffer, length, "<%c>", type);
|
||||
strncpy(buffer, token->Value.Operator, 8);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int StringifyTokenType(TokenType type, char buffer[32]) {
|
||||
|
||||
Reference in New Issue
Block a user