From 24522c8496c2661ba90b560bed0da482a85c3c8d Mon Sep 17 00:00:00 2001 From: Quinn Stephens Date: Mon, 9 Jun 2025 22:11:41 -0400 Subject: parser: Parse pointer levels (e.g. void **) Signed-off-by: Quinn Stephens --- src/main.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index c06d83e..13803be 100644 --- a/src/main.c +++ b/src/main.c @@ -33,18 +33,26 @@ #include "parser.h" #include "parser/ast.h" -static const char *src = "int x;\nvoid test();\nint main();\n"; +static const char *src = "int x;void **ptr;\nvoid *alloc();void test();\nint main();\n"; static void print_func(struct ast_node *func) { - log_debug("found function \"%.*s\" (return type %s)\n", func->name_len, func->name, func->type->name); + if (func->ptr_levels > 0) { + log_debug("found function \"%.*s\" (returns %d-level pointer to %s)\n", func->name_len, func->name, func->ptr_levels, func->type->name); + } else { + log_debug("found function \"%.*s\" (returns %s)\n", func->name_len, func->name, func->type->name); + } } static void print_var(struct ast_node *var) { - log_debug("found variable \"%.*s\" (type %s)\n", var->name_len, var->name, var->type->name); + if (var->ptr_levels > 0) { + log_debug("found variable \"%.*s\" (%d-level pointer to %s)\n", var->name_len, var->name, var->ptr_levels, var->type->name); + } else { + log_debug("found variable \"%.*s\" (%s)\n", var->name_len, var->name, var->type->name); + } } static void -- cgit v1.2.3