我正在尝试用 lamdba 表达式解析一种简单的语言。但runParser expr "lamdbda(x) (return x)返回Right (Var "lamdba")而不是Right (Lambda ["x"] (Return (Var "x")))
我的猜测是,我必须try在某个地方添加一个,但我不知道在哪里。lambdaExpr正确解析 lamdbas。
AST.HS
\n\ndata Expr = Const Integer\n | BinOp Op Expr Expr\n | Neg Expr\n | If Expr Expr Expr\n | Var String\n | Lambda [String] Stmt\n deriving (Show, Eq)\n\ndata Op = Multiply\n | Divide\n | Add\n | Subtract\n deriving (Show, Eq)\n\ndata Stmt = Decl String Expr\n | Seq [Stmt]\n | Print Expr\n …Run Code Online (Sandbox Code Playgroud)