Add implementations for parsing assign statements, forgot to do this

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-09-17 13:17:53 -07:00
parent 534812f54d
commit 1be0fb8a04

View File

@@ -19,12 +19,12 @@ Body -> Result<Vec<Stmt>>:
Stmt -> Result<Stmt>: Stmt -> Result<Stmt>:
Expr { Ok(Stmt::Expr($1?)) } Expr { Ok(Stmt::Expr($1?)) }
| Assign { todo!() } | Assign { Ok(Stmt::Assign($1?)) }
; ;
Assign -> Result<AssignStmt>: Assign -> Result<AssignStmt>:
LhsExpr '=' Expr { LhsExpr '=' Expr {
todo!() Ok(AssignStmt { lhs: $1?, rhs: $3? })
} }
; ;
@@ -32,7 +32,7 @@ LhsExpr -> Result<LhsExpr>:
AccessExpr { AccessExpr {
let lhs = match $1? { let lhs = match $1? {
Expr::Access(access) => LhsExpr::SetAttr(*access), Expr::Access(access) => LhsExpr::SetAttr(*access),
Expr::Atom(Atom::Ident(local)) => LhsExpr::Local(local), Expr::Atom(Atom::Ident(local)) => LhsExpr::Name(local),
_ => todo!("TODO : invalid syntax, raise error"), _ => todo!("TODO : invalid syntax, raise error"),
}; };
Ok(lhs) Ok(lhs)