我不确定如何使用setPosition
(Parsec库)。这是一段非常简单的代码,它应该读取文本第二行的前3个字符。
import Text.ParserCombinators.Parsec
content = ["This is the first line",
"and this is the second one",
"not to talk about the third one"]
txt = unlines content
main = parseTest myPar txt
myPar = getPosition >>= \oldPos ->
let newPos = setSourceLine oldPos 2 in
setPosition newPos >>
count 3 anyChar
尽管如此,输出是“Thi”而不是“and”,正如我所想的那样......我觉得我错过了一些非常简单,但唉,我不知道是什么;你能救我吗?
答案 0 :(得分:4)
setPosition
函数更改Parsec报告错误的位置,但不影响解析实际上的标记流中的位置。它被用作需要做奇特事情的后端的原语:必须在其他文件中报告位置的预处理器,在非Char
标记流上运行的解析器,等等。