anchor.diff:      || c >= '0' && c <= '9'
       || c = '$'
   
  +let unquotedNameOrKeyword =
  +    many1Satisfy2 isInitialIdentifierCharacter isFollowingIdentifierCharacter
  +
   /// A plain, unquoted name.
   let unquotedName =
  -    let identifier =
  -        many1Satisfy2 isInitialIdentifierCharacter isFollowingIdentifierCharacter
  -    identifier >>=? fun ident ->
  +    unquotedNameOrKeyword >>=? fun ident ->
           if sqlKeywords.Contains(ident) then
               fail (sprintf "Reserved keyword %s used as name" ident)
           else
  
positive.code:     | None -> fun inSet left -> InExpr (left, inSet)
  
  let similarityOperator =
      %% +.((%% kw "NOT" -- ws1 -%> ()) * zeroOrOne)
      -? +.[
              %% kw "LIKE" -%> Like
              %% kw "GLOB" -%> Glob
  
negative.code: 
  let isOperator =
      %% kw "IS"
      -- +.(zeroOrOne * kw "NOT")
      -%> function
      | Some () -> binary IsNot
      | None -> binary Is
  
  let inOperator =
      %% +.(zeroOrOne * kw "NOT")
      -? kw "IN"
      -- +.[
              %% '('
  