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;
 }
--- a/gen/y.lex	Sun Aug 25 10:05:37 2019 +0200
+++ b/gen/y.lex	Sun Aug 25 10:06:21 2019 +0200
@@ -60,7 +60,3 @@
     assert(0 == yylex_destroy(scanner));
     return 0;
 }
-
-void yyerror(void* _scanner, void* _output, char const* s) {
-    fprintf(stderr, "%s\n", s);
-}