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 [','; '}']
也可以,并且可能更明确地说明您的意图。
在尝试解析 {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 [','; '}']
也可以,并且可能更明确地说明您的意图。