【发布时间】:2014-02-07 14:27:05
【问题描述】:
我找到的关于解析器组合器的材料涵盖了通过组合构建复杂的解析器,但我想知道是否有任何好的方法可以通过调整库的组合解析器而不完全复制原始库的逻辑来定义解析器。
例如,这是Real world Haskell中定义的简化CSV解析器
import Text.ParserCombinators.Parsec
csvFile = endBy line eol
line = sepBy cell (char ',')
cell = many (noneOf ",\n")
eol = char '\n'
假设csvFile 是在一个库中定义的,那么另一个库是否可以使用自定义版本的cell 解析器创建自己的CSV 解析器,而不必重写line 和csvFile 解析器?可以重写源库以使这成为可能吗?这对于 CSV 解析器来说足够简单,但我对广泛适用的解决方案感兴趣。
【问题讨论】:
标签: parsing haskell functional-programming parser-combinators