gpt4 book ai didi

parsing - 使用解析器组合器的原因是什么?

转载 作者:行者123 更新时间:2023-12-01 03:18:10 25 4
gpt4 key购买 nike

我在看 following approach在 Haskell 中使用解析器组合器。作者给出了以下 Parser Combinators 的例子:

windSpeed :: String -> Maybe Int
windSpeed windInfo =
parseMaybe windSpeedParser windInfo

windSpeedParser :: ReadP Int
windSpeedParser = do
direction <- numbers 3
speed <- numbers 2 <|> numbers 3
unit <- string "KT" <|> string "MPS"
return speed

作者对这种做法给出了以下理由:
  • 易于阅读(我同意这一点)
  • 与规范类似的格式,即解析器本身基本上是对其解析内容的描述(我同意这一点)

  • 我不禁觉得我错过了选择解析器组合器的一些原因。 using 的一些好处Haskell,编译时 guarantees , elimination运行时错误。或者当您开始 parsing 时的一些后续好处DSL and using免费的单子(monad)。

    我的问题是: 使用解析器组合器的原因是什么?

    最佳答案

    我看到了使用解析器组合器的几个好处:

  • 解析器组合器是手写自上而下解析器的泛化。在您手写解析器的情况下,使用解析器组合器来抽象出常见的模式。
  • 与解析器生成器不同,解析器组合器可能是动态的,允许在运行时做出决策。如果可以基于输入重新定义语言的语法,则此方面可能很有用。
  • 解析器是一流的对象。
  • 关于parsing - 使用解析器组合器的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47672947/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com