printing things prettier

This commit is contained in:
ghostie 2025-07-19 22:21:02 -05:00
parent 19e9b8dfee
commit 8571900105
4 changed files with 39 additions and 13 deletions

11
src/colors.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef __COLORS_H
#define __COLORS_H
#define COLOR_WHITE "\033[0m"
#define COLOR_BLUE "\033[94m"
#define COLOR_CYAN "\033[96m"
#define COLOR_GREEN "\033[92m"
#define COLOR_YELLOW "\033[93m"
#define COLOR_RED "\033[91m"
#endif

View File

@ -316,8 +316,6 @@ lexer_get_tokens (struct lexer *l)
void void
lexer_print (struct lexer *l) lexer_print (struct lexer *l)
{ {
puts ("Lexer:");
for (unsigned int i = 0; i < l->tokens.length; i++) for (unsigned int i = 0; i < l->tokens.length; i++)
{ {
struct token *t = l->tokens.elements[i]; struct token *t = l->tokens.elements[i];

View File

@ -6,6 +6,8 @@
#include "lexer.h" #include "lexer.h"
#include "parser.h" #include "parser.h"
#include "colors.h"
int int
main (int argc, char **argv) main (int argc, char **argv)
{ {
@ -19,11 +21,24 @@ main (int argc, char **argv)
if (!buffer_read (argv[1], &code)) if (!buffer_read (argv[1], &code))
return EXIT_FAILURE; return EXIT_FAILURE;
puts (COLOR_GREEN "\n********************************" COLOR_WHITE);
puts ("Source:");
puts (COLOR_GREEN "********************************\n" COLOR_WHITE);
puts (buffer_get (&code));
puts (COLOR_GREEN "\n********************************" COLOR_WHITE);
puts ("Tokens:");
puts (COLOR_GREEN "********************************\n" COLOR_WHITE);
struct lexer lexer = lexer_create (); struct lexer lexer = lexer_create ();
lexer_set_source (&code, &lexer); lexer_set_source (&code, &lexer);
lexer_lex (&lexer); lexer_lex (&lexer);
lexer_print (&lexer); lexer_print (&lexer);
puts (COLOR_GREEN "\n********************************" COLOR_WHITE);
puts ("AST:");
puts (COLOR_GREEN "********************************\n" COLOR_WHITE);
struct parser parser = parser_create (lexer_get_tokens (&lexer)); struct parser parser = parser_create (lexer_get_tokens (&lexer));
parser_parse (&parser); parser_parse (&parser);
parser_print (&parser); parser_print (&parser);

View File

@ -175,8 +175,11 @@ parser_parse (struct parser *p)
} }
void void
expr_print (struct expression *expr) expr_print (struct expression *expr, unsigned int i)
{ {
for (unsigned int j = 0; j < i; j++)
printf ("\t");
switch (expr->type) switch (expr->type)
{ {
case EXPR_INT: case EXPR_INT:
@ -186,20 +189,20 @@ expr_print (struct expression *expr)
printf ("Float[%f]", expr->floating); printf ("Float[%f]", expr->floating);
break; break;
case EXPR_BINOP: case EXPR_BINOP:
printf ("BinOp('%s', ", buffer_get (&expr->binop.op->lexeme)); printf ("BinOp('%s',\n", buffer_get (&expr->binop.op->lexeme));
expr_print (expr->binop.left); expr_print (expr->binop.left, i + 1);
printf (", "); printf (",\n");
expr_print (expr->binop.right); expr_print (expr->binop.right, i + 1);
printf (")"); printf (")");
break; break;
case EXPR_UNOP: case EXPR_UNOP:
printf ("UnOp('%s', ", buffer_get (&expr->unop.op->lexeme)); printf ("UnOp('%s',\n", buffer_get (&expr->unop.op->lexeme));
expr_print (expr->unop.operand); expr_print (expr->unop.operand, i + 1);
printf (")"); printf (")");
break; break;
case EXPR_GROUP: case EXPR_GROUP:
printf ("Grouping("); printf ("Grouping(\n");
expr_print (expr->grouping.value); expr_print (expr->grouping.value, i + 1);
printf (")"); printf (")");
break; break;
default: default:
@ -211,11 +214,10 @@ expr_print (struct expression *expr)
void void
parser_print (struct parser *p) parser_print (struct parser *p)
{ {
puts ("Parsed Ast:");
for (unsigned int i = 0; i < vector_len (&p->ast); i++) for (unsigned int i = 0; i < vector_len (&p->ast); i++)
{ {
struct expression *expr = (struct expression *)vector_at (i, &p->ast); struct expression *expr = (struct expression *)vector_at (i, &p->ast);
expr_print (expr); expr_print (expr, 0);
printf ("\n"); printf ("\n");
} }
} }