summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lex/lex.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/lex/lex.c b/lex/lex.c
index f98d82c..1c8adbf 100644
--- a/lex/lex.c
+++ b/lex/lex.c
@@ -92,7 +92,7 @@ char lex_seek(struct lex *l, size_t o)
assert(l != NULL);
if (l->buffer[l->pos + o])
return l->buffer[l->pos + o];
- return '\0';
+ return 0;
}
struct token lex_token_create(int tt, char* lexeme, size_t s)
@@ -106,14 +106,17 @@ struct token lex_number(struct lex *l)
int state = 0;
- if (lex_seek(l, 0) == '0') {
+ char current_tkn = lex_seek(l, 0);
+ char next_tkn = lex_seek(l, 1);
+
+ if (current_tkn == '0') {
- if (lex_seek(l, 1) && lex_seek(l, 1) == 'x') {
+ if (next_tkn == 'x') {
state = 1;
l->pos += 2;
}
- if (lex_seek(l, 1) && lex_seek(l, 1) == 'b') {
+ if (next_tkn == 'b') {
state = 2;
l->pos += 2;
}