fplExt :: [String] -> AParser st FplExt
fplExt ks = itemList ks sortS fplSortItem FplSortItems
  <|> itemList (delete functS ks) opS fplOpItem FplOpItems
  <|> ((pluralKeyword etypeS <|> pluralKeyword typeS <|> pluralKeyword predS
      <|> pluralKeyword esortS <|> asKey generatedS <|> asKey freeS)
       >>= \ k -> unexpected $ "CASL keyword '" ++ shows k "'")
fplExt :: [String] -> AParser st FplExt
fplExt ks = itemList ks sortS fplSortItem FplSortItems
  <|> itemList (delete functS ks) opS fplOpItem FplOpItems
  <|> ((pluralKeyword etypeS <|> pluralKeyword typeS <|> pluralKeyword predS
      <|> pluralKeyword esortS <|> asKey generatedS <|> asKey freeS)
       >>= \ k -> unexpected $ "CASL keyword '" ++ shows k "'")
fplExt ks = itemList ks sortS fplSortItem FplSortItems
  <|> itemList (delete functS ks) opS fplOpItem FplOpItems
  <|> ((pluralKeyword etypeS <|> pluralKeyword typeS <|> pluralKeyword predS
      <|> pluralKeyword esortS <|> asKey generatedS <|> asKey freeS)
       >>= \ k -> unexpected $ "CASL keyword '" ++ shows k "'")