diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-09-21 15:43:59 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-09-21 15:43:59 -0400 |
| commit | 71f73d8b3ce63f9a3685bc1a1686ef4fab3294a6 (patch) | |
| tree | 99fe1309fa4d24609867dcc62859caed909a76d9 /src/parse | |
| parent | f5612e38183dc20d18f207f8ab055574a4d93ad0 (diff) | |
Deprecate sets
Diffstat (limited to 'src/parse')
| -rw-r--r-- | src/parse/containers.c | 30 | ||||
| -rw-r--r-- | src/parse/containers.h | 1 | ||||
| -rw-r--r-- | src/parse/expressions.c | 9 | ||||
| -rw-r--r-- | src/parse/types.c | 17 | ||||
| -rw-r--r-- | src/parse/types.h | 1 |
5 files changed, 6 insertions, 52 deletions
diff --git a/src/parse/containers.c b/src/parse/containers.c index 73d30ecd..b7378b18 100644 --- a/src/parse/containers.c +++ b/src/parse/containers.c @@ -96,33 +96,3 @@ ast_t *parse_table(parse_ctx_t *ctx, const char *pos) { return NewAST(ctx->file, start, pos, Table, .default_value = default_value, .entries = entries, .fallback = fallback); } - -ast_t *parse_set(parse_ctx_t *ctx, const char *pos) { - const char *start = pos; - if (match(&pos, "||")) return NewAST(ctx->file, start, pos, Set); - - if (!match(&pos, "|")) return NULL; - whitespace(ctx, &pos); - - ast_list_t *items = NULL; - for (;;) { - ast_t *item = optional(ctx, &pos, parse_extended_expr); - if (!item) break; - whitespace(ctx, &pos); - ast_t *suffixed = parse_comprehension_suffix(ctx, item); - while (suffixed) { - item = suffixed; - pos = suffixed->end; - suffixed = parse_comprehension_suffix(ctx, item); - } - items = new (ast_list_t, .ast = item, .next = items); - if (!match_separator(ctx, &pos)) break; - } - - REVERSE_LIST(items); - - whitespace(ctx, &pos); - expect_closing(ctx, &pos, "|", "I wasn't able to parse the rest of this set"); - - return NewAST(ctx->file, start, pos, Set, .items = items); -} diff --git a/src/parse/containers.h b/src/parse/containers.h index 6bf75274..4ea23380 100644 --- a/src/parse/containers.h +++ b/src/parse/containers.h @@ -5,5 +5,4 @@ #include "context.h" ast_t *parse_list(parse_ctx_t *ctx, const char *pos); -ast_t *parse_set(parse_ctx_t *ctx, const char *pos); ast_t *parse_table(parse_ctx_t *ctx, const char *pos); diff --git a/src/parse/expressions.c b/src/parse/expressions.c index df0a10a7..606c7b4e 100644 --- a/src/parse/expressions.c +++ b/src/parse/expressions.c @@ -193,11 +193,10 @@ ast_t *parse_term_no_suffix(parse_ctx_t *ctx, const char *pos) { || (term = parse_heap_alloc(ctx, pos)) || (term = parse_stack_reference(ctx, pos)) || (term = parse_bool(ctx, pos)) || (term = parse_text(ctx, pos)) || (term = parse_path(ctx, pos)) || (term = parse_lambda(ctx, pos)) || (term = parse_parens(ctx, pos)) || (term = parse_table(ctx, pos)) - || (term = parse_set(ctx, pos)) || (term = parse_deserialize(ctx, pos)) || (term = parse_var(ctx, pos)) - || (term = parse_list(ctx, pos)) || (term = parse_reduction(ctx, pos)) || (term = parse_pass(ctx, pos)) - || (term = parse_defer(ctx, pos)) || (term = parse_skip(ctx, pos)) || (term = parse_stop(ctx, pos)) - || (term = parse_return(ctx, pos)) || (term = parse_not(ctx, pos)) || (term = parse_extern(ctx, pos)) - || (term = parse_inline_c(ctx, pos))); + || (term = parse_deserialize(ctx, pos)) || (term = parse_var(ctx, pos)) || (term = parse_list(ctx, pos)) + || (term = parse_reduction(ctx, pos)) || (term = parse_pass(ctx, pos)) || (term = parse_defer(ctx, pos)) + || (term = parse_skip(ctx, pos)) || (term = parse_stop(ctx, pos)) || (term = parse_return(ctx, pos)) + || (term = parse_not(ctx, pos)) || (term = parse_extern(ctx, pos)) || (term = parse_inline_c(ctx, pos))); return term; } diff --git a/src/parse/types.c b/src/parse/types.c index d87fc628..f08578e9 100644 --- a/src/parse/types.c +++ b/src/parse/types.c @@ -43,18 +43,6 @@ type_ast_t *parse_table_type(parse_ctx_t *ctx, const char *pos) { .default_value = default_value); } -type_ast_t *parse_set_type(parse_ctx_t *ctx, const char *pos) { - const char *start = pos; - if (!match(&pos, "|")) return NULL; - whitespace(ctx, &pos); - type_ast_t *item_type = parse_type(ctx, pos); - if (!item_type) return NULL; - pos = item_type->end; - whitespace(ctx, &pos); - expect_closing(ctx, &pos, "|", "I wasn't able to parse the rest of this set type"); - return NewTypeAST(ctx->file, start, pos, SetTypeAST, .item = item_type); -} - type_ast_t *parse_func_type(parse_ctx_t *ctx, const char *pos) { const char *start = pos; if (!match_word(&pos, "func")) return NULL; @@ -158,9 +146,8 @@ type_ast_t *parse_non_optional_type(parse_ctx_t *ctx, const char *pos) { const char *start = pos; type_ast_t *type = NULL; bool success = (false || (type = parse_pointer_type(ctx, pos)) || (type = parse_list_type(ctx, pos)) - || (type = parse_table_type(ctx, pos)) || (type = parse_set_type(ctx, pos)) - || (type = parse_enum_type(ctx, pos)) || (type = parse_type_name(ctx, pos)) - || (type = parse_func_type(ctx, pos))); + || (type = parse_table_type(ctx, pos)) || (type = parse_enum_type(ctx, pos)) + || (type = parse_type_name(ctx, pos)) || (type = parse_func_type(ctx, pos))); if (!success && match(&pos, "(")) { whitespace(ctx, &pos); type = optional(ctx, &pos, parse_type); diff --git a/src/parse/types.h b/src/parse/types.h index ac6c22fb..f13ec6ed 100644 --- a/src/parse/types.h +++ b/src/parse/types.h @@ -11,7 +11,6 @@ type_ast_t *parse_func_type(parse_ctx_t *ctx, const char *pos); type_ast_t *parse_list_type(parse_ctx_t *ctx, const char *pos); type_ast_t *parse_non_optional_type(parse_ctx_t *ctx, const char *pos); type_ast_t *parse_pointer_type(parse_ctx_t *ctx, const char *pos); -type_ast_t *parse_set_type(parse_ctx_t *ctx, const char *pos); type_ast_t *parse_table_type(parse_ctx_t *ctx, const char *pos); type_ast_t *parse_type(parse_ctx_t *ctx, const char *pos); type_ast_t *parse_type_name(parse_ctx_t *ctx, const char *pos); |
