summaryrefslogtreecommitdiff
path: root/src/GF/Speech
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2006-01-17 02:13:57 +0000
committerbringert <bringert@cs.chalmers.se>2006-01-17 02:13:57 +0000
commitd4d89c72f370fe4c63cc5aaa612e64cb09c6f650 (patch)
tree1fb26d529d18f9858843439c1acc3f0d43a5a474 /src/GF/Speech
parent74c5d41152a0315e038e3d37ac992a26f975b729 (diff)
Use cat and language in ATK si. Support language switching with ATK.
Diffstat (limited to 'src/GF/Speech')
-rw-r--r--src/GF/Speech/CFGToFiniteState.hs15
-rw-r--r--src/GF/Speech/PrFA.hs11
-rw-r--r--src/GF/Speech/PrSLF.hs31
3 files changed, 26 insertions, 31 deletions
diff --git a/src/GF/Speech/CFGToFiniteState.hs b/src/GF/Speech/CFGToFiniteState.hs
index b0d02983a..2fe3dabb1 100644
--- a/src/GF/Speech/CFGToFiniteState.hs
+++ b/src/GF/Speech/CFGToFiniteState.hs
@@ -27,7 +27,6 @@ import GF.Formalism.CFG
import GF.Formalism.Utilities (Symbol(..), mapSymbol, filterCats, symbol, NameProfile(..))
import GF.Conversion.Types
import GF.Infra.Ident (Ident)
-import GF.Infra.Option (Options)
import GF.Speech.FiniteState
import GF.Speech.Graph
@@ -57,9 +56,8 @@ data MFA a = MFA (DFA (MFALabel a)) [(String,DFA (MFALabel a))]
-cfgToFA :: Options -> CGrammar -> DFA String
-cfgToFA opts = minimize . compileAutomaton start . makeSimpleRegular
- where start = getStartCat opts
+cfgToFA :: String -> CGrammar -> DFA String
+cfgToFA start = minimize . compileAutomaton start . makeSimpleRegular
makeSimpleRegular :: CGrammar -> CFRules
makeSimpleRegular = makeRegular . removeIdenticalRules . removeEmptyCats . cfgToCFRules
@@ -155,13 +153,12 @@ make_fa c@(g,ns) q0 alpha q1 fa =
-- * Compile a strongly regular grammar to a DFA with sub-automata
--
-cfgToMFA :: Options -> CGrammar -> MFA String
-cfgToMFA opts g = buildMFA start g
- where start = getStartCat opts
+cfgToMFA :: String -> CGrammar -> MFA String
+cfgToMFA start g = buildMFA start g
-- | Build a DFA by building and expanding an MFA
-cfgToFA' :: Options -> CGrammar -> DFA String
-cfgToFA' opts g = mfaToDFA $ cfgToMFA opts g
+cfgToFA' :: String -> CGrammar -> DFA String
+cfgToFA' start g = mfaToDFA $ cfgToMFA start g
buildMFA :: Cat_ -- ^ Start category
-> CGrammar -> MFA String
diff --git a/src/GF/Speech/PrFA.hs b/src/GF/Speech/PrFA.hs
index e3c22ef1d..c5ac4e134 100644
--- a/src/GF/Speech/PrFA.hs
+++ b/src/GF/Speech/PrFA.hs
@@ -23,7 +23,6 @@ import GF.Conversion.Types
import GF.Formalism.CFG
import GF.Formalism.Utilities (Symbol(..),symbol)
import GF.Infra.Ident
-import GF.Infra.Option
import GF.Infra.Print
import GF.Speech.CFGToFiniteState
import GF.Speech.FiniteState
@@ -37,10 +36,10 @@ import Data.Maybe (fromMaybe)
faGraphvizPrinter :: Ident -- ^ Grammar name
- -> Options -> CGrammar -> String
-faGraphvizPrinter name opts cfg =
+ -> String -> CGrammar -> String
+faGraphvizPrinter name start cfg =
prFAGraphviz $ mapStates (const "") fa
- where fa = cfgToFA opts cfg
+ where fa = cfgToFA start cfg
-- | Convert the grammar to a regular grammar and print it in BNF
@@ -53,8 +52,8 @@ regularPrinter = prCFRules . makeSimpleRegular
showRhs = unwords . map (symbol id show)
faCPrinter :: Ident -- ^ Grammar name
- -> Options -> CGrammar -> String
-faCPrinter name opts cfg = fa2c $ cfgToFA opts cfg
+ -> String -> CGrammar -> String
+faCPrinter name start cfg = fa2c $ cfgToFA start cfg
fa2c :: DFA String -> String
fa2c fa = undefined \ No newline at end of file
diff --git a/src/GF/Speech/PrSLF.hs b/src/GF/Speech/PrSLF.hs
index ba7dea3c8..fbba89692 100644
--- a/src/GF/Speech/PrSLF.hs
+++ b/src/GF/Speech/PrSLF.hs
@@ -26,7 +26,6 @@ import GF.Conversion.Types
import GF.Formalism.CFG
import GF.Formalism.Utilities (Symbol(..),symbol)
import GF.Infra.Ident
-import GF.Infra.Option
import GF.Infra.Print
import GF.Speech.CFGToFiniteState
import GF.Speech.FiniteState
@@ -54,9 +53,9 @@ data SLFEdge = SLFEdge { eId :: Int, eStart :: Int, eEnd :: Int }
type SLF_FA = FA State (Maybe (MFALabel String)) ()
-mkFAs :: Options -> CGrammar -> (SLF_FA, [(String,SLF_FA)])
-mkFAs opts cfg = (slfStyleFA main, [(c,slfStyleFA n) | (c,n) <- subs])
- where MFA main subs = {- renameSubs $ -} cfgToMFA opts cfg
+mkFAs :: String -> CGrammar -> (SLF_FA, [(String,SLF_FA)])
+mkFAs start cfg = (slfStyleFA main, [(c,slfStyleFA n) | (c,n) <- subs])
+ where MFA main subs = {- renameSubs $ -} cfgToMFA start cfg
slfStyleFA :: Eq a => DFA a -> FA State (Maybe a) ()
slfStyleFA = renameStates [0..] . removeTrivialEmptyNodes . oneFinalState Nothing ()
@@ -76,9 +75,9 @@ renameSubs (MFA main subs) = MFA (renameLabels main) subs'
-- * SLF graphviz printing (without sub-networks)
--
-slfGraphvizPrinter :: Ident -> Options -> CGrammar -> String
-slfGraphvizPrinter name opts cfg
- = prFAGraphviz $ gvFA $ slfStyleFA $ cfgToFA' opts cfg
+slfGraphvizPrinter :: Ident -> String -> CGrammar -> String
+slfGraphvizPrinter name start cfg
+ = prFAGraphviz $ gvFA $ slfStyleFA $ cfgToFA' start cfg
where
gvFA = mapStates (fromMaybe "") . mapTransitions (const "")
@@ -87,9 +86,9 @@ slfGraphvizPrinter name opts cfg
--
slfSubGraphvizPrinter :: Ident -- ^ Grammar name
- -> Options -> CGrammar -> String
-slfSubGraphvizPrinter name opts cfg = Dot.prGraphviz g
- where (main, subs) = mkFAs opts cfg
+ -> String -> CGrammar -> String
+slfSubGraphvizPrinter name start cfg = Dot.prGraphviz g
+ where (main, subs) = mkFAs start cfg
g = STM.evalState (liftM2 Dot.addSubGraphs ss m) [0..]
ss = mapM (\ (c,f) -> gvSLFFA (Just c) f) subs
m = gvSLFFA Nothing main
@@ -114,9 +113,9 @@ gvSLFFA n fa =
-- * SLF printing (without sub-networks)
--
-slfPrinter :: Ident -> Options -> CGrammar -> String
-slfPrinter name opts cfg
- = prSLF (automatonToSLF mkSLFNode $ slfStyleFA $ cfgToFA' opts cfg) ""
+slfPrinter :: Ident -> String -> CGrammar -> String
+slfPrinter name start cfg
+ = prSLF (automatonToSLF mkSLFNode $ slfStyleFA $ cfgToFA' start cfg) ""
--
-- * SLF printing (with sub-networks)
@@ -124,10 +123,10 @@ slfPrinter name opts cfg
-- | Make a network with subnetworks in SLF
slfSubPrinter :: Ident -- ^ Grammar name
- -> Options -> CGrammar -> String
-slfSubPrinter name opts cfg = prSLFs slfs ""
+ -> String -> CGrammar -> String
+slfSubPrinter name start cfg = prSLFs slfs ""
where
- (main,subs) = mkFAs opts cfg
+ (main,subs) = mkFAs start cfg
slfs = SLFs [(c, faToSLF fa) | (c,fa) <- subs] (faToSLF main)
faToSLF = automatonToSLF mfaNodeToSLFNode