diff options
Diffstat (limited to 'src/lexer.c')
| -rw-r--r-- | src/lexer.c | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/lexer.c b/src/lexer.c deleted file mode 100644 index b4d11eb..0000000 --- a/src/lexer.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "all.h" -#include "ivec.h" -#include <stdlib.h> - -lexer_t lex_init(str *src) { - lexer_t lx = {0}; - - lx.src = src; - lx.pos = 0; - lx.tokens = (ivec){0}; - - return lx; -} - -void lex_run(lexer_t *lx) { - for (size_t i = 0; i < lx->src->length; i++) { - char c = lx->src->data[i]; - lex_tok_e tok; - switch (c) { - case '+': - tok = LEX_PINC; - break; - case '-': - tok = LEX_PDEC; - break; - case '>': - tok = LEX_VINC; - break; - case '<': - tok = LEX_VDEC; - break; - case '.': - tok = LEX_OUT; - break; - case ',': - tok = LEX_IN; - break; - case '[': - tok = LEX_LB; - break; - case ']': - tok = LEX_RB; - break; - default: - continue; - } - iv_push(&lx->tokens, tok); - } - iv_push(&lx->tokens, LEX_EOF); -} - -void lex_free(lexer_t *lx) { - if (!lx) - return; - iv_free(&lx->tokens); - if (lx->src) { - free(lx->src->data); - free(lx->src); - } - lx->src = NULL; - lx->pos = 0; -} |
