{-# LANGUAGE OverloadedStrings #-} -- | Haskell's reserved words. module BNFC.Backend.Haskell.Utilities.ReservedWords where import BNFC.Prelude hsReservedWords :: [String] hsReservedWords = [ "as" , "case" , "class" , "data" , "default" , "deriving" , "do" , "else" , "family" , "forall" , "foreign" , "hiding" , "if" , "import" , "in" , "infix" , "infixl" , "infixr" , "instance" , "let" , "mdo" , "module" , "newtype" , "of" , "pattern" , "proc" , "qualified" , "rec" , "then" , "type" , "where" ] -- | Modifier to avoid clashes in definition. avoidReservedWords :: String -> String avoidReservedWords x | x `elem` hsReservedWords = x ++ "'" | otherwise = x avoidReservedWordsArgs :: String -> String avoidReservedWordsArgs x | x `elem` hsReservedWords = x ++ "_" | otherwise = x avoidReservedWords' :: String1 -> String avoidReservedWords' = avoidReservedWords . toList avoidReservedWordsArgs' :: String1 -> String avoidReservedWordsArgs' = avoidReservedWordsArgs . toList avoidReservedWords1 :: String1 -> String1 avoidReservedWords1 x = if toList x `elem` hsReservedWords then x <> ('\'':|[]) else x