summaryrefslogtreecommitdiff
path: root/src/GF/Canon/PrExp.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/Canon/PrExp.hs')
-rw-r--r--src/GF/Canon/PrExp.hs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/GF/Canon/PrExp.hs b/src/GF/Canon/PrExp.hs
new file mode 100644
index 000000000..6052f9a7f
--- /dev/null
+++ b/src/GF/Canon/PrExp.hs
@@ -0,0 +1,36 @@
+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