anchor.diff:                   <|> (stringReturn "Song"      (AttrSong ""))
                    <|> (stringReturn "TimeInSec" (AttrTimeInSec 0))
                    <|> (stringReturn "Album"     (AttrAlbum ""))
  -let sby = str "by" >>. ws >>. (sepBy1 sattributeop (str ","))
  -let sorder = str "order" >>. ws >>. (sepBy1 sattribute (str ",") |>> SesOrder)
  +let sby = str "by" >>. ws >>. (sepBy1 (ws >>. sattributeop) (str ","))
  +let sorder = str "order" >>. ws >>. (sepBy1 (ws >>. sattribute) (str ",") |>> SesOrder)
   let sshuffle = stringReturn "shuffle" SesShuffle
   let ssort = sorder <|> sshuffle
   let stop = str "top" >>. ws >>. pint32
  -let sselect = str "select" >>. sby .>>. ssort .>>. stop
  +let sselect = str "select" >>. ws >>. (sby .>> ws) .>>. (ssort .>> ws) .>>. stop
   
   (* Main *)
   let runinit file =
  
positive.code: let jnull = stringReturn "null" JNull
  let jbool =     (stringReturn "true"  (JBool true))
              <|> (stringReturn "false" (JBool false))
  let jnumber = pfloat |>> JNumber
  let jvalue, jvalueRef = createParserForwardedToRef<Json, unit>()
  let jlist = listBetweenStrings "[" "]" jvalue JList
  let keyValue = stringLiteral .>>. (ws >>. str ":" >>. ws >>. jvalue)
  
negative.code: 
  (* Parse JSON *)
  type Json = JString of string
            | JNumber of int
            | JBool   of bool
            | JNull
            | JList   of Json list
  