Add "return" statement

Functions may now be exited by returning a value or no value.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-10-07 16:34:23 -07:00
parent dd7cd04b39
commit 76d0e6723f
6 changed files with 60 additions and 7 deletions

View File

@@ -22,6 +22,7 @@ Body -> Result<Vec<Stmt>>:
Stmt -> Result<Stmt>:
Expr { Ok(Stmt::Expr($1?)) }
| Assign { Ok(Stmt::Assign($1?)) }
| Return { Ok(Stmt::Return($1?)) }
;
Assign -> Result<AssignStmt>:
@@ -41,6 +42,11 @@ LhsExpr -> Result<LhsExpr>:
}
;
Return -> Result<ReturnStmt>:
'return' Expr { Ok(ReturnStmt { expr: Some($2?), }) }
| 'return' { Ok(ReturnStmt { expr: None, }) }
;
Expr -> Result<Expr>: BinExpr { $1 };
BinExpr -> Result<Expr>: