mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-18 09:19:32 -06:00
47 lines
1.1 KiB
Haskell
47 lines
1.1 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- Module : PrExp
|
|
-- Maintainer : AR
|
|
-- Stability : (stable)
|
|
-- Portability : (portable)
|
|
--
|
|
-- > CVS $Date: 2005/04/21 16:21:28 $
|
|
-- > CVS $Author: bringert $
|
|
-- > CVS $Revision: 1.5 $
|
|
--
|
|
-- print trees without qualifications
|
|
-----------------------------------------------------------------------------
|
|
|
|
module GF.Canon.PrExp (prExp) where
|
|
|
|
import GF.Canon.AbsGFC
|
|
import GF.Canon.GFC
|
|
|
|
import GF.Data.Operations
|
|
|
|
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
|