aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tokenizer.c')
-rw-r--r--src/tokenizer.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/tokenizer.c b/src/tokenizer.c
index c93add3..73dd83d 100644
--- a/src/tokenizer.c
+++ b/src/tokenizer.c
@@ -203,6 +203,10 @@ static CHECK_RESULT int __tokenizer_next(Tokenizer *self, Token *token) {
if(am_memeql(self->value.identifier.data, "else", 4)) {
*token = TOK_ELSE;
return TOKENIZER_OK;
+ } else if(am_memeql(self->value.identifier.data, "true", 4)) {
+ *token = TOK_BOOL;
+ self->bool_value = bool_true;
+ return TOKENIZER_OK;
}
break;
}
@@ -213,6 +217,10 @@ static CHECK_RESULT int __tokenizer_next(Tokenizer *self, Token *token) {
} else if(am_memeql(self->value.identifier.data, "while", 5)) {
*token = TOK_WHILE;
return TOKENIZER_OK;
+ } else if(am_memeql(self->value.identifier.data, "false", 5)) {
+ *token = TOK_BOOL;
+ self->bool_value = bool_false;
+ return TOKENIZER_OK;
}
break;
}
@@ -259,6 +267,8 @@ static CHECK_RESULT int __tokenizer_next(Tokenizer *self, Token *token) {
return TOKENIZER_ERR;
}
+ /* TODO: Check if the number fits in the result bits */
+
if(dot_index == -1) {
int result = string_to_integer_unchecked(number_str, &self->number.value.integer);
if(result != 0) {
@@ -542,6 +552,12 @@ static BufferView tokenizer_expected_token_as_string(Token token) {
case TOK_STRING:
str = "string";
break;
+ case TOK_NUMBER:
+ str = "number";
+ break;
+ case TOK_BOOL:
+ str = "bool";
+ break;
case TOK_FN:
str = "fn";
break;
@@ -572,9 +588,6 @@ static BufferView tokenizer_expected_token_as_string(Token token) {
case TOK_IMPORT:
str = "import";
break;
- case TOK_NUMBER:
- str = "number";
- break;
case TOK_BINOP:
/* TODO: binop_to_string */
str = "binop";