#pragma once #include #include #include #include "globals.h" #define LEX_BUF_SIZE 4096 typedef struct Lexer { uint32_t linepos; uint32_t lineno; FILE *source; int flag_EOF; char *buffer; char *curr; size_t bytes_in_buffer; } Lexer; Lexer *new_lexer(); void lexer_set_source(Lexer *lexer, FILE *source); void lexer_fill_buffer(Lexer *lexer); void lexer_consume(Lexer *lexer); char lexer_curr(Lexer *lexer); char lexer_peek(Lexer *lexer); Token lexer_next_token(Lexer *lexer); void free_lexer(Lexer *lexer);