diff options
| author | hachem <im@hachem.wtf> | 2026-08-31 01:11:54 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-31 01:11:54 +0200 |
| commit | cf24f576891ece60bdf04928d3c39dd0bbb9b5f6 (patch) | |
| tree | f0e5492dca4e0c3bbbff256c2c1fa98b15dcfab5 /src/parser/parser.c | |
| parent | 3e20038bbf7206e2270655418d7884ccfe91a4e4 (diff) | |
feat: add logical_registers
Diffstat (limited to 'src/parser/parser.c')
| -rw-r--r-- | src/parser/parser.c | 6 |
1 files changed, 5 insertions, 1 deletions
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; |
