From 7d9fb2c733c8c64f6f74eefa0eea35b36be102cd Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Thu, 26 Mar 2026 16:21:29 -0400 Subject: let's go we can parse return zero most useful program ever --- main.c | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 6fc75e9..c86efdd 100644 --- a/main.c +++ b/main.c @@ -1,34 +1,30 @@ #include "lexer.h" +#include "parser.h" #include #include -int main(int argc, char** argv) { - if (argc < 2) { - fprintf(stderr, "ccc: no input files\n"); - return 1; - } - +void test_lexer(int argc, char** argv) { struct token token; for (int i = 1; i < argc; i++) { lexer_load(argv[i]); while (lexer_pop(&token)) { printf("[%s]: ", argv[i]); switch (token.type) { - case IDENTIFIER: - printf("got identifier: %s\n", token.data.identifier); - free(token.data.identifier); + case TK_IDENT: + printf("got identifier: %s\n", token.data.ident); + free(token.data.ident); break; - case STR_LIT: + case TK_STR_LIT: printf("got string: %s\n", token.data.str_lit); free(token.data.str_lit); break; - case INT_LIT: + case TK_INT_LIT: printf("got int: %lld\n", token.data.int_lit); break; - case FLOAT_LIT: + case TK_FLOAT_LIT: printf("got float: %lf\n", token.data.float_lit); break; - case CHAR_LIT: + case TK_CHAR_LIT: printf("got char: %c\n", token.data.char_lit); break; default: @@ -38,3 +34,25 @@ int main(int argc, char** argv) { lexer_close(); } } + +void gdb_break_here() {} + +void test_parser(int argc, char** argv) { + struct root_node* root; + struct root_node** p_cur = &root; + for (int i = 1; i < argc; i++) { + *p_cur = parse(argv[i]); + p_cur = &((*p_cur)->next); + } + gdb_break_here(); + ast_destroy(root); +} + +int main(int argc, char** argv) { + if (argc < 2) { + fprintf(stderr, "ccc: no input files\n"); + return 1; + } + + test_parser(argc, argv); +} -- cgit v1.2.3