Parsing 现实世界的哈斯克尔';CSV解析器的实现
Goerzen等人提供了一个CSV文件解析器的简单实现,用于向真实世界的Haskell读者介绍Parsec解析组合器库 以下是他们简明程序的一个版本:Parsing 现实世界的哈斯克尔';CSV解析器的实现,parsing,csv,haskell,Parsing,Csv,Haskell,Goerzen等人提供了一个CSV文件解析器的简单实现,用于向真实世界的Haskell读者介绍Parsec解析组合器库 以下是他们简明程序的一个版本: import Text.ParserCombinators.Parsec csvFile = endBy line eol line = sepBy cell (char ',') cell = many (noneOf ",\n") eol = char '\n' parseCSV :: String -> Either ParseE
import Text.ParserCombinators.Parsec
csvFile = endBy line eol
line = sepBy cell (char ',')
cell = many (noneOf ",\n")
eol = char '\n'
parseCSV :: String -> Either ParseError [[String]]
parseCSV input = parse csvFile "(unknown)" input
代码按预期运行,但我不明白在最后一行传递字符串“(未知)”参数的目的。这是我不知道的习惯用法吗?它的-用于在错误情况下提供更好的表示
它是Parsec中许多东西的SourcePos
的一部分,例如在错误情况下得到的
您可能希望出现类似“文件源名称在第x行/第y列中出错”这样的情况
从您自己的计算中,您可以获得它(这再次为您提供了一个SourcePos
——从那里您可以使用sourceName
来获取此参数)