anchor.diff:      let! q2 = character '\"'
       return s
     }
  -
  +(*
  +    Creates a Parser satisfying the input ( in EBNF ):
  +
  +    tab ::= '\t'
  +*)
   let tab() = 
     p{
       let! t = (character '\t') + (word "  ")
       return ()
     }
  -
  +(*
  +    Helper function to see if the input buffer is empty.
  +    If the input buffer is empty the end of the file has been reached.
  +*)
   let eof() =
     (fun buf ctxt pos ->
        match buf with
        | [] -> [(),[],ctxt,pos],[]
        | _ -> [],[Error pos]) |> Parser.Make
  -
  +(*
  +    Helper function to check for a valid new line.
  +*)
   let newline() = word "\r\n" + word "\n\r" + character '\n'
  -
  +(*
  +    The function blanc_space creates a new Parser matcing all whitespaces of the form of ' '.
  +*)
   let blank_space() = takeWhile (character ' ')
   
   let empty_line() = 
  
positive.code:       return id + "." + rest
      | Second _ -> return id
    }
  
  let stringLiteral() =
    p{
      let! q1 = character '\"'
  
negative.code:           yield k.Parse restBuf ctxt' pos'
          ]
        out |> List.map fst |> List.concat, err @ (out |> List.map snd |> List.concat)) |> Parser.Make
    (*
      The function Return creates a new Parser from any type 'a.
    *)
    member this.Return(x:'a) : Parser<'a,'ctxt> =
      (fun buf ctxt pos -> [x,buf,ctxt,pos],[]) |> Parser.Make
    member this.ReturnFrom(x:Parser<'a,'ctxt>) : Parser<'a,'ctxt> = x
  