Use .MAIN for the start category.

This commit is contained in:
bringert
2004-09-15 16:16:34 +00:00
parent a25ee154e7
commit a38f028f04

View File

@@ -77,23 +77,19 @@ cfgToGSL name start =
cfgRulesToGSLRule rs@(r:_) = GSLRule (ruleCat r) (map ruleRhs rs)
mkCatNames :: GSLGrammar -> CatNames
mkCatNames (GSLGrammar name start rules) =
listToFM (zipWith dotIfStart lhsCats names)
mkCatNames (GSLGrammar name start rules) = listToFM (zip lhsCats names)
where names = [name ++ "_" ++ show x | x <- [0..]]
lhsCats = [ c | GSLRule c _ <- rules]
dotIfStart c n | c == start = (c, "." ++ n)
| otherwise = (c, n)
prGSLGrammar :: CatNames -> GSLGrammar -> ShowS
prGSLGrammar names (GSLGrammar name start g) =
header . unlinesS (map prGSLrule g)
header . mainCat . unlinesS (map prGSLrule g)
where
header = showString ";GSL2.0" . nl
. comments ["Nuance speech synthesis grammar for " ++ name,
"Generated by GF",
"Start category: " ++ start
++ " (" ++ prGSLCat start ")"]
. nl . nl
. comments ["Nuance speech recognition grammar for " ++ name,
"Generated by GF"] . nl . nl
mainCat = showString ("; Start category: " ++ start) . nl
. showString ".MAIN " . prGSLCat start . nl . nl
prGSLrule (GSLRule cat rhs) =
showString "; " . prtS cat . nl
. prGSLCat cat . sp . wrap "[" (unwordsS (map prGSLAlt rhs)) "]" . nl