Parsing fparsec运算符receidenceparser:如何处理不完整的括号

Parsing fparsec运算符receidenceparser:如何处理不完整的括号,parsing,f#,dayofweek,fparsec,Parsing,F#,Dayofweek,Fparsec,此代码将读取此输入(周末-周日),然后返回“周六” 但是输入“WEEKEND-SUNDAY”仍然返回“SATURDAY”=>这个解析器忽略上一个“')” 输出 Success: set [Monday; Saturday] 问题是 run pExpr "MONDAY+WEEKEND-SUNDAY)" or run pExpr "MONDAY)+WEEKEND-SUNDAY" 它还会回来吗 Success: set [Monday; Saturday] 我想让它表现出失败:某种东西 我

此代码将读取此输入(周末-周日),然后返回“周六” 但是输入“WEEKEND-SUNDAY”仍然返回“SATURDAY”=>这个解析器忽略上一个“')”

输出

 Success: set [Monday; Saturday]
问题是

 run pExpr "MONDAY+WEEKEND-SUNDAY)" or run pExpr "MONDAY)+WEEKEND-SUNDAY"
它还会回来吗

 Success: set [Monday; Saturday]
我想让它表现出失败:某种东西


我错过什么了吗?感谢您

在后两个示例中,
pexpr
在成功解析输入流到不匹配的右括号后返回。因此,在最后一个示例中,结果实际上是
Success:set[Monday]
而不是
Success:set[Monday;Saturday]

如果输入流尚未完全使用,则可以使用
eof
解析器强制执行错误:

> run (pExpr .>> eof) "MONDAY)+WEEKEND-SUNDAY"
Error in Ln: 1 Col: 7
MONDAY)+WEEKEND-SUNDAY
      ^
Expecting: end of input or infix operator
 Success: set [Monday; Saturday]
> run (pExpr .>> eof) "MONDAY)+WEEKEND-SUNDAY"
Error in Ln: 1 Col: 7
MONDAY)+WEEKEND-SUNDAY
      ^
Expecting: end of input or infix operator