From cf24f576891ece60bdf04928d3c39dd0bbb9b5f6 Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 31 Aug 2026 01:11:54 +0200 Subject: feat: add logical_registers --- src/parser/parser.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/parser/parser.c') diff --git a/src/parser/parser.c b/src/parser/parser.c index 8603c46..7ec4474 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -154,11 +154,15 @@ static struct Expr* parse_postfix(struct Parser* parser) while (match_token(parser, TOKEN_DOT)) { - if (!consume(parser, TOKEN_IDENTIFIER, "expected member name after '.'")) + // an identifier is a member (data.len); an integer is a register size + // suffix (r1.64), meaningful with the logical_registers extension + if (!check(parser, TOKEN_IDENTIFIER) && !check(parser, TOKEN_INTEGER)) { + error_at(parser, parser->current, "expected a member name or size after '.'"); free_expr(expr); return NULL; } + advance_parser(parser); struct Expr* member = alloc_expr(EXPR_MEMBER); member->member.object = expr; -- cgit v1.3