diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-08 10:58:07 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-08 10:58:07 +0330 |
commit | cb26dd0fc9c1e33be1c32eb85b04434526004e6a (patch) | |
tree | 8a467633398b2384216c5ac652a2ff86a2b5d3f3 /src/compiler/lexer.c | |
parent | f362a9a64004ba61e326e223d0d28997762afe71 (diff) |
add bool
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r-- | src/compiler/lexer.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c index f4718fa..67db9c7 100644 --- a/src/compiler/lexer.c +++ b/src/compiler/lexer.c @@ -14,8 +14,11 @@ const char *LEXER_TOKEN_STRINGS[] = { "LEXER_TOKEN_KEYWORD_TYPE", "LEXER_TOKEN_KEYWORD_VOID", "LEXER_TOKEN_KEYWORD_U64", + "LEXER_TOKEN_KEYWORD_BOOL", "LEXER_TOKEN_KEYWORD_PRINT_U64", "LEXER_TOKEN_KEYWORD_RETURN", + "LEXER_TOKEN_KEYWORD_TRUE", + "LEXER_TOKEN_KEYWORD_FALSE", "LEXER_TOKEN_NUMBER", @@ -53,12 +56,13 @@ const size_t LEXER_SYMBOL_SIZE = sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS); const char *LEXER_KEYWORD_STRINGS[] = { - "type", "void", "u64", "print_u64", "return", + "type", "void", "u64", "bool", "print_u64", "return", "true", "false", }; const LexerToken LEXER_KEYWORD_TOKENS[] = { - LEXER_TOKEN_KEYWORD_TYPE, LEXER_TOKEN_KEYWORD_VOID, - LEXER_TOKEN_KEYWORD_U64, LEXER_TOKEN_KEYWORD_PRINT_U64, - LEXER_TOKEN_KEYWORD_RETURN, + LEXER_TOKEN_KEYWORD_TYPE, LEXER_TOKEN_KEYWORD_VOID, + LEXER_TOKEN_KEYWORD_U64, LEXER_TOKEN_KEYWORD_BOOL, + LEXER_TOKEN_KEYWORD_PRINT_U64, LEXER_TOKEN_KEYWORD_RETURN, + LEXER_TOKEN_KEYWORD_TRUE, LEXER_TOKEN_KEYWORD_FALSE, }; const size_t LEXER_KEYWORD_SIZE = sizeof(LEXER_KEYWORD_TOKENS) / sizeof(*LEXER_KEYWORD_TOKENS); @@ -139,7 +143,7 @@ LexerNodeArray lexer(char *str) { } else { RETURN_ERROR: free(result.data); - printError("Unexpected character '%c'", iter, iter+1, c); + printError("Unexpected character '%c'", iter, iter + 1, c); return LEXER_NODE_ARRAY_ERROR; } } @@ -178,8 +182,11 @@ void lexerPushClear(LexerNodeArray *array, size_t *array_size, char *iter, case LEXER_TOKEN_KEYWORD_TYPE: case LEXER_TOKEN_KEYWORD_VOID: case LEXER_TOKEN_KEYWORD_U64: + case LEXER_TOKEN_KEYWORD_BOOL: case LEXER_TOKEN_KEYWORD_PRINT_U64: case LEXER_TOKEN_KEYWORD_RETURN: + case LEXER_TOKEN_KEYWORD_TRUE: + case LEXER_TOKEN_KEYWORD_FALSE: case LEXER_TOKEN_NUMBER: case LEXER_TOKEN_SYMBOL_EOL: case LEXER_TOKEN_SYMBOL_OPEN_PARENTHESIS: |