#ifndef RZ_LEXER_H #define RZ_LEXER_H #include "commons.h" #include "node.h" #include "err.h" typedef struct { err_t* err; char* source; size_t cursor; int line; } lexer_t; void lexer_init(lexer_t* lexer, char const* source, err_t* err); void lexer_free(lexer_t* lexer); node_t* lexer_try_new_next(lexer_t* lexer); NodeType lexer_peek(lexer_t* lexer, int lookahead); void lexer_skip_spaces(lexer_t* lexer); void lexer_skip_next(lexer_t* lexer); node_t* lexer_try_new_keyword(lexer_t* lexer, char* kw, NodeType type, int has_value, int is_kw); node_t* lexer_try_new_str(lexer_t* lexer); int lexer_is_sep(lexer_t* lexer, size_t idx); #endif