From b124548bcee1ab6d034d4499fe695073566ae37d Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 2 Oct 2019 01:00:59 +0200 Subject: Add !=,<,<=,>,>=; both signed and not --- src/tokenizer.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/tokenizer.c') diff --git a/src/tokenizer.c b/src/tokenizer.c index da6ad53..2c27809 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -339,6 +339,14 @@ static CHECK_RESULT int __tokenizer_next(Tokenizer *self, Token *token) { } else { *token = TOK_EQUALS; } + } else if(c == '!') { + ++self->index; + if(self->index < (int)self->code.size && tokenizer_get_char(self) == '=') { + ++self->index; + SET_BINOP(BINOP_NOT_EQUAL); + } else { + *token = TOK_NOT; + } } else if(c == '&') { ++self->index; if(self->index < (int)self->code.size && tokenizer_get_char(self) == '&') { @@ -347,6 +355,22 @@ static CHECK_RESULT int __tokenizer_next(Tokenizer *self, Token *token) { } else { *token = TOK_AMPERSAND; } + } else if(c == '<') { + ++self->index; + if(self->index < (int)self->code.size && tokenizer_get_char(self) == '=') { + ++self->index; + SET_BINOP(BINOP_LESS_EQUAL); + } else { + SET_BINOP(BINOP_LESS); + } + } else if(c == '>') { + ++self->index; + if(self->index < (int)self->code.size && tokenizer_get_char(self) == '=') { + ++self->index; + SET_BINOP(BINOP_GREATER_EQUAL); + } else { + SET_BINOP(BINOP_GREATER); + } } else if(c == '(') { ++self->index; *token = TOK_OPEN_PAREN; @@ -470,6 +494,9 @@ static BufferView tokenizer_expected_token_as_string(Token token) { case TOK_EQUALS: str = "="; break; + case TOK_NOT: + str = "!"; + break; case TOK_OPEN_PAREN: str = "("; break; -- cgit v1.2.3