From af74ddb119e3c5167a10bf5468af3960c8db42c0 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 2 Mar 2019 21:48:30 +0100 Subject: Use 'fn' to define closure to make parsing/reading the language easier It caused issues when you have parentheses to surround math expression, for example: ((func() + 34) * 54) is easier to parse if closure has to begin with 'fn'. Also removed requirement for semicolons. Semicolons can't even be used optionally yet. --- src/tokenizer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/tokenizer.c') diff --git a/src/tokenizer.c b/src/tokenizer.c index 41d46fb..b996354 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -146,6 +146,13 @@ static CHECK_RESULT int __tokenizer_next(Tokenizer *self, Token *token) { self->value.identifier = create_buffer_view(self->code.data + identifier_start, self->index - identifier_start); switch(self->value.identifier.size) { + case 2: { + if(am_memeql(self->value.identifier.data, "fn", 2)) { + *token = TOK_FN; + return TOKENIZER_OK; + } + break; + } case 3: { if(am_memeql(self->value.identifier.data, "var", 3)) { *token = TOK_VAR; @@ -324,6 +331,9 @@ static BufferView tokenizer_expected_token_as_string(Token token) { case TOK_STRING: str = "string"; break; + case TOK_FN: + str = "fn"; + break; case TOK_EQUALS: str = "="; break; -- cgit v1.2.3