我敢肯定,对此有一个非常简单的答案,但是我整天都在盯着它看,但我想不通。
根据教程,我正在实现一个 JSON 解析器。为了挑战自己,我自己实现了number
解析器。
这是我到目前为止得到的:
let jnumber =
let neg = stringReturn "-" -1 <|> preturn 1
let digit = satisfy (isDigit)
let digit19 = satisfy (fun c -> isDigit c && c <> '0')
let digits = many1 digit
let ``int`` =
digit
<|> (many1Satisfy2 (fun c -> isDigit c && c <> '0') isDigit)
麻烦的是那digit
是一个Parser<char,_>
,而第二个选项int
是一个Parser<string,_>
。我通常会只使用组合器digit
变成Parser<char,_>
,还是我应该做其他事情?