summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Speech/SRGS_XML.hs
diff options
context:
space:
mode:
authorbjorn <bjorn@bringert.net>2008-06-16 15:49:17 +0000
committerbjorn <bjorn@bringert.net>2008-06-16 15:49:17 +0000
commit10d58953694a3d66067eaf24deaaab1afd922b80 (patch)
treec86ee3cb9e0c4fb785a4ae7dbc9fcd459a3d50c2 /src-3.0/GF/Speech/SRGS_XML.hs
parentea31c1e63ba137b943f7fd5e0ffe91cd64673875 (diff)
Fix handling of external categories in SRG generation.
Diffstat (limited to 'src-3.0/GF/Speech/SRGS_XML.hs')
-rw-r--r--src-3.0/GF/Speech/SRGS_XML.hs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src-3.0/GF/Speech/SRGS_XML.hs b/src-3.0/GF/Speech/SRGS_XML.hs
index 97c1629fb..e78a702da 100644
--- a/src-3.0/GF/Speech/SRGS_XML.hs
+++ b/src-3.0/GF/Speech/SRGS_XML.hs
@@ -32,16 +32,19 @@ srgsXmlNonRecursivePrinter pgf cnc = prSrgsXml Nothing $ makeNonRecursiveSRG pgf
prSrgsXml :: Maybe SISRFormat -> SRG -> String
prSrgsXml sisr srg = showXMLDoc (optimizeSRGS xmlGr)
where
- xmlGr = grammar sisr (srgStartCat srg) (srgLanguage srg) $
+ xmlGr = grammar sisr (externalCat (srgStartCat srg)) (srgLanguage srg) $
[meta "description"
("SRGS XML speech recognition grammar for " ++ srgName srg ++ "."),
meta "generator" "Grammatical Framework"]
++ map ruleToXML (srgRules srg)
- ruleToXML (SRGRule cat alts) = Tag "rule" ([("id",cat)]++pub) (prRhs alts)
- where pub | isExternalCat srg cat = [("scope","public")]
- | otherwise = []
+ ruleToXML (SRGRule cat alts)
+ | isExternalCat srg cat = Tag "rule" [("id",externalCat cat),("scope","public")] (prRhs alts)
+ | otherwise = Tag "rule" [("id",cat)] (prRhs alts)
prRhs rhss = [oneOf (map (mkProd sisr) rhss)]
+externalCat :: Cat -> Cat
+externalCat c = c ++ "_cat"
+
mkProd :: Maybe SISRFormat -> SRGAlt -> XML
mkProd sisr (SRGAlt mp n rhs) = Tag "item" [] (ti ++ [x] ++ tf)
where x = mkItem sisr n rhs