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
|
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];
|
||||||
|
15
src/main.c
15
src/main.c
@ -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);
|
||||||
|
24
src/parser.c
24
src/parser.c
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user