summaryrefslogtreecommitdiff
path: root/src/GF/Speech/PrSRGS.hs
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2006-12-16 14:19:04 +0000
committerbringert <bringert@cs.chalmers.se>2006-12-16 14:19:04 +0000
commitbd4dbfb26beb06424e00227087603bfca563dda3 (patch)
tree2a7f6eb0bce44f116720bb6cb727443162aef893 /src/GF/Speech/PrSRGS.hs
parentd5e2a0852d47c7e16c67557f2e3c86bc28407737 (diff)
VoiceXML: add _cat and _field to category names, to avoid clashing with javascript built-ins. removed debugging stuff to make maintenance easier. SRGS: changed cate and field names to match the VoiceXML change.
Diffstat (limited to 'src/GF/Speech/PrSRGS.hs')
-rw-r--r--src/GF/Speech/PrSRGS.hs23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/GF/Speech/PrSRGS.hs b/src/GF/Speech/PrSRGS.hs
index 63ca91034..2a7e99d07 100644
--- a/src/GF/Speech/PrSRGS.hs
+++ b/src/GF/Speech/PrSRGS.hs
@@ -50,7 +50,7 @@ prSrgsXml sisr (SRG{grammarName=name,startCat=start,
= showsXMLDoc $ optimizeSRGS xmlGr
where
root = cfgCatToGFCat origStart
- xmlGr = grammar sisr root l $
+ xmlGr = grammar sisr (catFormId root) l $
[meta "description"
("SRGS XML speech recognition grammar for " ++ name
++ ". " ++ "Original start category: " ++ origStart),
@@ -59,14 +59,14 @@ prSrgsXml sisr (SRG{grammarName=name,startCat=start,
++ topCatRules
++ concatMap ruleToXML rs
ruleToXML (SRGRule cat origCat alts) =
- comments ["Category " ++ origCat] ++ [rule (prCat cat) (prRhs $ ebnfSRGAlts alts)]
+ comments ["Category " ++ origCat] ++ [rule cat (prRhs $ ebnfSRGAlts alts)]
prRhs rhss = [oneOf (map (mkProd sisr) rhss)]
-- externally visible rules for each of the GF categories
topCatRules = [topRule tc [oneOf (map (it tc) cs)] | (tc,cs) <- topCats]
where topCats = buildMultiMap [(cfgCatToGFCat origCat, cat) | SRGRule cat origCat _ <- rs]
- it i c = Tag "item" [] [Tag "ruleref" [("uri","#" ++ prCat c)] [],
- tag sisr [(EThis :. i) := (ERef c)]]
- topRule i is = Tag "rule" [("id",i),("scope","public")] is
+ it i c = Tag "item" [] [Tag "ruleref" [("uri","#" ++ c)] [],
+ tag sisr [(EThis :. catFieldId i) := (ERef c)]]
+ topRule i is = Tag "rule" [("id",catFormId i),("scope","public")] is
rule :: String -> [XML] -> XML
rule i = Tag "rule" [("id",i)]
@@ -94,18 +94,23 @@ mkItem sisr = f
f (RESymbol s) = symItem sisr s
symItem :: Maybe SISRFormat -> Symbol SRGNT Token -> XML
-symItem sisr (Cat (c,slots)) = Tag "item" [] ([Tag "ruleref" [("uri","#" ++ prCat c)] []]++t)
+symItem sisr (Cat (c,slots)) = Tag "item" [] ([Tag "ruleref" [("uri","#" ++ c)] []]++t)
where
t = if null ts then [] else [tag sisr ts]
- ts = [(EThis :. ("arg" ++ show s)) := (ERef (prCat c)) | s <- slots]
+ ts = [(EThis :. ("arg" ++ show s)) := (ERef c) | s <- slots]
symItem _ (Tok t) = Tag "item" [] [Data (showToken t)]
tag :: Maybe SISRFormat -> [SISRExpr] -> XML
tag Nothing _ = Empty
tag (Just fmt) ts = Tag "tag" [] [Data (join "; " (map (prSISR fmt) ts))]
-prCat :: String -> String
-prCat c = c
+
+catFormId :: String -> String
+catFormId = (++ "_cat")
+
+catFieldId :: String -> String
+catFieldId = (++ "_field")
+
showToken :: Token -> String
showToken t = t