From f5fa6cde9e1d8157df86b34129c9e844d329329a Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 9 Oct 2022 21:20:32 +0200 Subject: RET statement --- pez.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'pez.c') diff --git a/pez.c b/pez.c index a6a7c92..1ad9670 100644 --- a/pez.c +++ b/pez.c @@ -1354,7 +1354,7 @@ exefn(PezContext *cx, Fn *fn, uint nargs) CASE(Onop) {} CASE(Oret) { Val ret = pop(cx); - cx->stktop -= pr->nvars; + cx->stktop = locals; assert(cx->stktop >= cx->stack); push(cx, ret); closeups(cx, args); @@ -3513,6 +3513,8 @@ stmt(Comp *cm) TRY(readident(cm, buf, sizeof buf)); if (!strcmp(buf, "FOR")) { return forstmt(cm); + } else if (!strcmp(buf, "RET")) { + return expr(cm) && compop(cm, Oret); } else { strcpy(cm->stash_ident, buf); return expr(cm); -- cgit v1.2.3