From 2ae76e402eac4b451ce58ce41352def8ff2dffb9 Mon Sep 17 00:00:00 2001 From: lemon Date: Mon, 16 Jun 2025 11:51:46 +0200 Subject: change lambda syntax {[a] x} -> $[a]{x} --- pez.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'pez.c') diff --git a/pez.c b/pez.c index e12ad46..52744ad 100644 --- a/pez.c +++ b/pez.c @@ -3039,6 +3039,8 @@ lambdaexpr(Comp *cm, const char *name) } } + ETRY(expectspchr(cm, '{')); + ETRY(block(cm, '}')); ETRY(compop(cm, Oret)); ETRY(fincompfn(cm)); @@ -3268,7 +3270,7 @@ primaryexpr(Comp *cm) } return 1; - case '{': + case '$': return lambdaexpr(cm, NULL); case '#': @@ -4036,7 +4038,7 @@ decl(Comp *cm, struct local **pl, bool nofold) return comperr(cm, c, "expected ':' or '='"), 0; } - if (matchspchr(cm, '{')) { + if (matchspchr(cm, '$')) { // named fn, possibly recursive TRY(l = addlocal(cm, &idx, name, mutable, cm->has_k && !mutable, cm->k)); TRY(lambdaexpr(cm, name)); @@ -4215,7 +4217,7 @@ stmt(Comp *cm) TRY(expectspchr(cm, '=')); TRY(box_str(cm->cx, &key, name, strlen(name))); TRY(compconst(cm, key)); - if (matchspchr(cm, '{')) { + if (matchspchr(cm, '$')) { TRY(lambdaexpr(cm, name)); // named fn } else { TRY(expr(cm)); // initializer -- cgit v1.2.3