From 6652b9fc6307ea525c9b8ef83ee803138782ca6e Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sun, 7 Sep 2025 18:42:25 -0500 Subject: [PATCH] Work on closures. --- src/parser/ast.yaml | 22 +++++++++++++++++++++- src/parser/deimos.pest | 19 +------------------ 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/parser/ast.yaml b/src/parser/ast.yaml index 6c6e7b2..3a954a8 100644 --- a/src/parser/ast.yaml +++ b/src/parser/ast.yaml @@ -586,4 +586,24 @@ ExpressionList: children: - expressions: rule: Expression - vec: true \ No newline at end of file + vec: true + +# Closure +Closure: + children: + - closure_parameters: + build: + or_else_default: true + - statements: + rule: Statement + vec: true +ClosureParameters: + children: + - parameters: + rule: ClosureParameters + vec: true +ClosureParameter: + children: + - identifier + - type_use: + optional: true diff --git a/src/parser/deimos.pest b/src/parser/deimos.pest index 8fd2e28..aefb7b6 100644 --- a/src/parser/deimos.pest +++ b/src/parser/deimos.pest @@ -789,13 +789,9 @@ ExpressionList = { // Closure Closure = { - ( Cons | Mut )? - ~ Move? - ~ ClosureCaptures? - ~ "{" + "{" ~ ( ClosureParameters? ~ "->" )? ~ Statement* - ~ Expression? ~ "}" } @@ -809,19 +805,6 @@ ClosureParameter = { ~ ( ":" ~ TypeUse )? } -ClosureCaptures = { - "|" - ~ ClosureCapture - ~ ( "," ~ ClosureCapture )* - ~ "|" -} - -ClosureCapture = { - Borrow* - ~ Mut? - ~ Identifier -} - // Literals Literal = {