Parsing 解析器函数中的故障处理
我正在用库学习解析器组合器。我被介绍给typeclass及其函数 我的代码中有一个解析器函数,它的定义是Parsing 解析器函数中的故障处理,parsing,haskell,parser-combinators,trifecta,Parsing,Haskell,Parser Combinators,Trifecta,我正在用库学习解析器组合器。我被介绍给typeclass及其函数 我的代码中有一个解析器函数,它的定义是 fractionOrDecimal :: Parser DoubleOrRational fractionOrDecimal = (Left <$> try parseDecimal) -- A <|> (Right <$> try parseFraction) --
fractionOrDecimal :: Parser DoubleOrRational
fractionOrDecimal =
(Left <$> try parseDecimal) -- A
<|> (Right <$> try parseFraction) -- B
<|> (fail "Expected Fraction or Decimal.") -- Err
fractionOrDecimal::Parser DoubleOrRational
断裂的=
(左)-A
(右)-B
(未通过“预期分数或小数”-错误
它尝试将输入解析为十进制或分数,如果没有任何结果,则会失败。这种方法正确吗?或者我应该对失败(fail)进行不同的编码,而不是将其作为操作的一部分。失败是由缺少成功的解析器编码的。Trifecta将为您跟踪预期的令牌,但您必须使用
告诉它它们的名称。你会这么做吗
fractionOrDecimal::Parser DoubleOrRational
断裂的=
(左尝试解析十进制“十进制”)
(右键“分数”)
我们现在得到如下错误:
>>> parseTest fractionalOrDecimal "neither fractional nor decimal"
error: expected: Decimal, Fractional
neither fractional nor decimal<EOF>
^
>>parseTest分式逻辑分式“既不是小数也不是小数”
错误:应为十进制、小数
既不是小数也不是小数
^
失败是由于缺少成功的解析器而编码的。Trifecta将为您跟踪预期的令牌,但您必须使用
告诉它它们的名称。你会这么做吗
fractionOrDecimal::Parser DoubleOrRational
断裂的=
(左尝试解析十进制“十进制”)
(右键“分数”)
我们现在得到如下错误:
>>> parseTest fractionalOrDecimal "neither fractional nor decimal"
error: expected: Decimal, Fractional
neither fractional nor decimal<EOF>
^
>>parseTest分式逻辑分式“既不是小数也不是小数”
错误:应为十进制、小数
既不是小数也不是小数
^
谢谢。直到功能。谢谢。TIL函数。