You are on page 1of 1

#r @"C:\GitHub\FParsec\FParsec.1.0.2\lib\net40-client\FParsecCS.

dll"
#r @"C:\GitHub\FParsec\FParsec.1.0.2\lib\net40-client\FParsec.dll"
open System
open FParsec
let print s = printfn "%A" s
type kvp = { key: String; value: int}
let
let
let
let

quote = pchar('"')
notQuote = noneOf(['"'])
notQuotesTill = manyCharsTill(notQuote)
notQuotes = notQuotesTill(quote)

let quotedParser = parse{do! spaces


do! skipChar('"')
let! listChar = notQuotes
do! spaces
return listChar }
let intParser = quotedParser |>> Convert.ToInt32
let toyJsonParser = parse {do! spaces
do! skipChar('{')
let! key = quotedParser
do! skipChar(':')
let! value = intParser
do! skipChar('}')
do! spaces
return({ key = key;
value = value })}
run toyJsonParser """
{ "age": "29" }
"""
|> function
| Failure(err,_,_) -> print ("Fail: " + err)
| Success(result,_,_) ->
printfn "KVP: %A" result
printfn "Key: %A" result.key
printfn "Val: %A" result.value

You might also like