summaryrefslogtreecommitdiff
path: root/src/compiler/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/lexer.c')
-rw-r--r--src/compiler/lexer.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c
index 2b7a789..54b78ec 100644
--- a/src/compiler/lexer.c
+++ b/src/compiler/lexer.c
@@ -34,6 +34,7 @@ const char *LEXER_TOKEN_STRINGS[] = {
"LEXER_TOKEN_KEYWORD_IF",
"LEXER_TOKEN_KEYWORD_ELSE",
"LEXER_TOKEN_KEYWORD_WHILE",
+ "LEXER_TOKEN_KEYWORD_COMPTIME",
"LEXER_TOKEN_NUMBER",
@@ -104,22 +105,23 @@ const size_t LEXER_SYMBOL_SIZE =
sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS);
const char *LEXER_KEYWORD_STRINGS[] = {
- "type", "void", "i8", "u8", "i16", "u16", "i32", "u32",
- "i64", "u64", "f16", "f32", "f64", "f128", "bool", "print_u64",
- "return", "true", "false", "if", "else", "while",
+ "type", "void", "i8", "u8", "i16", "u16", "i32", "u32",
+ "i64", "u64", "f16", "f32", "f64", "f128", "bool", "print_u64",
+ "return", "true", "false", "if", "else", "while", "comptime",
};
const LexerToken LEXER_KEYWORD_TOKENS[] = {
- LEXER_TOKEN_KEYWORD_TYPE, LEXER_TOKEN_KEYWORD_VOID,
- LEXER_TOKEN_KEYWORD_I8, LEXER_TOKEN_KEYWORD_U8,
- LEXER_TOKEN_KEYWORD_I16, LEXER_TOKEN_KEYWORD_U16,
- LEXER_TOKEN_KEYWORD_I32, LEXER_TOKEN_KEYWORD_U32,
- LEXER_TOKEN_KEYWORD_I64, LEXER_TOKEN_KEYWORD_U64,
- LEXER_TOKEN_KEYWORD_F16, LEXER_TOKEN_KEYWORD_F32,
- LEXER_TOKEN_KEYWORD_F64, LEXER_TOKEN_KEYWORD_F128,
- LEXER_TOKEN_KEYWORD_BOOL, LEXER_TOKEN_KEYWORD_PRINT_U64,
- LEXER_TOKEN_KEYWORD_RETURN, LEXER_TOKEN_KEYWORD_TRUE,
- LEXER_TOKEN_KEYWORD_FALSE, LEXER_TOKEN_KEYWORD_IF,
- LEXER_TOKEN_KEYWORD_ELSE, LEXER_TOKEN_KEYWORD_WHILE,
+ LEXER_TOKEN_KEYWORD_TYPE, LEXER_TOKEN_KEYWORD_VOID,
+ LEXER_TOKEN_KEYWORD_I8, LEXER_TOKEN_KEYWORD_U8,
+ LEXER_TOKEN_KEYWORD_I16, LEXER_TOKEN_KEYWORD_U16,
+ LEXER_TOKEN_KEYWORD_I32, LEXER_TOKEN_KEYWORD_U32,
+ LEXER_TOKEN_KEYWORD_I64, LEXER_TOKEN_KEYWORD_U64,
+ LEXER_TOKEN_KEYWORD_F16, LEXER_TOKEN_KEYWORD_F32,
+ LEXER_TOKEN_KEYWORD_F64, LEXER_TOKEN_KEYWORD_F128,
+ LEXER_TOKEN_KEYWORD_BOOL, LEXER_TOKEN_KEYWORD_PRINT_U64,
+ LEXER_TOKEN_KEYWORD_RETURN, LEXER_TOKEN_KEYWORD_TRUE,
+ LEXER_TOKEN_KEYWORD_FALSE, LEXER_TOKEN_KEYWORD_IF,
+ LEXER_TOKEN_KEYWORD_ELSE, LEXER_TOKEN_KEYWORD_WHILE,
+ LEXER_TOKEN_KEYWORD_COMPTIME,
};
const size_t LEXER_KEYWORD_SIZE =
sizeof(LEXER_KEYWORD_TOKENS) / sizeof(*LEXER_KEYWORD_TOKENS);
@@ -268,6 +270,7 @@ void lexerPushClear(LexerNodeArray *array, size_t *array_size, char *iter,
case LEXER_TOKEN_KEYWORD_IF:
case LEXER_TOKEN_KEYWORD_ELSE:
case LEXER_TOKEN_KEYWORD_WHILE:
+ case LEXER_TOKEN_KEYWORD_COMPTIME:
case LEXER_TOKEN_NUMBER:
case LEXER_TOKEN_SYMBOL_EOL:
case LEXER_TOKEN_SYMBOL_OPEN_PARENTHESIS: