【发布时间】:2021-11-07 21:10:57
【问题描述】:
我正在尝试使用 FParsec 解析固定字符串。例如parsing null from the documentation:
open FParsec
type Json = JNull
let jnull : Parser<_> = stringReturn "null" JNull
然后在"null" 上运行jnull 会得到预期的结果
> run jnull "null";;
val it : ParserResult<Json,unit> = Success: JNull
但如果我在 "nulls" 上运行它也会成功
> run jnull "nulls";;
val it : ParserResult<Json,unit> = Success: JNull
然后我尝试添加null后跟空格的要求:
let jnull : Parser<_> = stringReturn "null" JNull >>. spaces
但是,这给了我和以前一样的结果。
我也试过用manyMinMaxSatisfyL:
let jnull: Parser<_> =
manyMinMaxSatisfyL 4 4 isLower "should be null"
>>. pstring "null"
>>. spaces
这个在"nulls" 上失败了,但在"null" 上也失败了:
> run jnull "nulls";;
val it : ParserResult<unit,unit> =
Failure:
Error in Ln: 1 Col: 5
nulls
^
Expecting: 'null'
> run jnull "null";;
val it : ParserResult<unit,unit> =
Failure:
Error in Ln: 1 Col: 5
null
^
Note: The error occurred at the end of the input stream.
Expecting: 'null'
我在这里做错了什么?还是我完全误解了解析?
【问题讨论】: