printing things prettier
This commit is contained in:
parent
19e9b8dfee
commit
8571900105
11
src/colors.h
Normal file
11
src/colors.h
Normal 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
|
@ -316,8 +316,6 @@ lexer_get_tokens (struct lexer *l)
|
||||
void
|
||||
lexer_print (struct lexer *l)
|
||||
{
|
||||
puts ("Lexer:");
|
||||
|
||||
for (unsigned int i = 0; i < l->tokens.length; i++)
|
||||
{
|
||||
struct token *t = l->tokens.elements[i];
|
||||
|
15
src/main.c
15
src/main.c
@ -6,6 +6,8 @@
|
||||
#include "lexer.h"
|
||||
#include "parser.h"
|
||||
|
||||
#include "colors.h"
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
@ -19,11 +21,24 @@ main (int argc, char **argv)
|
||||
if (!buffer_read (argv[1], &code))
|
||||
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 ();
|
||||
lexer_set_source (&code, &lexer);
|
||||
lexer_lex (&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));
|
||||
parser_parse (&parser);
|
||||
parser_print (&parser);
|
||||
|
24
src/parser.c
24
src/parser.c
@ -175,8 +175,11 @@ parser_parse (struct parser *p)
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
case EXPR_INT:
|
||||
@ -186,20 +189,20 @@ expr_print (struct expression *expr)
|
||||
printf ("Float[%f]", expr->floating);
|
||||
break;
|
||||
case EXPR_BINOP:
|
||||
printf ("BinOp('%s', ", buffer_get (&expr->binop.op->lexeme));
|
||||
expr_print (expr->binop.left);
|
||||
printf (", ");
|
||||
expr_print (expr->binop.right);
|
||||
printf ("BinOp('%s',\n", buffer_get (&expr->binop.op->lexeme));
|
||||
expr_print (expr->binop.left, i + 1);
|
||||
printf (",\n");
|
||||
expr_print (expr->binop.right, i + 1);
|
||||
printf (")");
|
||||
break;
|
||||
case EXPR_UNOP:
|
||||
printf ("UnOp('%s', ", buffer_get (&expr->unop.op->lexeme));
|
||||
expr_print (expr->unop.operand);
|
||||
printf ("UnOp('%s',\n", buffer_get (&expr->unop.op->lexeme));
|
||||
expr_print (expr->unop.operand, i + 1);
|
||||
printf (")");
|
||||
break;
|
||||
case EXPR_GROUP:
|
||||
printf ("Grouping(");
|
||||
expr_print (expr->grouping.value);
|
||||
printf ("Grouping(\n");
|
||||
expr_print (expr->grouping.value, i + 1);
|
||||
printf (")");
|
||||
break;
|
||||
default:
|
||||
@ -211,11 +214,10 @@ expr_print (struct expression *expr)
|
||||
void
|
||||
parser_print (struct parser *p)
|
||||
{
|
||||
puts ("Parsed Ast:");
|
||||
for (unsigned int i = 0; i < vector_len (&p->ast); i++)
|
||||
{
|
||||
struct expression *expr = (struct expression *)vector_at (i, &p->ast);
|
||||
expr_print (expr);
|
||||
expr_print (expr, 0);
|
||||
printf ("\n");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user