From 405d0c32ba8a6a065c2a8767295490e4add20498 Mon Sep 17 00:00:00 2001 From: Quinn Stephens Date: Sat, 7 Jun 2025 23:03:12 -0400 Subject: Refactor and begin parser * Added token flags * Added `int` keyword * Moved code from main.c to parser/parser.c * Began work on parsing declarations Signed-off-by: Quinn Stephens --- src/main.c | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index e7a3225..c42239d 100644 --- a/src/main.c +++ b/src/main.c @@ -27,53 +27,28 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include -#include #include #include "lexer.h" #include "log.h" +#include "parser.h" -static const char *src = "void main"; - -static void -tok_error(struct token *tok, const char *fmt, ...) -{ - va_list args; - - fprintf(stderr, "\033[1;97m%d:%d: \033[1;91merror: \033[0m", tok->line, tok->col); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); -} +static const char *src = "int test\nint main"; int main(int argc, char **argv) { struct lexer lexer; - struct token tok; (void)argc; (void)argv; if (!lexer_init(&lexer, src)) { + log_error("Failed to initialize lexer\n"); return EXIT_FAILURE; } - while (lexer_next(&lexer, &tok)) { - if (tok.kind == TK_EOF) { - return EXIT_SUCCESS; - } - - if (tok.kind == TK_UNKNOWN) { - tok_error(&tok, "unrecognized token\n"); - return EXIT_FAILURE; - } - - if (tok.kind == TK_VOID) { - log_debug("got void\n"); - } else if (tok.kind == TK_IDENTIFIER) { - log_debug("got identifier \"%.*s\"\n", tok.len, tok.pos); - } + if (!parser_parse(&lexer)) { + return EXIT_FAILURE; } return EXIT_SUCCESS; -- cgit v1.2.3