aboutsummaryrefslogtreecommitdiff
path: root/src/parser/ast.h
diff options
context:
space:
mode:
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,