Modifying the class hierarchy and removing globals, allocators, simplifying

This commit is contained in:
Karol Krzosa (Nokia)
2022-12-31 20:10:11 +01:00
parent ffd6bc5d23
commit d75c54f61f
11 changed files with 153 additions and 168 deletions

View File

@@ -56,7 +56,7 @@ lex_set_len(Lex_Stream *s, Token *token){
}
CORE_Static void
lex_set_keywords(Lexer *lexer, Array<String> keywords){
lex_set_keywords(Parse_Ctx *lexer, Array<String> keywords){
Intern_String keyword = {};
For(keywords){
keyword = intern_string(&lexer->interns, it);
@@ -79,7 +79,7 @@ token_error(Token *t, String error_val){
}
CORE_Static void
lex_parse_u64(Lexer *lexer, Token *t, S64 base){
lex_parse_u64(Parse_Ctx *lexer, Token *t, S64 base){
Scratch scratch;
Set_BigInt_Arena(scratch);
@@ -100,7 +100,7 @@ lex_parse_u64(Lexer *lexer, Token *t, S64 base){
m = bigint_mul(&m, &base_mul);
}
t->int_val = bigint_copy(lexer->arena, &result);
t->int_val = bigint_copy(lexer->perm, &result);
}
CORE_Static void
@@ -175,7 +175,7 @@ lex_parse_ident(Intern_Table *table, Lex_Stream *s, Token *t){
break
CORE_Static Token
token_make(Lexer *lexer, U8 *str, Intern_String file, int line, U8 *line_begin){
token_make(Parse_Ctx *lexer, U8 *str, Intern_String file, int line, U8 *line_begin){
Token t = {};
t.str = str;
t.file = file;
@@ -186,7 +186,7 @@ token_make(Lexer *lexer, U8 *str, Intern_String file, int line, U8 *line_begin){
}
CORE_Static Token
token_make(Lexer *lexer){
token_make(Parse_Ctx *lexer){
return token_make(lexer, lexcp(&lexer->stream), lexer->stream.file, lexer->stream.line, lexer->stream.line_begin);
}
@@ -228,7 +228,7 @@ lex_unwind_indent_stack(Token *t, Lex_Stream *s, Array<Token> *array){
}
CORE_Static void
lex__stream(Lexer *lexer){
lex__stream(Parse_Ctx *lexer){
Intern_Table *table = &lexer->interns;
Array<Token> *array = &lexer->tokens;
Lex_Stream *s = &lexer->stream;
@@ -585,15 +585,8 @@ lex__stream(Lexer *lexer){
#undef CASE3
}
CORE_Static Lexer
lex_make(Arena *token_string_arena, Arena *map_allocator){
Lexer result = {};
lex_init(token_string_arena, map_allocator, &result);
return result;
}
CORE_Static void
lex_restream(Lexer *lexer, String istream, String file){
lex_restream(Parse_Ctx *lexer, String istream, String file){
lexer->stream = {};
lexer->stream.stream = istream;
lexer->stream.line_begin = istream.str;
@@ -605,13 +598,6 @@ lex_restream(Lexer *lexer, String istream, String file){
lex__stream(lexer);
}
CORE_Static Lexer
lex_stream(Arena *token_string_arena, Arena *map_allocator, String istream, String file){
Lexer result = lex_make(token_string_arena, map_allocator);
lex_restream(&result, istream, file);
return result;
}
//-----------------------------------------------------------------------------
// Token metadata
//-----------------------------------------------------------------------------