From fec8e3a95becfb3dc2a3eb0f512a120a7a4551c5 Mon Sep 17 00:00:00 2001 From: kartofen Date: Wed, 24 Sep 2025 00:06:54 +0300 Subject: debug info through the lr parser --- demos/generate-parser.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'demos/generate-parser.c') diff --git a/demos/generate-parser.c b/demos/generate-parser.c index e0ec5f5..c9c71f3 100644 --- a/demos/generate-parser.c +++ b/demos/generate-parser.c @@ -170,14 +170,14 @@ int main(int argc, char **argv) for(size_t i = 0; i < total_productions; i++) { printf("#define A(n) (*(stack_head-%zu+n))\n", grammar[i].nRHS-1); - printf("stack_item __prod%zu_action(stack_item *stack_head)\n", i); + printf("void *__prod%zu_action(stack_item *r, stack_item *stack_head)\n", i); printf("{ stack_item v = {0};\n"); puts(semantic_action_str[i]); - printf("return v; }\n"); + printf("*r = v; return NULL; }\n"); printf("#undef A\n"); } - printf("typedef stack_item (*semantic_action_fn)(stack_item *stack_head);\n"); + printf("typedef void *(*semantic_action_fn)(stack_item *, stack_item *);\n"); printf("semantic_action_fn *semantic_actions = (semantic_action_fn[]){\n"); for(size_t i = 0; i < total_productions; i++) @@ -194,7 +194,7 @@ int main(int argc, char **argv) printf("#include \"parts/grammar.h\"\n"); printf("#include \"parts/table.h\"\n"); printf("typedef %s stack_item;\n", stack_item_type); - printf("typedef stack_item (*semantic_action_fn)(stack_item *stack_head);\n"); + printf("typedef void *(*semantic_action_fn)(stack_item *, stack_item *);\n"); printf("extern semantic_action_fn *semantic_actions;\n"); printf("#endif\n"); set_stdout(NULL); -- cgit v1.2.3