aboutsummaryrefslogtreecommitdiff
path: root/src/parser/parser.c
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-31 23:14:26 +0200
committerhachem <im@hachem.wtf>2026-08-31 23:14:26 +0200
commit9dc06d01c2224ee1dbeb11ebee7c8afecfac8b05 (patch)
tree110fe30b5b1f228568087a8fe7b0f7e0ca43fbb1 /src/parser/parser.c
parent5b06b0e4b8effaacd23308d6a6b26c525e7d3af4 (diff)
feat: add support for floats through xmm registers
Diffstat (limited to 'src/parser/parser.c')
-rw-r--r--src/parser/parser.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/parser/parser.c b/src/parser/parser.c
index 682e193..3ed9fff 100644
--- a/src/parser/parser.c
+++ b/src/parser/parser.c
@@ -248,7 +248,8 @@ static struct Expr* parse_primary(struct Parser* parser)
return deref;
}
- if (check(parser, TOKEN_IDENTIFIER) || check(parser, TOKEN_INTEGER) || check(parser, TOKEN_CHAR))
+ if (check(parser, TOKEN_IDENTIFIER) || check(parser, TOKEN_INTEGER)
+ || check(parser, TOKEN_FLOAT) || check(parser, TOKEN_CHAR))
{
advance_parser(parser);
@@ -439,12 +440,15 @@ static bool parse_statement(struct Parser* parser, struct Statement* out)
if (!consume(parser, TOKEN_LEFT_BRACKET, "expected '[' after buffer name"))
return false;
- if (!consume(parser, TOKEN_INTEGER, "expected buffer size"))
+ struct Expr* size = parse_expression(parser);
+ if (size == NULL)
return false;
- struct Token size = parser->previous;
if (!consume(parser, TOKEN_RIGHT_BRACKET, "expected ']' after buffer size"))
+ {
+ free_expr(size);
return false;
+ }
out->kind = STATEMENT_STACK;
out->stack.name = name;