summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2007-06-26 12:19:30 +0000
committerbringert <bringert@cs.chalmers.se>2007-06-26 12:19:30 +0000
commit7eaa2af27c2b5db7eb1ec713cbdb5f115e871667 (patch)
tree7db37310bf1bc2d0c0a96ab90af4731921a5b9dd /src
parent8e012e656d446e423fe0132f98e29a561c80a12c (diff)
Produce less verbose SRGS XML, by eliminating redundant item tags.
Diffstat (limited to 'src')
-rw-r--r--src/GF/Speech/PrSRGS.hs19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/GF/Speech/PrSRGS.hs b/src/GF/Speech/PrSRGS.hs
index 627dc7364..58170842f 100644
--- a/src/GF/Speech/PrSRGS.hs
+++ b/src/GF/Speech/PrSRGS.hs
@@ -35,7 +35,6 @@ import Data.Maybe
import qualified Data.Map as Map
import qualified Data.Set as Set
-
srgsXmlPrinter :: Maybe SISRFormat
-> Bool -- ^ Include probabilities
-> Options
@@ -64,8 +63,8 @@ prSrgsXml sisr probs srg@(SRG{grammarName=name,startCat=start,
prRhs rhss = [oneOf (map (mkProd sisr probs) rhss)]
-- externally visible rules for each of the GF categories
topCatRules = [topRule tc [oneOf (map (it tc) cs)] | (tc,cs) <- srgTopCats srg]
- where it i c = Tag "item" [] [ETag "ruleref" [("uri","#" ++ c)],
- tag sisr (topCatSISR c)]
+ where it i c = Tag "item" [] ([ETag "ruleref" [("uri","#" ++ c)]]
+ ++ tag sisr (topCatSISR c))
topRule i is = Tag "rule" [("id",catFormId i),("scope","public")] is
rule :: String -> [XML] -> XML
@@ -76,8 +75,8 @@ mkProd sisr probs (SRGAlt mp n rhs) = Tag "item" w (ti ++ [x] ++ tf)
where x = mkItem sisr n rhs
w | probs = maybe [] (\p -> [("weight", show p)]) mp
| otherwise = []
- ti = [tag sisr (profileInitSISR n)]
- tf = [tag sisr (profileFinalSISR n)]
+ ti = tag sisr (profileInitSISR n)
+ tf = tag sisr (profileFinalSISR n)
mkItem :: Maybe SISRFormat -> CFTerm -> SRGItem -> XML
mkItem sisr cn = f
@@ -108,14 +107,14 @@ mkItem sisr cn ss = map (symItem sisr cn) ss
symItem :: Maybe SISRFormat -> CFTerm -> Symbol SRGNT Token -> XML
symItem sisr cn (Cat n@(c,_)) =
- Tag "item" [] $ [ETag "ruleref" [("uri","#" ++ c)], tag sisr (catSISR cn n)]
+ Tag "item" [] $ [ETag "ruleref" [("uri","#" ++ c)]] ++ tag sisr (catSISR cn n)
symItem _ _ (Tok t) = Tag "item" [] [Data (showToken t)]
-tag :: Maybe SISRFormat -> (SISRFormat -> SISRTag) -> XML
-tag Nothing _ = Empty
+tag :: Maybe SISRFormat -> (SISRFormat -> SISRTag) -> [XML]
+tag Nothing _ = []
tag (Just fmt) t = case t fmt of
- [] -> Empty
- ts -> Tag "tag" [] [Data (prSISR ts)]
+ [] -> []
+ ts -> [Tag "tag" [] [Data (prSISR ts)]]
catFormId :: String -> String
catFormId = (++ "_cat")