1

我不确定如何使用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”,正如我所期望的那样......我觉得我错过了一些非常简单的东西,但是唉,我不知道是什么;你能帮助我吗?

4

1 回答 1

4

setPosition函数更改 Parsec 报告错误的位置,但不影响解析实际在标记流中的位置。它被用作需要做花哨的事情的后端的原语:必须报告其他文件中位置的预处理器,对非Char标记流进行操作的解析器等等。

于 2012-07-17T20:34:15.417 回答