diff options
| author | bjorn <bjorn@bringert.net> | 2008-06-16 15:49:17 +0000 |
|---|---|---|
| committer | bjorn <bjorn@bringert.net> | 2008-06-16 15:49:17 +0000 |
| commit | 10d58953694a3d66067eaf24deaaab1afd922b80 (patch) | |
| tree | c86ee3cb9e0c4fb785a4ae7dbc9fcd459a3d50c2 /src-3.0/GF/Speech/SRGS_XML.hs | |
| parent | ea31c1e63ba137b943f7fd5e0ffe91cd64673875 (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.hs | 11 |
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 |
