module Language.HERMIT.Syntax ( -- * Syntax Utilities isIdFirstChar, isIdChar, isInfixId ) where import Data.Char (isAlphaNum) --------------------------------------------------------------------- -- | Chars that are valid in identifiers anywhere. isIdFirstChar :: Char -> Bool isIdFirstChar c = isAlphaNum c || c `elem` "$_:." {-# INLINE isIdFirstChar #-} -- | Chars that are valid in identifiers, but not as the first character. isIdChar :: Char -> Bool isIdChar c = isIdFirstChar c || c `elem` "-'" {-# INLINE isIdChar #-} -- | Chars that are valid in infix operators. isInfixId :: Char -> Bool isInfixId c = c `elem` "!£$%^&*-+=@#<>?/.:|" -- I removed _ ' \\ as I don't think they're valid infix-operator symbols. {-# INLINE isInfixId #-} ---------------------------------------------------------------------