summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbringert <unknown>2005-09-12 21:32:24 +0000
committerbringert <unknown>2005-09-12 21:32:24 +0000
commitb90e16b221000334e0f6d851e5e6407d1b7867ac (patch)
treef09a6410e4eda757041dcfd9128f1119d78dc13f /src
parent8e53a8e849053622b9729d2d7fdebaa5e509d48d (diff)
Cleaned up some stuff while trying to find a bug. Turned out I just had not set the startcat in the grammar file. Time to go home I think.
Diffstat (limited to 'src')
-rw-r--r--src/GF/Speech/FiniteState.hs32
-rw-r--r--src/GF/Speech/PrSLF.hs8
2 files changed, 23 insertions, 17 deletions
diff --git a/src/GF/Speech/FiniteState.hs b/src/GF/Speech/FiniteState.hs
index f758975dc..100335a2d 100644
--- a/src/GF/Speech/FiniteState.hs
+++ b/src/GF/Speech/FiniteState.hs
@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/09/12 21:54:32 $
+-- > CVS $Date: 2005/09/12 22:32:24 $
-- > CVS $Author: bringert $
--- > CVS $Revision: 1.5 $
+-- > CVS $Revision: 1.6 $
--
-- A simple finite state network module.
-----------------------------------------------------------------------------
@@ -17,8 +17,9 @@ module GF.Speech.FiniteState (FA, State,
newFA,
addFinalState,
newState, newTransition,
- moveLabelsToNodes, minimize, asGraph,
- Graph, prGraphGraphviz, nmap, emap) where
+ mapStates, mapTransitions,
+ moveLabelsToNodes, minimize,
+ prGraphGraphviz) where
import Data.List
import Data.Maybe (fromJust)
@@ -57,7 +58,10 @@ newTransition :: Node -> Node -> b -> FA a b -> FA a b
newTransition f t l = onGraph (newEdge f t l)
mapStates :: (a -> c) -> FA a b -> FA c b
-mapStates f (FA g s ss) = FA (nmap f g) s ss
+mapStates f = onGraph (nmap f)
+
+mapTransitions :: (b -> c) -> FA a b -> FA a c
+mapTransitions f = onGraph (emap f)
asGraph :: FA a b -> Graph a b
asGraph (FA g _ _) = g
@@ -71,6 +75,15 @@ minimize = onGraph mimimizeGr1
moveLabelsToNodes :: Eq a => FA () (Maybe a) -> FA (Maybe a) ()
moveLabelsToNodes = onGraph moveLabelsToNodes_
+prGraphGraphviz :: FA String String -> String
+prGraphGraphviz (FA (Graph _ ns es) _ _) =
+ "digraph {\n" ++ unlines (map prNode ns)
+ ++ "\n"
+ ++ unlines (map prEdge es)
+ ++ "\n}\n"
+ where prNode (n,l) = show n ++ " [label = " ++ show l ++ "]"
+ prEdge (f,t,l) = show f ++ " -> " ++ show t ++ " [label = " ++ show l ++ "]"
+
--
-- * Graphs
--
@@ -152,14 +165,7 @@ mimimizeGr2 = id
removeDuplicateEdges :: Ord b => Graph a b -> Graph a b
removeDuplicateEdges (Graph c ns es) = Graph c ns (sortNub es)
-prGraphGraphviz :: Graph String String -> String
-prGraphGraphviz (Graph _ ss ts) =
- "digraph {\n" ++ unlines (map prNode ss)
- ++ "\n"
- ++ unlines (map prEdge ts)
- ++ "\n}\n"
- where prNode (n,l) = show n ++ " [label = " ++ show l ++ "]"
- prEdge (f,t,l) = show f ++ " -> " ++ show t ++ " [label = " ++ show l ++ "]"
+
--
diff --git a/src/GF/Speech/PrSLF.hs b/src/GF/Speech/PrSLF.hs
index 0dbf97575..62c6def34 100644
--- a/src/GF/Speech/PrSLF.hs
+++ b/src/GF/Speech/PrSLF.hs
@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
--- > CVS $Date: 2005/09/12 21:41:19 $
+-- > CVS $Date: 2005/09/12 22:32:24 $
-- > CVS $Author: bringert $
--- > CVS $Revision: 1.6 $
+-- > CVS $Revision: 1.7 $
--
-- This module converts a CFG to an SLF finite-state network
-- for use with the ATK recognizer. The SLF format is described
@@ -53,12 +53,12 @@ slfPrinter name opts cfg = prSLF (automatonToSLF $ moveLabelsToNodes $ cfgToFA n
slfGraphvizPrinter :: Ident -- ^ Grammar name
-> Options -> CGrammar -> String
slfGraphvizPrinter name opts cfg =
- prGraphGraphviz (nmap (fromMaybe "") $ emap (const "") $ asGraph $ moveLabelsToNodes $ cfgToFA name opts cfg)
+ prGraphGraphviz (mapStates (fromMaybe "") $ makeTransitions (const "") $ moveLabelsToNodes $ cfgToFA name opts cfg)
faGraphvizPrinter :: Ident -- ^ Grammar name
-> Options -> CGrammar -> String
faGraphvizPrinter name opts cfg =
- prGraphGraphviz (nmap (const "") $ emap (fromMaybe "") $ asGraph $ cfgToFA name opts cfg)
+ prGraphGraphviz (mapStates (const "") $ makeTransitions (fromMaybe "") $ cfgToFA name opts cfg)
-- | Convert the grammar to a regular grammar and print it in BNF
regularPrinter :: CGrammar -> String