summaryrefslogtreecommitdiff
path: root/src/GF/Speech/PrSLF.hs
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2007-01-05 15:38:47 +0000
committerbringert <bringert@cs.chalmers.se>2007-01-05 15:38:47 +0000
commit6ee7296f9dd5290bb3ee581403a18464444ab28b (patch)
treee78719e9463866a899bfe5e1cabc26844860e7c0 /src/GF/Speech/PrSLF.hs
parent741dde5a2a00dc737e570a7005663c2534ea4f6d (diff)
Changed all SRG printer to take Options and StateGrammar arguments. This makes Custom a lot cleaner.
Diffstat (limited to 'src/GF/Speech/PrSLF.hs')
-rw-r--r--src/GF/Speech/PrSLF.hs33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/GF/Speech/PrSLF.hs b/src/GF/Speech/PrSLF.hs
index 08af81549..a608917b6 100644
--- a/src/GF/Speech/PrSLF.hs
+++ b/src/GF/Speech/PrSLF.hs
@@ -26,6 +26,7 @@ import GF.Conversion.Types
import GF.Formalism.CFG
import GF.Formalism.Utilities (Symbol(..),symbol)
import GF.Infra.Ident
+import GF.Infra.Option (Options)
import GF.Infra.Print
import GF.Speech.CFGToFiniteState
import GF.Speech.FiniteState
@@ -54,9 +55,9 @@ data SLFEdge = SLFEdge { eId :: Int, eStart :: Int, eEnd :: Int }
type SLF_FA = FA State (Maybe (MFALabel String)) ()
-mkFAs :: String -> StateGrammar -> (SLF_FA, [(String,SLF_FA)])
-mkFAs start s = (slfStyleFA main, [(c,slfStyleFA n) | (c,n) <- subs])
- where MFA main subs = {- renameSubs $ -} cfgToMFA start s
+mkFAs :: Options -> StateGrammar -> (SLF_FA, [(String,SLF_FA)])
+mkFAs opts s = (slfStyleFA main, [(c,slfStyleFA n) | (c,n) <- subs])
+ where MFA main subs = {- renameSubs $ -} cfgToMFA opts s
slfStyleFA :: Eq a => DFA a -> FA State (Maybe a) ()
slfStyleFA = renameStates [0..] . removeTrivialEmptyNodes . oneFinalState Nothing ()
@@ -76,9 +77,9 @@ renameSubs (MFA main subs) = MFA (renameLabels main) subs'
-- * SLF graphviz printing (without sub-networks)
--
-slfGraphvizPrinter :: Ident -> String -> StateGrammar -> String
-slfGraphvizPrinter name start
- = prFAGraphviz . gvFA . slfStyleFA . cfgToFA' start
+slfGraphvizPrinter :: Options -> StateGrammar -> String
+slfGraphvizPrinter opts s
+ = prFAGraphviz $ gvFA $ slfStyleFA $ cfgToFA' opts s
where
gvFA = mapStates (fromMaybe "") . mapTransitions (const "")
@@ -86,10 +87,9 @@ slfGraphvizPrinter name start
-- * SLF graphviz printing (with sub-networks)
--
-slfSubGraphvizPrinter :: Ident -- ^ Grammar name
- -> String -> StateGrammar -> String
-slfSubGraphvizPrinter name start s = Dot.prGraphviz g
- where (main, subs) = mkFAs start s
+slfSubGraphvizPrinter :: Options -> StateGrammar -> String
+slfSubGraphvizPrinter opts s = Dot.prGraphviz g
+ where (main, subs) = mkFAs opts s
g = STM.evalState (liftM2 Dot.addSubGraphs ss m) [0..]
ss = mapM (\ (c,f) -> gvSLFFA (Just c) f) subs
m = gvSLFFA Nothing main
@@ -114,20 +114,19 @@ gvSLFFA n fa =
-- * SLF printing (without sub-networks)
--
-slfPrinter :: Ident -> String -> StateGrammar -> String
-slfPrinter name start
- = prSLF . automatonToSLF mkSLFNode . slfStyleFA . cfgToFA' start
+slfPrinter :: Options -> StateGrammar -> String
+slfPrinter opts s
+ = prSLF $ automatonToSLF mkSLFNode $ slfStyleFA $ cfgToFA' opts s
--
-- * SLF printing (with sub-networks)
--
-- | Make a network with subnetworks in SLF
-slfSubPrinter :: Ident -- ^ Grammar name
- -> String -> StateGrammar -> String
-slfSubPrinter name start s = prSLFs slfs
+slfSubPrinter :: Options -> StateGrammar -> String
+slfSubPrinter opts s = prSLFs slfs
where
- (main,subs) = mkFAs start s
+ (main,subs) = mkFAs opts s
slfs = SLFs [(c, faToSLF fa) | (c,fa) <- subs] (faToSLF main)
faToSLF = automatonToSLF mfaNodeToSLFNode