diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-04-29 22:03:17 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-04-29 22:03:17 +0330 |
commit | 3a4fa4b89280046885dc044ce4f9761f5eeaa9e1 (patch) | |
tree | 4fe36236a33349c034e44f455c1dca90703c5842 /src/compiler/lexer.c | |
parent | e6e44774556bf6172c1577268cf9f013a4157ae2 (diff) |
add a lot of builtins
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r-- | src/compiler/lexer.c | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c index 651f1df..66fb81b 100644 --- a/src/compiler/lexer.c +++ b/src/compiler/lexer.c @@ -16,6 +16,18 @@ const char *LEXER_TOKEN_STRINGS[] = { "LEXER_TOKEN_BUILTIN_IS_COMPTIME", "LEXER_TOKEN_BUILTIN_STACK_ALLOC", "LEXER_TOKEN_BUILTIN_HEAP_ALLOC", + "LEXER_TOKEN_BUILTIN_NEG", + "LEXER_TOKEN_BUILTIN_ADD", + "LEXER_TOKEN_BUILTIN_SUB", + "LEXER_TOKEN_BUILTIN_MUL", + "LEXER_TOKEN_BUILTIN_DIV", + "LEXER_TOKEN_BUILTIN_MOD", + "LEXER_TOKEN_BUILTIN_EQUAL", + "LEXER_TOKEN_BUILTIN_NOT_EQUAL", + "LEXER_TOKEN_BUILTIN_GREATER", + "LEXER_TOKEN_BUILTIN_SMALLER", + "LEXER_TOKEN_BUILTIN_GREATER_OR_EQUAL", + "LEXER_TOKEN_BUILTIN_SMALLER_OR_EQUAL", "LEXER_TOKEN_KEYWORD_TYPE", "LEXER_TOKEN_KEYWORD_VOID", "LEXER_TOKEN_KEYWORD_I8", @@ -175,13 +187,45 @@ static const size_t LEXER_KEYWORD_SIZE = sizeof(LEXER_KEYWORD_TOKENS) / sizeof(*LEXER_KEYWORD_TOKENS); static const char *LEXER_BUILTIN_STRINGS[] = { - "cast", "typeOf", "import", "isComptime", "stackAlloc", "heapAlloc", + "cast", + "typeOf", + "import", + "isComptime", + "stackAlloc", + "heapAlloc", + "neg", + "add", + "sub", + "mul", + "div", + "mod", + "equal", + "notEqual", + "greater", + "smaller", + "greaterOrEqual", + "smallerOrEqual", }; static const LexerToken LEXER_BUILTIN_TOKENS[] = { - LEXER_TOKEN_BUILTIN_CAST, LEXER_TOKEN_BUILTIN_TYPE_OF, - LEXER_TOKEN_BUILTIN_IMPORT, LEXER_TOKEN_BUILTIN_IS_COMPTIME, - LEXER_TOKEN_BUILTIN_STACK_ALLOC, LEXER_TOKEN_BUILTIN_HEAP_ALLOC, + LEXER_TOKEN_BUILTIN_CAST, + LEXER_TOKEN_BUILTIN_TYPE_OF, + LEXER_TOKEN_BUILTIN_IMPORT, + LEXER_TOKEN_BUILTIN_IS_COMPTIME, + LEXER_TOKEN_BUILTIN_STACK_ALLOC, + LEXER_TOKEN_BUILTIN_HEAP_ALLOC, + LEXER_TOKEN_BUILTIN_NEG, + LEXER_TOKEN_BUILTIN_ADD, + LEXER_TOKEN_BUILTIN_SUB, + LEXER_TOKEN_BUILTIN_MUL, + LEXER_TOKEN_BUILTIN_DIV, + LEXER_TOKEN_BUILTIN_MOD, + LEXER_TOKEN_BUILTIN_EQUAL, + LEXER_TOKEN_BUILTIN_NOT_EQUAL, + LEXER_TOKEN_BUILTIN_GREATER, + LEXER_TOKEN_BUILTIN_SMALLER, + LEXER_TOKEN_BUILTIN_GREATER_OR_EQUAL, + LEXER_TOKEN_BUILTIN_SMALLER_OR_EQUAL, }; static const size_t LEXER_BUILTIN_SIZE = sizeof(LEXER_BUILTIN_TOKENS) / sizeof(*LEXER_BUILTIN_TOKENS); @@ -430,6 +474,18 @@ lexerPushClear(LexerNodeArray *array, size_t *array_size, char *iter, case LEXER_TOKEN_BUILTIN_IS_COMPTIME: case LEXER_TOKEN_BUILTIN_STACK_ALLOC: case LEXER_TOKEN_BUILTIN_HEAP_ALLOC: + case LEXER_TOKEN_BUILTIN_NEG: + case LEXER_TOKEN_BUILTIN_ADD: + case LEXER_TOKEN_BUILTIN_SUB: + case LEXER_TOKEN_BUILTIN_MUL: + case LEXER_TOKEN_BUILTIN_DIV: + case LEXER_TOKEN_BUILTIN_MOD: + case LEXER_TOKEN_BUILTIN_EQUAL: + case LEXER_TOKEN_BUILTIN_NOT_EQUAL: + case LEXER_TOKEN_BUILTIN_GREATER: + case LEXER_TOKEN_BUILTIN_SMALLER: + case LEXER_TOKEN_BUILTIN_GREATER_OR_EQUAL: + case LEXER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case LEXER_TOKEN_SYMBOL_CLOSE_BRACKET: case LEXER_TOKEN_SYMBOL_OPEN_BRACKET: if (*array_size == array->size) { |