ddc-source-tetra-0.4.3.1: DDC/Source/Tetra/Convert/Prim.hs
module DDC.Source.Tetra.Convert.Prim
( toCoreTyConTetra
, toCorePrimVal
, toCorePrimLit)
where
import qualified DDC.Core.Tetra.Prim as C
import qualified DDC.Source.Tetra.Prim as S
-- | Convert a Tetra specific type constructor to core.
toCoreTyConTetra :: S.PrimTyConTetra -> C.TyConTetra
toCoreTyConTetra tc
= case tc of
S.PrimTyConTetraTuple n -> C.TyConTetraTuple n
S.PrimTyConTetraVector -> C.TyConTetraVector
S.PrimTyConTetraF -> C.TyConTetraF
S.PrimTyConTetraC -> C.TyConTetraC
S.PrimTyConTetraU -> C.TyConTetraU
-- | Convert a value primtivie to a core name.
toCorePrimVal :: S.PrimVal -> C.Name
toCorePrimVal pv
= case pv of
S.PrimValArith p -> C.NamePrimArith p False
S.PrimValCast p -> C.NamePrimCast p False
S.PrimValError p -> C.NameOpError p False
S.PrimValVector p -> C.NameOpVector p False
S.PrimValFun p -> C.NameOpFun p
S.PrimValLit p -> toCorePrimLit p
-- | Convert a primitive literal to a core name.
toCorePrimLit :: S.PrimLit -> C.Name
toCorePrimLit pl
= case pl of
S.PrimLitBool x -> C.NameLitBool x
S.PrimLitNat x -> C.NameLitNat x
S.PrimLitInt x -> C.NameLitInt x
S.PrimLitSize x -> C.NameLitSize x
S.PrimLitWord x s -> C.NameLitWord x s
S.PrimLitFloat x s -> C.NameLitFloat x s
S.PrimLitChar x -> C.NameLitChar x
S.PrimLitTextLit x -> C.NameLitTextLit x