anchor.diff:          pBool_toml           |>> Value.Bool
           pDateTime_toml       |>> Value.DateTime
       ]
  +
  +
  +(*  Key Parsers *)
  +
  +let pBareKey : Parser<_> = 
  +    many1Satisfy (isDigit|?|isLetter|?|isAnyOf['_';'-']) 
  +
  +
  +let pQuoteKey : Parser<_> = 
  +    between ``"`` ``"`` (many1Chars anyChar) 
  +
  +
  +let toml_key : Parser<_> =
  +    choice [pBareKey |>> Key.Bare; pQuoteKey |>> Key.Quoted]
  +
  +
  +let pTableKey : Parser<_> = 
  +    between ``[`` ``]`` (sepBy pBareKey ``.``)
  +
  +let pTableArrayKey : Parser<_> = 
  +    between ``[[`` ``]]`` (sepBy pBareKey ``.``)
  +
  +
  +
  +(*  Collection Parsers *)
  +
   
   // Forward declaration to allow mutually recursive 
   // parsers between arrays and inline tables
  
positive.code: 
  
          Could do if digit then (float <|> int <|> datetime)
          
  *)
  
  
negative.code: let tspcs = toml_spaces
  let skip_tspcs = skip_toml_spaces
  
  (*  Punctuation Parsers *)
  
  let ``.``: Parser<_>    = pchar '.'
  let ``,``: Parser<_>    = attempt (skip_tspcs >>. pchar ',' .>> skip_tspcs)  
  