diff options
| author | bringert <bringert@cs.chalmers.se> | 2006-12-16 14:19:04 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2006-12-16 14:19:04 +0000 |
| commit | bd4dbfb26beb06424e00227087603bfca563dda3 (patch) | |
| tree | 2a7f6eb0bce44f116720bb6cb727443162aef893 /src/GF/Speech/PrSRGS.hs | |
| parent | d5e2a0852d47c7e16c67557f2e3c86bc28407737 (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.hs | 23 |
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 |
