diff options
| author | bringert <bringert@cs.chalmers.se> | 2006-01-17 02:13:57 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2006-01-17 02:13:57 +0000 |
| commit | d4d89c72f370fe4c63cc5aaa612e64cb09c6f650 (patch) | |
| tree | 1fb26d529d18f9858843439c1acc3f0d43a5a474 /src/GF/Speech | |
| parent | 74c5d41152a0315e038e3d37ac992a26f975b729 (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.hs | 15 | ||||
| -rw-r--r-- | src/GF/Speech/PrFA.hs | 11 | ||||
| -rw-r--r-- | src/GF/Speech/PrSLF.hs | 31 |
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 |
