Fixed print formatting.
This commit is contained in:
parent
1c0dd7aa0b
commit
950c25bace
@ -3,10 +3,12 @@
|
|||||||
#include "include/ast.h"
|
#include "include/ast.h"
|
||||||
#include "include/util.h"
|
#include "include/util.h"
|
||||||
|
|
||||||
|
#if 0
|
||||||
static char* asttype_names[] = {
|
static char* asttype_names[] = {
|
||||||
[AST_TYPE_CALL] = "CALL",
|
[AST_TYPE_CALL] = "CALL",
|
||||||
[AST_TYPE_NUM] = "NUMBER",
|
[AST_TYPE_NUM] = "NUMBER",
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
ASTTypeNum* ast_type_num_init(int val) {
|
ASTTypeNum* ast_type_num_init(int val) {
|
||||||
talloc(ASTTypeNum, num);
|
talloc(ASTTypeNum, num);
|
||||||
|
@ -18,15 +18,21 @@
|
|||||||
#define log_dbgf(msg, ...)
|
#define log_dbgf(msg, ...)
|
||||||
#endif // ifdef DBG else
|
#endif // ifdef DBG else
|
||||||
|
|
||||||
|
// Resent color code.
|
||||||
|
#define COL_RESET "\e[0m"
|
||||||
|
// Bold while color code.
|
||||||
|
#define COL_BWHI "\e[1;37m"
|
||||||
|
|
||||||
// Start in indent block.
|
// Start in indent block.
|
||||||
#define INDENT_BEGIN(ILVL) \
|
#define INDENT_BEGIN(ILVL) \
|
||||||
|
int INDENT_lvl = ILVL; \
|
||||||
Dstr* INDENT_spacing = dstr_init(); \
|
Dstr* INDENT_spacing = dstr_init(); \
|
||||||
for (int INDENT_j = 0; INDENT_j < ILVL; INDENT_j++) \
|
for (int INDENT_j = 0; INDENT_j < ILVL; INDENT_j++) \
|
||||||
dstr_appendch(INDENT_spacing, ' ');
|
dstr_appendch(INDENT_spacing, ' ');
|
||||||
|
|
||||||
// Print & indent the title of a section.
|
// Print & indent the title of a section.
|
||||||
#define INDENT_TITLE(THING, WHERE) \
|
#define INDENT_TITLE(THING, WHERE) \
|
||||||
printf("%s" THING " @ %p\n", INDENT_spacing->buf, WHERE);
|
printf("%s" COL_BWHI THING " @ %p\n" COL_RESET, INDENT_spacing->buf, WHERE);
|
||||||
|
|
||||||
// Print & indent a thing.
|
// Print & indent a thing.
|
||||||
#define INDENT_FIELD(FIELD, VAL, ...) \
|
#define INDENT_FIELD(FIELD, VAL, ...) \
|
||||||
@ -40,6 +46,15 @@
|
|||||||
// Print & indent a thing without any newline.
|
// Print & indent a thing without any newline.
|
||||||
#define INDENT_FIELD_NONL(FIELD) printf("%s " FIELD ": ", INDENT_spacing->buf);
|
#define INDENT_FIELD_NONL(FIELD) printf("%s " FIELD ": ", INDENT_spacing->buf);
|
||||||
|
|
||||||
|
// Print an array A of N things, by calling the function F.
|
||||||
|
#define INDENT_FIELD_LIST(FIELD, A, N, F) \
|
||||||
|
printf("%s " FIELD ": [\n", INDENT_spacing->buf); \
|
||||||
|
for (int INDENT_i = 0; INDENT_i < N; INDENT_i++) { \
|
||||||
|
F(A[INDENT_i], INDENT_lvl + 2); \
|
||||||
|
/*printf("%s \n", INDENT_spacing->buf); */ \
|
||||||
|
} \
|
||||||
|
printf("%s ]\n", INDENT_spacing->buf);
|
||||||
|
|
||||||
// End an indent block.
|
// End an indent block.
|
||||||
#define INDENT_END dstr_destroy(INDENT_spacing);
|
#define INDENT_END dstr_destroy(INDENT_spacing);
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "include/lexer.h"
|
#include "include/lexer.h"
|
||||||
#include "include/dstr.h"
|
#include "include/dstr.h"
|
||||||
|
#include "include/token.h"
|
||||||
#include "include/util.h"
|
#include "include/util.h"
|
||||||
|
|
||||||
Lexer* lexer_init(char* src) {
|
Lexer* lexer_init(char* src) {
|
||||||
@ -126,12 +127,15 @@ void lexer_print_i(Lexer* lexer, int ilvl) {
|
|||||||
INDENT_FIELD_NL("src", "\"%s\"", lexer->src);
|
INDENT_FIELD_NL("src", "\"%s\"", lexer->src);
|
||||||
INDENT_FIELD("cchar", "'%c'", *lexer->cchar);
|
INDENT_FIELD("cchar", "'%c'", *lexer->cchar);
|
||||||
INDENT_FIELD("ntokens", "%ld", lexer->ntokens);
|
INDENT_FIELD("ntokens", "%ld", lexer->ntokens);
|
||||||
|
INDENT_FIELD_LIST("tokens", lexer->tokens, lexer->ntokens, token_print_i);
|
||||||
|
#if 0
|
||||||
printf("%s tokens: [\n", INDENT_spacing->buf);
|
printf("%s tokens: [\n", INDENT_spacing->buf);
|
||||||
|
|
||||||
for (int i = 0; i < lexer->ntokens; i++) {
|
for (int i = 0; i < lexer->ntokens; i++) {
|
||||||
token_print_i(lexer->tokens[i], ilvl + 2);
|
token_print_i(lexer->tokens[i], ilvl + 2);
|
||||||
printf(",\n\n");
|
printf(",\n\n");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void lexerstate_print_raw(LexerState s) {
|
void lexerstate_print_raw(LexerState s) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user