aboutsummaryrefslogtreecommitdiff
path: root/src/lexer.c
diff options
context:
space:
mode:
authorc+12023-10-10 11:26:44 -0400
committerc+12023-10-10 11:26:44 -0400
commit58c7a71a50318940e747c365cc3f207dba432977 (patch)
tree7d173f5433fba1b01c531610a0bf70684b8ca1de /src/lexer.c
parent78befa147eccfb169bf994da3d9bfba9be3631a6 (diff)
fixed source.c, fixed preprocessor mem leaks, implemented new lexer
Diffstat (limited to 'src/lexer.c')
-rw-r--r--src/lexer.c11
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);
-
}
}