diff options
author | Himbeer <himbeer@disroot.org> | 2024-09-17 10:37:23 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-09-17 18:01:09 +0200 |
commit | 7eb80b416dd7261fb50334a53d0ad48afcd8f04f (patch) | |
tree | e81b919bfc81f0fd6fea1d5803bfcdda86ed9bf6 /src/lex.c | |
parent | fd90d274ffc332eef43ce80b24acc89c1419b6cb (diff) |
Add token kind matching lexer function
This function reads the next token, compares its kind to a parameter and
returns a boolean indicating whether it matched. If it did not match,
the token is pushed back into the lexer for later reuse.
Diffstat (limited to 'src/lex.c')
-rw-r--r-- | src/lex.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -392,3 +392,14 @@ unlex(struct lexer *lexer, const struct token *in) assert(lexer->un.token == T_NONE); lexer->un = *in; } + +bool +match(struct lexer *lexer, enum lexical_token token) +{ + struct token tmp; + enum lexical_token kind = lex(lexer, &tmp); + if (kind != token) { + unlex(lexer, &tmp); + } + return kind == token; +} |