@@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user