Mercurial > lbo > hg > ylisp
changeset 65:dd0c65ded420
gen: Prepare parser code for use by "production" code
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sun, 25 Aug 2019 10:06:21 +0200 |
parents | f712161c0bf9 |
children | 1b061b1fecdf |
files | gen/CMakeLists.txt gen/debug_parser.c gen/y.lex |
diffstat | 3 files changed, 12 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/CMakeLists.txt Sun Aug 25 10:05:37 2019 +0200 +++ b/gen/CMakeLists.txt Sun Aug 25 10:06:21 2019 +0200 @@ -9,5 +9,7 @@ ADD_EXECUTABLE(debug_parser debug_parser.c ${FLEX_lexer_OUTPUTS} ${BISON_parser_OUTPUTS}) ADD_EXECUTABLE(debug_lexer debug_lexer.c ${FLEX_lexer_OUTPUTS}) +ADD_LIBRARY(y_parser ${FLEX_lexer_OUTPUTS} ${BISON_parser_OUTPUTS}) + TARGET_LINK_LIBRARIES(debug_lexer core base) TARGET_LINK_LIBRARIES(debug_parser core base)
--- a/gen/debug_parser.c Sun Aug 25 10:05:37 2019 +0200 +++ b/gen/debug_parser.c Sun Aug 25 10:06:21 2019 +0200 @@ -4,14 +4,22 @@ #include <gen/y.tab.h> -int parse(FILE* in, yvec_t* out); +bool YENABLE_DEBUG_PRINT; + +int parse(FILE* in, yvec_t* out, ystr_t* ystr_error); int main(int argc, char** argv) { + YENABLE_DEBUG_PRINT = true; yvec_t expr; - parse(stdin, &expr); + ystr_t err; + if (0 < parse(stdin, &expr, &err)) { + fprintf(stderr, ">>> error: %s\n", ystr_str(&err)); + return 1; + } fprintf(stderr, ">>> full parse result: \n"); for (size_t i = 0; i < expr.len; i++) { yexpr_debug(YVEC_AT(&expr, i, yexpr_t)); } + return 0; }