summaryrefslogtreecommitdiff
path: root/src/GF/Conversion/Prolog.hs
diff options
context:
space:
mode:
authorpeb <peb@cs.chalmers.se>2006-01-13 08:42:25 +0000
committerpeb <peb@cs.chalmers.se>2006-01-13 08:42:25 +0000
commitacd24331af16964c6f3dad549ce43e44130b1284 (patch)
tree857123cbe46d725e402d63585eb486dd184a1309 /src/GF/Conversion/Prolog.hs
parent7752543f042b555bc87d57c3c3dcbfb15f2132c3 (diff)
peb
Diffstat (limited to 'src/GF/Conversion/Prolog.hs')
-rw-r--r--src/GF/Conversion/Prolog.hs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/GF/Conversion/Prolog.hs b/src/GF/Conversion/Prolog.hs
index ab4b53e66..235f31198 100644
--- a/src/GF/Conversion/Prolog.hs
+++ b/src/GF/Conversion/Prolog.hs
@@ -101,10 +101,10 @@ prtSPath (Path path) = prtPList (map (either prtQ prtSTerm) path)
prtSCat (Decl var cat args) = prVar ++ prtFunctor (prtQ cat) (map prtSTTerm args)
where prVar | var == anyVar = ""
- | otherwise = "_" ++ prt var ++ ":"
+ | otherwise = "_" ++ prtVar var ++ ":"
prtSTTerm (con :@ args) = prtFunctor (prtQ con) (map prtSTTerm args)
-prtSTTerm (TVar var) = "_" ++ prt var
+prtSTTerm (TVar var) = "_" ++ prtVar var
----------------------------------------------------------------------
-- | MCFG to Prolog
@@ -188,6 +188,11 @@ prtQStr atom = "'" ++ concatMap esc (prt atom) ++ "'"
esc '\t' = "\\t"
esc c = [c]
+prtVar var = reprime (prt var)
+ where reprime "" = ""
+ reprime ('\'' : cs) = "_0" ++ reprime cs
+ reprime (c:cs) = c : reprime cs
+
prtLine = replicate 70 '%'