我有这个测试程序:
open FParsec
let test p str =
match run p str with
| Success(result, _, _) -> printfn "Success: %A" result
| Failure(errorMsg, _, _) -> printfn "Failure: %s" errorMsg
let str s = pstring s
let sepPart = skipNewline >>. pstring "-"
let part = manyChars (notFollowedBy sepPart >>. anyChar)
[<EntryPoint>]
let main argv =
let s = "AA 12345\nBB 6789\n-----\nCC 9876\nDD 54321\n-----"
test part s
test (many part) s
0 // return an integer exit code
{test part s} 行按预期工作,但下一行 {test (many part) s} 失败,我不明白我做错了什么。
编辑:
为了澄清,我想做的是让 {test (many part) s} return ["AA 12345\nBB 6789"; “CC 9876\nDD 54321”]。换句话说,我所拥有的是一个由“pars”或“chunks”组成的输入字符串,这些字符串由带有所有破折号的行分隔。对于输出,我想要一个数组,其中每个元素都是部分之一,并且带有破折号的行被简单地丢弃。