diff --git a/src/ast.rs b/src/ast.rs
index 1d47a59..51a5b05 100644
--- a/src/ast.rs
+++ b/src/ast.rs
@@ -22,6 +22,9 @@ pub enum StmtNode {
 /// An AST node that represents an expression.
 #[derive(Debug, Clone)]
 pub enum ExprNode {
+    /// Assignment to a variable.
+    Assignment { name: Token, value: Box<ExprNode> },
+
     /// Binary expression.
     Binary {
         left: Box<ExprNode>,
@@ -79,6 +82,7 @@ impl AstDumper for StmtNode {
 impl AstDumper for ExprNode {
     fn dump(&self) -> String {
         match self {
+            Self::Assignment { name, value } => format!("( = {} {} )", name.lexeme, value.dump()),
             Self::Binary {
                 left,
                 operator,