diff options
| author | Mustafa Quraish <[email protected]> | 2022-01-28 10:00:57 -0500 |
|---|---|---|
| committer | Mustafa Quraish <[email protected]> | 2022-01-28 10:00:57 -0500 |
| commit | 7a099c228c3ef61cd64f62f9d31b5fa558ad37dd (patch) | |
| tree | 820ce7d400ce71fe5f7d9b396ae1fd2073e420f1 | |
| parent | Use custom macro for tokens enum+names (diff) | |
| download | cup-7a099c228c3ef61cd64f62f9d31b5fa558ad37dd.tar.xz cup-7a099c228c3ef61cd64f62f9d31b5fa558ad37dd.zip | |
Shorten Lexer method names to next/peek
| -rw-r--r-- | cup/lexer.c | 12 | ||||
| -rw-r--r-- | cup/lexer.h | 5 |
2 files changed, 10 insertions, 7 deletions
diff --git a/cup/lexer.c b/cup/lexer.c index 1109294..9f9af90 100644 --- a/cup/lexer.c +++ b/cup/lexer.c @@ -14,7 +14,7 @@ Lexer Lexer_new(char *filename, char *src, i64 len) return self; } -Location Lexer_loc(Lexer *lexer) +static Location Lexer_loc(Lexer *lexer) { Location loc = {0}; loc.filename = lexer->filename; @@ -79,7 +79,7 @@ static Token Lexer_make_token(Lexer *lexer, TokenType type, int inc_amount) return token; } -Token Lexer_get_next_token(Lexer *lexer) +Token Lexer_next(Lexer *lexer) { while (lexer->pos < lexer->len) { switch (lexer->src[lexer->pos]) @@ -115,12 +115,16 @@ Token Lexer_get_next_token(Lexer *lexer) case '+': { if (peek(lexer, 1) == '+') return Lexer_make_token(lexer, TOKEN_PLUSPLUS, 2); + if (peek(lexer, 1) == '=') + return Lexer_make_token(lexer, TOKEN_PLUSEQUALS, 2); return Lexer_make_token(lexer, TOKEN_PLUS, 1); } case '-': { if (peek(lexer, 1) == '-') return Lexer_make_token(lexer, TOKEN_MINUSMINUS, 2); + if (peek(lexer, 1) == '=') + return Lexer_make_token(lexer, TOKEN_MINUSEQUALS, 2); return Lexer_make_token(lexer, TOKEN_MINUS, 1); } @@ -181,10 +185,10 @@ Token Lexer_get_next_token(Lexer *lexer) return Token_from_type(TOKEN_EOF, Lexer_loc(lexer)); } -Token Lexer_peek_next_token(Lexer *lexer) +Token Lexer_peek(Lexer *lexer) { i64 pos = lexer->pos; - Token token = Lexer_get_next_token(lexer); + Token token = Lexer_next(lexer); lexer->pos = pos; return token; }
\ No newline at end of file diff --git a/cup/lexer.h b/cup/lexer.h index c1adb85..f710d3d 100644 --- a/cup/lexer.h +++ b/cup/lexer.h @@ -14,7 +14,6 @@ typedef struct { } Lexer; Lexer Lexer_new(char *filename, char *src, i64 len); -Location Lexer_loc(Lexer *lexer); -Token Lexer_get_next_token(Lexer *lexer); -Token Lexer_peek_next_token(Lexer *lexer);
\ No newline at end of file +Token Lexer_next(Lexer *lexer); +Token Lexer_peek(Lexer *lexer);
\ No newline at end of file |