From b3c7c4633cdd0dedf3e329251fc7a6728bc041b5 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Wed, 22 Jun 2016 00:49:24 +0200 Subject: template-parser: added some ast debug --- src/blogc.c | 12 ++++++++-- src/template-parser.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/template-parser.h | 1 + 3 files changed, 76 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/blogc.c b/src/blogc.c index cdc6aeb..10f341f 100644 --- a/src/blogc.c +++ b/src/blogc.c @@ -41,7 +41,7 @@ blogc_print_help(void) { printf( "usage:\n" - " blogc [-h] [-v] [-l] [-D KEY=VALUE ...] [-p KEY] [-t TEMPLATE]\n" + " blogc [-h] [-v] [-d] [-l] [-D KEY=VALUE ...] [-p KEY] [-t TEMPLATE]\n" " [-o OUTPUT] [SOURCE ...] - A blog compiler.\n" "\n" "positional arguments:\n" @@ -50,6 +50,7 @@ blogc_print_help(void) "optional arguments:\n" " -h show this help message and exit\n" " -v show version and exit\n" + " -d enable debug\n" " -l build listing page, from multiple source files\n" " -D KEY=VALUE set global configuration parameter\n" " -p KEY show the value of a global configuration parameter\n" @@ -63,7 +64,7 @@ static void blogc_print_usage(void) { printf( - "usage: blogc [-h] [-v] [-l] [-D KEY=VALUE ...] [-p KEY] [-t TEMPLATE]\n" + "usage: blogc [-h] [-v] [-d] [-l] [-D KEY=VALUE ...] [-p KEY] [-t TEMPLATE]\n" " [-o OUTPUT] [SOURCE ...]\n"); } @@ -110,6 +111,7 @@ main(int argc, char **argv) int rv = 0; + bool debug = false; bool listing = false; char *template = NULL; char *output = NULL; @@ -131,6 +133,9 @@ main(int argc, char **argv) case 'v': printf("%s\n", PACKAGE_STRING); goto cleanup; + case 'd': + debug = true; + break; case 'l': listing = true; break; @@ -246,6 +251,9 @@ main(int argc, char **argv) goto cleanup3; } + if (debug) + blogc_template_debug(l); + char *out = blogc_render(l, s, config, listing); bool write_to_stdout = (output == NULL || (0 == strcmp(output, "-"))); diff --git a/src/template-parser.c b/src/template-parser.c index 525f5f5..1582c17 100644 --- a/src/template-parser.c +++ b/src/template-parser.c @@ -11,6 +11,7 @@ #endif /* HAVE_CONFIG_H */ #include +#include #include #include "template-parser.h" @@ -634,3 +635,67 @@ blogc_template_free_stmts(sb_slist_t *stmts) } sb_slist_free(stmts); } + + +static const char* +get_operator(blogc_template_stmt_operator_t op) +{ + if (op & BLOGC_TEMPLATE_OP_NEQ) + return "!="; + if (op & BLOGC_TEMPLATE_OP_EQ) { + if (op & BLOGC_TEMPLATE_OP_LT) + return "<="; + else if (op & BLOGC_TEMPLATE_OP_GT) + return ">="; + return "=="; + } + if (op & BLOGC_TEMPLATE_OP_LT) + return "<"; + else if (op & BLOGC_TEMPLATE_OP_GT) + return ">"; + return ""; +} + + +void +blogc_template_debug(sb_slist_t *stmts) +{ + for (sb_slist_t *tmp = stmts; tmp != NULL; tmp = tmp->next) { + blogc_template_stmt_t *data = tmp->data; + fprintf(stderr, "DEBUG: