【问题标题】:Choice operator in Haskell's parsec libraryHaskell 的 parsec 库中的选择运算符
【发布时间】:2013-06-02 10:10:43
【问题描述】:

Parsec 文件中关于<|> 的内容如下

这个组合器实现了选择。解析器 p q 首先应用 p。 如果成功,则返回 p 的值。如果 p 失败 使用任何输入,解析器 q 被尝试。这个组合器被定义 等于 MonadPlus 类的 mplus 成员和 (Control.Applicative.) Control.Applicative.Alternative 的成员。

<|>的回溯版如何实现?当p 消耗任何输入时它会回溯,这样q 可以再次应用于完整输入。

【问题讨论】:

    标签: haskell text-parsing parsec


    【解决方案1】:

    要启用回溯,您只需使用try,例如try p <|> q.

    但是,请注意过度使用try 会损害解析器的性能。请考虑使用left factoring 您的语法,以尽可能消除常见的前缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 2014-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多