aboutsummaryrefslogtreecommitdiff
path: root/src/parser/ast.h
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-31 16:56:40 +0200
committerhachem <im@hachem.wtf>2026-08-31 16:56:40 +0200
commit53aed3fadf1f7ad66dea9a8a0b46bf42eda921be (patch)
treeea14a08b29a18072d1e420353a39c1397f85bee2 /src/parser/ast.h
parentf8a2d02c75df62f74e5907696d5a99a024d59018 (diff)
feat: add memory loads via ^reg
Diffstat (limited to 'src/parser/ast.h')
-rw-r--r--src/parser/ast.h26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/parser/ast.h b/src/parser/ast.h
index a98f43b..fc7af2b 100644
--- a/src/parser/ast.h
+++ b/src/parser/ast.h
@@ -24,11 +24,21 @@ struct Param
struct Token reg;
};
+enum StoreSize
+{
+ STORE_SIZE_NONE,
+ STORE_SIZE_BYTE,
+ STORE_SIZE_WORD,
+ STORE_SIZE_DWORD,
+ STORE_SIZE_QWORD,
+};
+
enum ExprKind
{
EXPR_PRIMARY,
EXPR_BINARY,
EXPR_MEMBER,
+ EXPR_DEREF,
};
struct PrimaryExpr
@@ -49,6 +59,12 @@ struct MemberExpr
struct Token member;
};
+struct DerefExpr
+{
+ enum StoreSize size;
+ struct Expr* address;
+};
+
struct Expr
{
enum ExprKind kind;
@@ -57,18 +73,10 @@ struct Expr
struct PrimaryExpr primary;
struct BinaryExpr binary;
struct MemberExpr member;
+ struct DerefExpr deref;
};
};
-enum StoreSize
-{
- STORE_SIZE_NONE,
- STORE_SIZE_BYTE,
- STORE_SIZE_WORD,
- STORE_SIZE_DWORD,
- STORE_SIZE_QWORD,
-};
-
enum StatementKind
{
STATEMENT_ASSIGN,