diff options
author | dec05eba <dec05eba@protonmail.com> | 2019-10-02 01:00:59 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-07-25 14:36:46 +0200 |
commit | b124548bcee1ab6d034d4499fe695073566ae37d (patch) | |
tree | e4014070ac69a2b821e12cc9264ba54aaa8089f4 /src/tokenizer.c | |
parent | 7eb8642c3ace697b03c4fc6edc90ea0ada715689 (diff) |
Add !=,<,<=,>,>=; both signed and not
Diffstat (limited to 'src/tokenizer.c')
-rw-r--r-- | src/tokenizer.c | 27 |
1 files changed, 27 insertions, 0 deletions
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; |