Add multiple of the pointer target size
This commit is contained in:
24
source.elna
24
source.elna
@ -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
|
||||
|
Reference in New Issue
Block a user