summaryrefslogtreecommitdiff
path: root/pez.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-06-16 11:51:46 +0200
committerlemon <lsof@mailbox.org>2025-06-16 11:51:46 +0200
commit2ae76e402eac4b451ce58ce41352def8ff2dffb9 (patch)
tree279eb649120701ab11b8c027709f0240038f78ae /pez.c
parent3967fccab7a41f8218b7ba589eee470d7ab4972a (diff)
change lambda syntax {[a] x} -> $[a]{x}
Diffstat (limited to 'pez.c')
-rw-r--r--pez.c8
1 files changed, 5 insertions, 3 deletions
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