From 80af330d1bed91797fdbe14d335ab434c853f67f Mon Sep 17 00:00:00 2001 From: Slendi Date: Fri, 1 Aug 2025 06:10:13 +0300 Subject: [PATCH] Finish parser Signed-off-by: Slendi --- src/dcfg.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/dcfg.c b/src/dcfg.c index 5819494..299fb19 100644 --- a/src/dcfg.c +++ b/src/dcfg.c @@ -1243,9 +1243,9 @@ Value *ast_to_value(dcfg_Instance *instance, AST *root) value->type = dcfg_ValueType_String; value->v.s = root->v.s.s; } else { - // FIXME: Implement - FREE(value); - return NULL; + value->type = dcfg_ValueType_MemberAccess; + value->v.ma.accessv = vector_create(); + vector_add(value->v.ma.accessv, StringView, root->v.s.s); } } else if (root->kind == ASTKind_Path) { value->type = dcfg_ValueType_Path; @@ -1665,9 +1665,16 @@ bool dcfg_Value_get_array_size(dcfg_Value *value, size_t *out_size) bool dcfg_call_function(dcfg_Value *function, dcfg_Value **args, size_t arg_count, dcfg_Value **out_value) { - (void)function, (void)args, (void)arg_count, (void)out_value; - // FIXME: Implement - return false; + if (function->v.f.is_builtin) { + *out_value = function->v.f.v.bi(args, arg_count); + if (!*out_value) { + return false; + } + } else { + // FIXME: Implement + return false; + } + return true; } bool dcfg_Value_evaluate(dcfg_Value *value, dcfg_Value **out_value)