From 66e278b0752eaa9808687c0dc214b49d7b58e8eb Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Sun, 15 Mar 2026 19:25:26 -0400 Subject: functional lexer --- main.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index e69de29..d2a6ef5 100644 --- a/main.c +++ b/main.c @@ -0,0 +1,39 @@ +#include "lexer.h" +#include +#include + +int main(int argc, char** argv) { + if (argc < 2) { + fprintf(stderr, "ccc: no input files"); + return 1; + } + + struct token token; + for (int i = 1; i < argc; i++) { + lexer_load(argv[i]); + while (lexer_pop(&token)) { + switch (token.type) { + case IDENTIFIER: + printf("got identifier: %s\n", token.data.identifier); + free(token.data.identifier); + break; + case STR_LIT: + printf("got string: %s\n", token.data.str_lit); + free(token.data.str_lit); + break; + case INT_LIT: + printf("got int: %lld\n", token.data.int_lit); + break; + case FLOAT_LIT: + printf("got float: %lf\n", token.data.float_lit); + break; + case CHAR_LIT: + printf("got char: %c\n", token.data.char_lit); + break; + default: + printf("got simple token: %d\n", token.type); + } + } + lexer_close(); + } +} -- cgit v1.2.3