aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMustafa Quraish <[email protected]>2022-01-28 10:00:57 -0500
committerMustafa Quraish <[email protected]>2022-01-28 10:00:57 -0500
commit7a099c228c3ef61cd64f62f9d31b5fa558ad37dd (patch)
tree820ce7d400ce71fe5f7d9b396ae1fd2073e420f1
parentUse custom macro for tokens enum+names (diff)
downloadcup-7a099c228c3ef61cd64f62f9d31b5fa558ad37dd.tar.xz
cup-7a099c228c3ef61cd64f62f9d31b5fa558ad37dd.zip
Shorten Lexer method names to next/peek
-rw-r--r--cup/lexer.c12
-rw-r--r--cup/lexer.h5
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