From 902a81528b9d2edcf93226a2ca13da6fcc1839e5 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 23 Dec 2019 08:57:48 +0100 Subject: wip: function pointers and other stuff --- src/tokenizer.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/tokenizer.c') 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"; -- cgit v1.2.3