From d5c86c4eea607f8a6ffba13417d6e7faa399a795 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 18 Nov 2024 09:54:27 +0000 Subject: [PATCH] frontend: move token printing code to a separate file --- frontend/cmd/compile.c | 60 ++------------------------------------ frontend/debug.c | 65 ++++++++++++++++++++++++++++++++++++++++++ frontend/debug.h | 8 ++++++ 3 files changed, 75 insertions(+), 58 deletions(-) create mode 100644 frontend/debug.c create mode 100644 frontend/debug.h diff --git a/frontend/cmd/compile.c b/frontend/cmd/compile.c index dc4ccff..fd1210c 100644 --- a/frontend/cmd/compile.c +++ b/frontend/cmd/compile.c @@ -1,3 +1,4 @@ +#include "../debug.h" #include "cmd.h" #include @@ -46,64 +47,7 @@ static int compile_file(const char *path) break; } - switch (tok->t_type) { - case IVY_TOK_KEYWORD: - b_fputs("[magenta]", stdout); - break; - case IVY_TOK_SYMBOL: - b_fputs("[blue]", stdout); - break; - case IVY_TOK_ATOM: - b_fputs("[yellow]", stdout); - break; - case IVY_TOK_NUMBER: - b_fputs("[yellow]", stdout); - break; - case IVY_TOK_LABEL: - b_fputs("[red]", stdout); - break; - case IVY_TOK_IDENT: - b_fputs("[cyan]", stdout); - break; - case IVY_TOK_STRING: - b_fputs("[green]", stdout); - break; - case IVY_TOK_STR_START: - b_fputs("[green]", stdout); - break; - case IVY_TOK_STR_END: - b_fputs("[green]", stdout); - break; - case IVY_TOK_LINEFEED: - b_fputs("[bright,black]", stdout); - break; - default: - break; - } - - printf("%s", ivy_lex_token_type_to_string(tok->t_type)); - - switch (tok->t_type) { - case IVY_TOK_IDENT: - case IVY_TOK_LABEL: - case IVY_TOK_STRING: - case IVY_TOK_ATOM: - printf("(%s)", tok->t_str); - break; - case IVY_TOK_SYMBOL: - printf("(%s)", ivy_symbol_to_string(tok->t_symbol)); - break; - case IVY_TOK_KEYWORD: - printf("(%s)", ivy_keyword_to_string(tok->t_keyword)); - break; - case IVY_TOK_NUMBER: - printf("(%llu)", tok->t_number); - break; - default: - break; - } - - b_fputs("[reset]\n", stdout); + print_lex_token(tok); } int r = (status == IVY_OK || status == IVY_ERR_EOF) ? 0 : -1; diff --git a/frontend/debug.c b/frontend/debug.c new file mode 100644 index 0000000..62bc86d --- /dev/null +++ b/frontend/debug.c @@ -0,0 +1,65 @@ +#include +#include +#include + +extern void print_lex_token(struct ivy_token *tok) +{ + switch (tok->t_type) { + case IVY_TOK_KEYWORD: + b_fputs("[magenta]", stdout); + break; + case IVY_TOK_SYMBOL: + b_fputs("[blue]", stdout); + break; + case IVY_TOK_ATOM: + b_fputs("[yellow]", stdout); + break; + case IVY_TOK_NUMBER: + b_fputs("[yellow]", stdout); + break; + case IVY_TOK_LABEL: + b_fputs("[red]", stdout); + break; + case IVY_TOK_IDENT: + b_fputs("[cyan]", stdout); + break; + case IVY_TOK_STRING: + b_fputs("[green]", stdout); + break; + case IVY_TOK_STR_START: + b_fputs("[green]", stdout); + break; + case IVY_TOK_STR_END: + b_fputs("[green]", stdout); + break; + case IVY_TOK_LINEFEED: + b_fputs("[bright,black]", stdout); + break; + default: + break; + } + + printf("%s", ivy_lex_token_type_to_string(tok->t_type)); + + switch (tok->t_type) { + case IVY_TOK_IDENT: + case IVY_TOK_LABEL: + case IVY_TOK_STRING: + case IVY_TOK_ATOM: + printf("(%s)", tok->t_str); + break; + case IVY_TOK_SYMBOL: + printf("(%s)", ivy_symbol_to_string(tok->t_symbol)); + break; + case IVY_TOK_KEYWORD: + printf("(%s)", ivy_keyword_to_string(tok->t_keyword)); + break; + case IVY_TOK_NUMBER: + printf("(%llu)", tok->t_number); + break; + default: + break; + } + + b_fputs("[reset]\n", stdout); +} diff --git a/frontend/debug.h b/frontend/debug.h new file mode 100644 index 0000000..9f48c9e --- /dev/null +++ b/frontend/debug.h @@ -0,0 +1,8 @@ +#ifndef DEBUG_H_ +#define DEBUG_H_ + +struct ivy_token; + +extern void print_lex_token(struct ivy_token *tok); + +#endif