Add multiple of the pointer target size

This commit is contained in:
2025-02-05 13:24:50 +01:00
parent 8b654ed138
commit 5e9b4259ca
12 changed files with 380 additions and 133 deletions

View File

@ -301,7 +301,7 @@ begin
if token_end^ <> '\"' then
return input
end;
token_length := cast(token_end as Word) - cast(input as Word);
token_length := cast(token_end - input as Word);
current_token^.value.string_value := cast(calloc(token_length, 1) as pointer to Char);
is_valid := true;
@ -464,7 +464,7 @@ begin
end;
write_c(' ');
i := i + sizeof(Token)
i := i + 1u
end;
write_c('\n')
end;
@ -555,7 +555,7 @@ begin
input_pointer := skip_spaces(input_pointer);
while input_pointer^ <> '\0' do
tokens := cast(realloc(tokens, tokens_size^ + sizeof(Token)) as pointer to Token);
tokens := cast(reallocarray(tokens, tokens_size^ + 1u, sizeof(Token)) as pointer to Token);
current_token := tokens + tokens_size^;
if is_alpha(input_pointer^) or input_pointer^ = '_' then
@ -685,7 +685,7 @@ begin
end;
if current_token^.kind <> 0 then
tokens_size^ := tokens_size^ + sizeof(Token);
tokens_size^ := tokens_size^ + 1u;
input_pointer := skip_spaces(input_pointer)
else
write_s("Lexical analysis error on \"");
@ -712,16 +712,16 @@ begin
result^.name := cast(malloc(strlen(tokens^^.value.string_value)) as pointer to Char);
strcpy(result^.name, tokens^^.value.string_value);
tokens^ := tokens^ + sizeof(Token) * 2u;
tokens_size := tokens_size - sizeof(Token) * 2u;
tokens^ := tokens^ + 2u;
tokens_size := tokens_size - 2u;
write_s(result^.name);
write_c('\n');
result^.body := parse_literal(tokens, tokens_size);
tokens^ := tokens^ + sizeof(Token) * 2u;
tokens_size := tokens_size - sizeof(Token) * 2u;
tokens^ := tokens^ + 2u;
tokens_size := tokens_size - 2u;
return result
end;
@ -737,14 +737,14 @@ begin
result^.constants.count := 0u;
if tokens^^.kind = TOKEN_CONST then
tokens^ := tokens^ + sizeof(Token);
tokens_size^ := tokens_size^ - sizeof(Token);
tokens^ := tokens^ + 1;
tokens_size^ := tokens_size^ - 1u;
while tokens_size^ > 0u and tokens^^.kind = TOKEN_IDENTIFIER do
result^.constants.elements := cast(
reallocarray(result^.constants.elements, result^.constants.count + 1u, sizeof(pointer to ConstantDefinition))
as pointer to pointer to ConstantDefinition);
current_constant := result^.constants.elements + result^.constants.count * sizeof(pointer to ConstantDefinition);
current_constant := result^.constants.elements + result^.constants.count;
result^.constants.count := result^.constants.count + 1u;
@ -768,7 +768,7 @@ begin
result^.input := nil;
while i < argc do
parameter := argv + i * cast(sizeof(pointer to Char) as Int);
parameter := argv + i;
if strcmp(parameter^, "--tokenize") = 0 then
result^.tokenize := true