blob: c2dd580ac43f9f8e922119aa8b64efe78d65ef20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
LambdaTerm = Application / Abstraction / Variable
Application = LPAREN _ left:LambdaTerm _ right:LambdaTerm RPAREN { return { application: { left, right } }; }
Abstraction = LPAREN _ LAMBDA _ param:Variable _ DOT _ body:LambdaTerm RPAREN { return { abstraction: { param, body } }; }
Variable = param:[a-zA-Z0-9]+ { return param.join(""); }
LPAREN = "("
RPAREN = ")"
DOT = "."
LAMBDA = "λ" / "\\"
_ = ("\n" / " " / "\t" / "\r\n")*
|