Add LhsExpr parsing

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-09-03 18:58:22 -07:00
parent 4d8a815ffc
commit e2c43dc911

View File

@@ -19,7 +19,24 @@ Body -> Result<Vec<Stmt>>:
Stmt -> Result<Stmt>:
Expr { Ok(Stmt::Expr($1?)) }
//| Assign { todo!() }
| Assign { todo!() }
;
Assign -> Result<AssignStmt>:
LhsExpr '=' Expr {
todo!()
}
;
LhsExpr -> Result<LhsExpr>:
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<Expr>: BinExpr { $1 };