CSPM-Frontend-0.7.4.4: src/Language/CSPM/UnicodeSymbols.hs
----------------------------------------------------------------------------
-- |
-- Module : Language.CSPM.UnicodeSymbols
--
-- Stability : experimental
-- Portability : GHC-only
--
-- Unicode symbols for CPSM operators
module Language.CSPM.UnicodeSymbols
where
import Language.CSPM.TokenClasses
import qualified Data.Array as Array
import qualified Data.Map as Map
unicodeSymbols :: [(Char, PrimToken, String)]
unicodeSymbols = [
('\172' ,T_not ,"not" ) -- ¬
-- , ('\964' ,T_tau ,"tau" ) -- τ
-- , ('\8714' ,T_member ,"member" ) -- ∊
, ('\8741' ,T_parallel ,"||" ) -- ∥
, ('\8743' ,T_and ,"and" ) -- ∧
, ('\8744' ,T_or ,"or" ) -- ∨
-- , ('\8745' ,T_inter ,"inter" ) -- ∩
-- , ('\8746' ,T_union ,"union" ) -- ∪
, ('\8800' ,T_neq ,"!=" ) -- ≠
, ('\8801' ,T_eq ,"==" ) -- ≡
, ('\8804' ,T_le ,"<=" ) -- ≤
, ('\8805' ,T_ge ,">=" ) -- ≥
, ('\8849' ,T_Refine ,"[=" ) -- ⊑
, ('\8851' ,T_sqcap ,"|~|" ) -- ⊓
, ('\8898' ,T_Inter ,"Inter" ) -- ⋂
, ('\8899' ,T_Union ,"Union" ) -- ⋃
, ('\9651' ,T_triangle ,"/\\" ) -- △
, ('\9655' ,T_rhd ,"[>" ) -- ▷
, ('\9656' ,T_exp ,"|>" ) -- ▸
, ('\9723' ,T_box ,"[]" ) -- ◻
, ('\10132' ,T_rightarrow ,"->" ) -- ➔
, ('\10214' ,T_openBrackBrack ,"[[" ) -- ⟦
, ('\10215' ,T_closeBrackBrack ,"]]" ) -- ⟧
, ('\10216' ,T_lt ,"<" ) -- ⟨
, ('\10217' ,T_gt ,">" ) -- ⟩
, ('\10231' ,T_leftrightarrow ,"<->" ) -- ⟷
]
{-
tableLine (char,tok,string) = concat
[ " , ("
, tab 10 $ ("'\\" ++ (show $ fromEnum char) ++ "'"),","
, tab 20 $ show tok, ","
, tab 10 $ show string, ") -- "
, [char], "\n"
]
where
tab x s = take x $ s ++ repeat ' '
-}
lookupDefaultSymbol :: PrimToken -> (Maybe (Char,String))
lookupDefaultSymbol = (Array.!) table
where
table :: Array.Array PrimToken (Maybe (Char,String))
table = (Array.//)
(Array.listArray (minBound,maxBound) $ repeat Nothing)
[(tok,Just (uni,ascii)) | (uni,tok,ascii) <- unicodeSymbols]
lookupToken :: Char -> Maybe PrimToken
lookupToken = flip (Map.lookup) symbolMap
where
symbolMap = Map.fromList [(uni,tok) | (uni,tok,_string) <- unicodeSymbols]