From e2c43dc911a71676cab57c65d2a683d36287e674 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Thu, 3 Sep 2020 18:58:22 -0700 Subject: [PATCH] Add LhsExpr parsing Signed-off-by: Alek Ratzloff --- src/syn/parser.y | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/syn/parser.y b/src/syn/parser.y index a320f5f..05d2a25 100644 --- a/src/syn/parser.y +++ b/src/syn/parser.y @@ -19,7 +19,24 @@ Body -> Result>: Stmt -> Result: Expr { Ok(Stmt::Expr($1?)) } - //| Assign { todo!() } + | Assign { todo!() } + ; + +Assign -> Result: + LhsExpr '=' Expr { + todo!() + } + ; + +LhsExpr -> Result: + AccessExpr { + let lhs = match $1? { + Expr::Access(access) => LhsExpr::SetAttr(*access), + Expr::Atom(Atom::Ident(local)) => LhsExpr::Local(local), + _ => todo!("TODO : invalid syntax, raise error"), + }; + Ok(lhs) + } ; Expr -> Result: BinExpr { $1 };