Minor cleanup.

Some printing to see the machinery in action.
This commit is contained in:
Simon Forman 2023-03-04 08:31:40 -08:00
parent fc5992c23b
commit 5ee30a70f9
1 changed files with 6 additions and 2 deletions

View File

@ -93,8 +93,8 @@ ht_insert(char *symbol)
candidate = hash_table[index]; candidate = hash_table[index];
} }
if (!candidate) { if (!candidate) {
hash_table[index] = symbol;
print_str("interning ");print_str(symbol);print_endl(); print_str("interning ");print_str(symbol);print_endl();
hash_table[index] = symbol;
} }
return JOY_VALUE(joySymbol, VALUE_OF(hash)); return JOY_VALUE(joySymbol, VALUE_OF(hash));
} }
@ -138,6 +138,7 @@ allocate_string(char *buffer, u32 offset, u32 length)
string_heap[end] = '\0'; string_heap[end] = '\0';
u32 new_string = string_heap_top; u32 new_string = string_heap_top;
string_heap_top = (u32)end + 1; string_heap_top = (u32)end + 1;
print_str("allocating ");print_str(string_heap + new_string);print_endl();
return string_heap + new_string; return string_heap + new_string;
} }
@ -176,6 +177,9 @@ tokenize0(char *str, u32 str_length, u32 index, u32 acc)
} }
} }
// i == str_length OR str[i] is a delimiter char. // i == str_length OR str[i] is a delimiter char.
// TODO: Convert bools and ints here?
// Use ht_insert to avoid multiple allocations of the same string!
char *token = allocate_string(str, index, i - index); char *token = allocate_string(str, index, i - index);
if (!token) if (!token)
return 0; // OOM return 0; // OOM
@ -211,7 +215,7 @@ void
main() main()
{ {
memset(string_heap, 0, sizeof(string_heap)); memset(string_heap, 0, sizeof(string_heap));
char *buffer = " 1[2[ 3 ]4] cats dogs bunnies"; char *buffer = " 1[2[ 3 cats ]4] cats dogs bunnies";
/*print_str(allocate_string(buffer, 4, 4)); print_endl();*/ /*print_str(allocate_string(buffer, 4, 4)); print_endl();*/
/*print_str(allocate_string(buffer, 2, 4)); print_endl();*/ /*print_str(allocate_string(buffer, 2, 4)); print_endl();*/
/*print_str(allocate_string(buffer, 7, 5)); print_endl();*/ /*print_str(allocate_string(buffer, 7, 5)); print_endl();*/