From eabff011ea552a4fecc13de129e0a205b77bc289 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 18 Feb 2024 01:27:25 -0500 Subject: Add in '#' operator for length --- parse.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'parse.c') diff --git a/parse.c b/parse.c index 571f5676..5c9520ea 100644 --- a/parse.c +++ b/parse.c @@ -839,6 +839,14 @@ PARSER(parse_while) { return NewAST(ctx->file, start, pos, While, .condition=condition, .body=body); } +PARSER(parse_length) { + const char *start = pos; + if (!match(&pos, "#")) return NULL; + spaces(&pos); + ast_t *val = expect(ctx, start, &pos, parse_expr, "I expected an expression for this '#'"); + return NewAST(ctx->file, start, pos, Length, .value=val); +} + PARSER(parse_heap_alloc) { const char *start = pos; if (!match(&pos, "@")) return NULL; @@ -1070,6 +1078,7 @@ PARSER(parse_term_no_suffix) { || (term=parse_nil(ctx, pos)) || (term=parse_num(ctx, pos)) || (term=parse_int(ctx, pos)) + || (term=parse_length(ctx, pos)) || (term=parse_negative(ctx, pos)) || (term=parse_heap_alloc(ctx, pos)) || (term=parse_stack_reference(ctx, pos)) -- cgit v1.2.3