diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-10 00:17:29 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-10 00:17:29 +0330 |
commit | 302cc65d3e59937742c18475d63e22c482176fa7 (patch) | |
tree | 69fdaf179bc71eb39643ca3b709f18bd57866df7 /src/compiler/lexer.c | |
parent | 07cca00060de91569074f61172c9406f01eaefe7 (diff) |
add - * / %
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r-- | src/compiler/lexer.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c index 52702ba..70cd1fb 100644 --- a/src/compiler/lexer.c +++ b/src/compiler/lexer.c @@ -33,12 +33,16 @@ const char *LEXER_TOKEN_STRINGS[] = { "LEXER_TOKEN_SYMBOL_ASSIGN", "LEXER_TOKEN_SYMBOL_COMMA", "LEXER_TOKEN_SYMBOL_PLUS", + "LEXER_TOKEN_SYMBOL_MINUS", + "LEXER_TOKEN_SYMBOL_MULTIPLY", + "LEXER_TOKEN_SYMBOL_DIVIDE", + "LEXER_TOKEN_SYMBOL_MODULO", "LEXER_TOKEN_NONE", }; const char *LEXER_SYMBOL_STRINGS[] = { - ";", "(", ")", "{", "}", "->", ":", "=", ",", "+", + ";", "(", ")", "{", "}", "->", ":", "=", ",", "+", "-", "*", "/", "%", }; const LexerToken LEXER_SYMBOL_TOKENS[] = { LEXER_TOKEN_SYMBOL_EOL, @@ -51,6 +55,10 @@ const LexerToken LEXER_SYMBOL_TOKENS[] = { LEXER_TOKEN_SYMBOL_ASSIGN, LEXER_TOKEN_SYMBOL_COMMA, LEXER_TOKEN_SYMBOL_PLUS, + LEXER_TOKEN_SYMBOL_MINUS, + LEXER_TOKEN_SYMBOL_MULTIPLY, + LEXER_TOKEN_SYMBOL_DIVIDE, + LEXER_TOKEN_SYMBOL_MODULO, }; const size_t LEXER_SYMBOL_SIZE = sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS); @@ -119,6 +127,9 @@ LexerNodeArray lexer(char *str) { goto RETURN_ERROR; } } + } else { + --iter; + c = *iter; } } if (isSpace(c)) { @@ -198,6 +209,10 @@ void lexerPushClear(LexerNodeArray *array, size_t *array_size, char *iter, case LEXER_TOKEN_SYMBOL_ASSIGN: case LEXER_TOKEN_SYMBOL_COMMA: case LEXER_TOKEN_SYMBOL_PLUS: + case LEXER_TOKEN_SYMBOL_MINUS: + case LEXER_TOKEN_SYMBOL_MULTIPLY: + case LEXER_TOKEN_SYMBOL_DIVIDE: + case LEXER_TOKEN_SYMBOL_MODULO: if (*array_size == array->size) { *array_size += 1 + *array_size / 2; array->data = |