diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-23 23:58:30 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-23 23:58:30 +0330 |
commit | 3c9aea642e3b2f4083705f1cd42fa911d35ee696 (patch) | |
tree | d990b2ffdb63161a9aef7cce20e5714461f86085 /src/compiler/lexer.c | |
parent | 093c3bece426686b175db9ddaecd6abc8908fd87 (diff) |
add way to call C functions
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r-- | src/compiler/lexer.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c index 577b009..1fbba2f 100644 --- a/src/compiler/lexer.c +++ b/src/compiler/lexer.c @@ -56,6 +56,8 @@ const char *LEXER_TOKEN_STRINGS[] = { "LEXER_TOKEN_KEYWORD_CODE", "LEXER_TOKEN_KEYWORD_NAMESPACE", "LEXER_TOKEN_KEYWORD_SHAPE_SHIFTER", + "LEXER_TOKEN_KEYWORD_C_LIBRARY", + "LEXER_TOKEN_KEYWORD_C_FUNCTION", "LEXER_TOKEN_NUMBER", "LEXER_TOKEN_CHAR", "LEXER_TOKEN_STRING", @@ -167,15 +169,18 @@ static const size_t LEXER_SYMBOL_SIZE = sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS); static const char *LEXER_KEYWORD_STRINGS[] = { - "type", "void", "i8", "u8", "i16", "u16", - "i32", "u32", "i64", "u64", + "type", "void", "i8", "u8", + "i16", "u16", "i32", "u32", + "i64", "u64", #ifdef FLOAT_16_SUPPORT "f16", #endif - "f32", "f64", "f128", "bool", "return", "true", - "false", "if", "else", "while", "comptime", "null", - "struct", "undefined", "code", "lazy", "namespace", "shape_shifter", - "break", "continue", + "f32", "f64", "f128", "bool", + "return", "true", "false", "if", + "else", "while", "comptime", "null", + "struct", "undefined", "code", "lazy", + "namespace", "shape_shifter", "break", "continue", + "c_library", "c_function", }; static const LexerToken LEXER_KEYWORD_TOKENS[] = { LEXER_TOKEN_KEYWORD_TYPE, LEXER_TOKEN_KEYWORD_VOID, @@ -196,6 +201,7 @@ static const LexerToken LEXER_KEYWORD_TOKENS[] = { LEXER_TOKEN_KEYWORD_CODE, LEXER_TOKEN_KEYWORD_LAZY, LEXER_TOKEN_KEYWORD_NAMESPACE, LEXER_TOKEN_KEYWORD_SHAPE_SHIFTER, LEXER_TOKEN_KEYWORD_BREAK, LEXER_TOKEN_KEYWORD_CONTINUE, + LEXER_TOKEN_KEYWORD_C_LIBRARY, LEXER_TOKEN_KEYWORD_C_FUNCTION, }; static const size_t LEXER_KEYWORD_SIZE = sizeof(LEXER_KEYWORD_TOKENS) / sizeof(*LEXER_KEYWORD_TOKENS); @@ -522,6 +528,8 @@ lexerPushClear(LexerNodeArray *array, size_t *array_size, char const *iter, case LEXER_TOKEN_KEYWORD_SHAPE_SHIFTER: case LEXER_TOKEN_KEYWORD_BREAK: case LEXER_TOKEN_KEYWORD_CONTINUE: + case LEXER_TOKEN_KEYWORD_C_LIBRARY: + case LEXER_TOKEN_KEYWORD_C_FUNCTION: if (*array_size == array->size) { *array_size += 1 + *array_size / 2; array->data = |