-- This corresponds to src/comp/Lex.hs in bsc.
module Language.Bluespec.Lex
  ( isIdChar
  , isSym
  ) where

import Data.Char (isAlphaNum)

import Language.Bluespec.Prelude

isSym :: Char -> Bool
isSym :: Char -> Bool
isSym Char
'!' = Bool
True; isSym Char
'@' = Bool
True; isSym Char
'#' = Bool
True; isSym Char
'$' = Bool
True
isSym Char
'%' = Bool
True; isSym Char
'&' = Bool
True; isSym Char
'*' = Bool
True; isSym Char
'+' = Bool
True
isSym Char
'.' = Bool
True; isSym Char
'/' = Bool
True; isSym Char
'<' = Bool
True; isSym Char
'=' = Bool
True
isSym Char
'>' = Bool
True; isSym Char
'?' = Bool
True; isSym Char
'\\' = Bool
True; isSym Char
'^' = Bool
True
isSym Char
'|' = Bool
True; isSym Char
':' = Bool
True; isSym Char
'-' = Bool
True; isSym Char
'~' = Bool
True
isSym Char
',' = Bool
True
isSym Char
c | Char
c Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
>= Char
'\x80' = Char
c Char -> [Char] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [Char
'\162', Char
'\163', Char
'\164', Char
'\165', Char
'\166',
                                  Char
'\167', Char
'\168', Char
'\169', Char
'\170', Char
'\171',
                                  Char
'\172', Char
'\173', Char
'\174', Char
'\175', Char
'\176',
                                  Char
'\177', Char
'\178', Char
'\179', Char
'\180', Char
'\181',
                                  Char
'\183', Char
'\184', Char
'\185', Char
'\186', Char
'\187',
                                  Char
'\188', Char
'\189', Char
'\190', Char
'\191', Char
'\215',
                                  Char
'\247' ]

--isSym c | c >= '\x80' = isSymbol c
isSym Char
_ = Bool
False

isIdChar :: Char -> Bool
isIdChar :: Char -> Bool
isIdChar Char
'\'' = Bool
True
isIdChar Char
'_' = Bool
True

-- \176 (hexB0) (octal 0260) is the degree symbol
isIdChar Char
'\176' = Bool
True
-- \180 (hexB4) (octal 0264) is the prime (acute accent) symbol
isIdChar Char
'\180' = Bool
True
isIdChar Char
c = Char -> Bool
isAlphaNum Char
c