From 1cba5ccd8d3c95198bf5858af2540d3e1aedfb2d Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 29 Nov 2023 15:38:41 +0000 Subject: Added TOKEN_PP_USE to lexer with implementation --- asm/lexer.c | 10 ++++++++-- asm/lexer.h | 7 ++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/asm/lexer.c b/asm/lexer.c index 5218d16..6358e95 100644 --- a/asm/lexer.c +++ b/asm/lexer.c @@ -24,6 +24,8 @@ const char *token_type_as_cstr(token_type_t type) { switch (type) { + case TOKEN_PP_USE: + return "PP_USE"; case TOKEN_PP_CONST: return "PP_CONST"; case TOKEN_PP_END: @@ -180,6 +182,11 @@ lerr_t tokenise_symbol(buffer_t *buffer, size_t *column, token_t *token) type = TOKEN_PP_CONST; offset = 6; } + else if (sym_size == 4 && strncmp(opcode + 1, "USE", 3) == 0) + { + type = TOKEN_PP_USE; + offset = 4; + } else if (sym_size == 4 && strncmp(opcode + 1, "END", 3) == 0) { type = TOKEN_PP_END; @@ -599,8 +606,7 @@ lerr_t tokenise_buffer(buffer_t *buffer, token_stream_t *tokens_ptr) darr_append_bytes(&tokens, (byte *)&t, sizeof(t)); } } - size_t n_tokens = tokens.used / sizeof(token_t); - tokens.available = n_tokens; + tokens.available = tokens.used / sizeof(token_t); tokens.used = 0; *tokens_ptr = tokens; return LERR_OK; diff --git a/asm/lexer.h b/asm/lexer.h index 432acaf..3434b72 100644 --- a/asm/lexer.h +++ b/asm/lexer.h @@ -17,9 +17,10 @@ typedef enum TokenType { - TOKEN_PP_CONST, - TOKEN_PP_END, - TOKEN_PP_REFERENCE, + TOKEN_PP_CONST, // %const()... + TOKEN_PP_USE, // %use + TOKEN_PP_END, // %end + TOKEN_PP_REFERENCE, // $ TOKEN_GLOBAL, TOKEN_STAR, TOKEN_LITERAL_NUMBER, -- cgit v1.2.3-13-gbd6f