aboutsummaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-02-04 18:04:41 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-02-04 18:04:41 -0500
commitb08a0d3e2bf45bae11c982dd24d0292d6436b993 (patch)
tree05c6a455f1cf159109fdd17520f9d772a0bbfe7a /parse.c
parent98f0c51119f9d42d733f44cb516b1c2bcd9061af (diff)
Updates and functionality
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/parse.c b/parse.c
index 845b3ca0..1b405142 100644
--- a/parse.c
+++ b/parse.c
@@ -1529,12 +1529,12 @@ arg_list_t *parse_args(parse_ctx_t *ctx, const char **pos, bool allow_unnamed)
ast_t *default_val = NULL;
type_ast_t *type = NULL;
- typedef struct var_list_s {
- var_t *var;
- struct var_list_s *next;
- } var_list_t;
+ typedef struct name_list_s {
+ const char *name;
+ struct name_list_s *next;
+ } name_list_t;
- var_list_t *vars = NULL;
+ name_list_t *names = NULL;
for (;;) {
whitespace(pos);
const char *name_start = *pos;
@@ -1543,34 +1543,34 @@ arg_list_t *parse_args(parse_ctx_t *ctx, const char **pos, bool allow_unnamed)
whitespace(pos);
if (strncmp(*pos, "==", 2) != 0 && match(pos, "=")) {
default_val = expect(ctx, *pos-1, pos, parse_term, "I expected a value after this '='");
- vars = new(var_list_t, .var=new(var_t, .name=name), .next=vars);
+ names = new(name_list_t, .name=name, .next=names);
break;
} else if (match(pos, ":")) {
type = expect(ctx, *pos-1, pos, parse_type, "I expected a type here");
- vars = new(var_list_t, .var=new(var_t, .name=name), .next=vars);
+ names = new(name_list_t, .name=name, .next=names);
break;
} else if (allow_unnamed) {
*pos = name_start;
type = optional(ctx, pos, parse_type);
if (type)
- vars = new(var_list_t, .var=NULL, .next=vars);
+ names = new(name_list_t, .name=NULL, .next=names);
break;
} else if (name) {
- vars = new(var_list_t, .var=new(var_t, .name=name), .next=vars);
+ names = new(name_list_t, .name=name, .next=names);
spaces(pos);
if (!match(pos, ",")) break;
} else {
break;
}
}
- if (!vars) break;
+ if (!names) break;
if (!default_val && !type)
parser_err(ctx, batch_start, *pos, "I expected a ':' and type, or '=' and a default value after this parameter (%s)",
- vars->var->name);
+ names->name);
- REVERSE_LIST(vars);
- for (; vars; vars = vars->next)
- args = new(arg_list_t, .var=vars->var, .type=type, .default_val=default_val);
+ REVERSE_LIST(names);
+ for (; names; names = names->next)
+ args = new(arg_list_t, .var.name=names->name, .type=type, .default_val=default_val);
whitespace(pos);
match(pos, ",");
}