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 = {