forked from GitHub/gf-core
51 lines
1.1 KiB
Haskell
51 lines
1.1 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- Module : (Module)
|
|
-- Maintainer : (Maintainer)
|
|
-- Stability : (stable)
|
|
-- Portability : (portable)
|
|
--
|
|
-- > CVS $Date $
|
|
-- > CVS $Author $
|
|
-- > CVS $Revision $
|
|
--
|
|
-- (Description of the module)
|
|
-----------------------------------------------------------------------------
|
|
|
|
module PrExp where
|
|
|
|
import AbsGFC
|
|
import GFC
|
|
|
|
import Operations
|
|
|
|
-- some printing
|
|
|
|
-- print trees without qualifications
|
|
|
|
prExp :: Exp -> String
|
|
prExp e = case e of
|
|
EApp f a -> pr1 f +++ pr2 a
|
|
EAbsR x b -> "\\" ++ prtt x +++ "->" +++ prExp b
|
|
EAbs x _ b -> prExp $ EAbsR x b
|
|
EProd x a b -> "(\\" ++ prtt x +++ ":" +++ prExp a ++ ")" +++ "->" +++ prExp b
|
|
EAtomR a -> prAtom a
|
|
EAtom a _ -> prAtom a
|
|
_ -> prtt e
|
|
where
|
|
pr1 e = case e of
|
|
EAbsR _ _ -> prParenth $ prExp e
|
|
EAbs _ _ _ -> prParenth $ prExp e
|
|
EProd _ _ _ -> prParenth $ prExp e
|
|
_ -> prExp e
|
|
pr2 e = case e of
|
|
EApp _ _ -> prParenth $ prExp e
|
|
_ -> pr1 e
|
|
|
|
prAtom a = case a of
|
|
AC c -> prCIdent c
|
|
AD c -> prCIdent c
|
|
_ -> prtt a
|
|
|
|
prCIdent (CIQ _ c) = prtt c
|