diff options
author | c+1 | 2023-10-10 11:26:44 -0400 |
---|---|---|
committer | c+1 | 2023-10-10 11:26:44 -0400 |
commit | 58c7a71a50318940e747c365cc3f207dba432977 (patch) | |
tree | 7d173f5433fba1b01c531610a0bf70684b8ca1de /src/lexer.c | |
parent | 78befa147eccfb169bf994da3d9bfba9be3631a6 (diff) |
fixed source.c, fixed preprocessor mem leaks, implemented new lexer
Diffstat (limited to 'src/lexer.c')
-rw-r--r-- | src/lexer.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lexer.c b/src/lexer.c index e9475b6..efdc718 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -13,6 +13,7 @@ lexer_t* lexer_init(char* src) { lexer->src = src; lexer->state = LEXER_STATE_REG; lexer->tokenl = NULL; + lexer->tokenl_last = NULL; lexer->tokenc = 0; return lexer; @@ -25,8 +26,13 @@ void lexer_destroy(lexer_t* lexer) { void lexer_add_token(lexer_t* lexer, token_t* token) { token_t* t; - t = token_last(lexer->tokenl)->nxt; - t = token; + if (lexer->tokenl) { + lexer->tokenl_last->nxt = token; + lexer->tokenl_last = token; + } else { + lexer->tokenl = token; + lexer->tokenl_last = token; + } log_inf("token/v:%s\t/t:%d", token->val, token->type); @@ -53,7 +59,6 @@ void lexer_do_reg(lexer_t* lexer) { break; default: lexer_add_current_char(lexer, TOKEN_UNKNOWN); - } } |