输入`_'上的解析错误

时间:2014-10-22 11:30:28

标签: parsing haskell

第7行,在_。我不知道可能是什么问题。有小费吗?

term :: Parser Expr
term s1 = case factor s1 of
            Just (a, s2) -> case s2 of
                              '*':s3 -> case term s3 of
                                          Just (b, s4) -> Just (Mul a b, s4)
                                          Nothing      -> Just (a, s2)
                                _ -> Just (a, s2)
            Nothing      -> Nothing

我正在尝试将字符串解析为Expr(自制数据类型)。我认为这是我们应该怎么做但我无法测试它,因为我无法正确编译它。 GHCI和Ghc墙给了我同样的错误。在该特定点解析错误。

我的代码比这大,但这是相关的代码。

编辑:代码发布在这里,抱歉。

1 个答案:

答案 0 :(得分:5)

这是一个语法问题。 Haskell使用二维语法,因此case语句的每个部分都应该有相同的缩进。

所以,要修复错误移动第7行,剩下两个字符

term :: Parser Expr
term s1 = case factor s1 of
            Just (a, s2) -> case s2 of
                              '*':s3 -> case term s3 of
                                          Just (b, s4) -> Just (Mul a b, s4)
                                          Nothing      -> Just (a, s2)
                              _ -> Just (a, s2)
            Nothing      -> Nothing