FParsec 特殊字符之间的字符串列表

FParsec list of string between special char

在尝试解析 {asdc,456,ghji,abc} 时,我 运行

run specialListParser "{asdc,456,ghji,abc}"

解析器失败

The error occurred at the end of the input stream.
Expecting: any char not in ‘,’, ',' or '}'

我根据这个 :

定义了我的解析器
let str : Parser<_> = many1Chars (noneOf ",")
let comma = pstring ","
let listParser = sepBy str comma

let specialListParser = between (pstring "{") (pstring "}") listParser

我错过了什么?

看起来您的 str 解析器正在使用最终的 },因此 between 永远看不到它。将您的 str 解析器更改为 many1Chars (noneOf ",}"),它应该可以工作。

或者,noneOf [','; '}'] 也可以,并且可能更明确地说明您的意图。