在尝试解析时{asdc,456,ghji,abc},我跑了
run specialListParser "{asdc,456,ghji,abc}"
Run Code Online (Sandbox Code Playgroud)
解析器失败了
错误发生在输入流的末尾.
期待:任何不在',',','或'}'中的字符
我根据这个答案定义了我的解析器:
let str : Parser<_> = many1Chars (noneOf ",")
let comma = pstring ","
let listParser = sepBy str comma
let specialListParser = between (pstring "{") (pstring "}") listParser
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
看起来你的str解析器正在消耗最终的},所以between永远不会看到它.更改您的str解析器many1Chars (noneOf ",}"),它应该工作.
或者,noneOf [','; '}']也可以工作,并且可能更明确地表达您的意图.