forked from GitHub/gf-core
Added semi-working speech_input command.
This commit is contained in:
@@ -27,9 +27,8 @@ import GF.Speech.FiniteState
|
||||
import GF.Speech.Relation
|
||||
import GF.Speech.TransformCFG
|
||||
|
||||
cfgToFA :: Ident -- ^ Grammar name
|
||||
-> Options -> CGrammar -> DFA String
|
||||
cfgToFA name opts = minimize . compileAutomaton start . makeSimpleRegular
|
||||
cfgToFA :: Options -> CGrammar -> DFA String
|
||||
cfgToFA opts = minimize . compileAutomaton start . makeSimpleRegular
|
||||
where start = getStartCat opts
|
||||
|
||||
makeSimpleRegular :: CGrammar -> CFRules
|
||||
|
||||
@@ -37,7 +37,7 @@ import Data.Maybe (fromMaybe)
|
||||
faGraphvizPrinter :: Ident -- ^ Grammar name
|
||||
-> Options -> CGrammar -> String
|
||||
faGraphvizPrinter name opts cfg =
|
||||
prFAGraphviz $ mapStates (const "") $ cfgToFA name opts cfg
|
||||
prFAGraphviz $ mapStates (const "") $ cfgToFA opts cfg
|
||||
|
||||
|
||||
-- | Convert the grammar to a regular grammar and print it in BNF
|
||||
@@ -51,7 +51,7 @@ regularPrinter = prCFRules . makeSimpleRegular
|
||||
|
||||
faCPrinter :: Ident -- ^ Grammar name
|
||||
-> Options -> CGrammar -> String
|
||||
faCPrinter name opts cfg = fa2c $ cfgToFA name opts cfg
|
||||
faCPrinter name opts cfg = fa2c $ cfgToFA opts cfg
|
||||
|
||||
fa2c :: DFA String -> String
|
||||
fa2c fa = undefined
|
||||
@@ -48,16 +48,15 @@ data SLFEdge = SLFEdge { eId :: Int, eStart :: Int, eEnd :: Int }
|
||||
|
||||
slfPrinter :: Ident -- ^ Grammar name
|
||||
-> Options -> CGrammar -> String
|
||||
slfPrinter name opts cfg = prSLF (automatonToSLF $ mkSLFFA name opts cfg) ""
|
||||
slfPrinter name opts cfg = prSLF (automatonToSLF $ mkSLFFA opts cfg) ""
|
||||
|
||||
slfGraphvizPrinter :: Ident -- ^ Grammar name
|
||||
-> Options -> CGrammar -> String
|
||||
-> Options -> CGrammar -> String
|
||||
slfGraphvizPrinter name opts cfg =
|
||||
prFAGraphviz $ mapStates (fromMaybe "") $ mapTransitions (const "") $ mkSLFFA name opts cfg
|
||||
prFAGraphviz $ mapStates (fromMaybe "") $ mapTransitions (const "") $ mkSLFFA opts cfg
|
||||
|
||||
mkSLFFA :: Ident -- ^ Grammar name
|
||||
-> Options -> CGrammar -> FA State (Maybe String) ()
|
||||
mkSLFFA name opts cfg = oneFinalState Nothing () $ moveLabelsToNodes $ dfa2nfa $ cfgToFA name opts cfg
|
||||
mkSLFFA :: Options -> CGrammar -> FA State (Maybe String) ()
|
||||
mkSLFFA opts cfg = oneFinalState Nothing () $ moveLabelsToNodes $ dfa2nfa $ cfgToFA opts cfg
|
||||
|
||||
automatonToSLF :: FA State (Maybe String) () -> SLF
|
||||
automatonToSLF fa = SLF { slfNodes = map mkSLFNode (states fa),
|
||||
|
||||
Reference in New Issue
Block a user