aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer.c
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-10-02 01:00:59 +0200
committerdec05eba <dec05eba@protonmail.com>2020-07-25 14:36:46 +0200
commitb124548bcee1ab6d034d4499fe695073566ae37d (patch)
treee4014070ac69a2b821e12cc9264ba54aaa8089f4 /src/tokenizer.c
parent7eb8642c3ace697b03c4fc6edc90ea0ada715689 (diff)
Add !=,<,<=,>,>=; both signed and not
Diffstat (limited to 'src/tokenizer.c')
-rw-r--r--src/tokenizer.c27
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;