これには本当に簡単な答えがあると確信していますが、私は一日中これを見つめていて、それを理解することができません.
チュートリアルに従って、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,_>
であるのに対し、 の 2 番目のオプションはint
ですParser<string,_>
。通常、コンビネータを使用して にdigit
変換しParser<char,_>
ますか、それとも何か他にすべきことはありますか?