我敢肯定,对此有一个非常简单的答案,但是我整天都在盯着它看,但我想不通。
根据教程,我正在实现一个 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,_>,还是我应该做其他事情?