summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/GF/Speech/SRG.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/GF/Speech/SRG.hs b/src/GF/Speech/SRG.hs
index 01ccf04be..2edca0368 100644
--- a/src/GF/Speech/SRG.hs
+++ b/src/GF/Speech/SRG.hs
@@ -167,7 +167,13 @@ allSRGCats SRG { rules = rs } = [c | SRGRule c _ _ <- rs]
cfgCatToGFCat :: SRGCat -> Maybe String
cfgCatToGFCat c
- | '-' `elem` c = Nothing -- categories introduced by removeLeftRecursion contain dashes
+ -- categories introduced by removeLeftRecursion contain dashes
+ | '-' `elem` c = Nothing
+ -- some categories introduced by -conversion=finite have the form
+ -- "{fun:cat}..."
+ | "{" `isPrefixOf` c = case dropWhile (/=':') $ takeWhile (/='}') $ tail c of
+ ':':c' -> Just c'
+ _ -> error $ "cfgCatToGFCat: Strange category " ++ show c
| otherwise = Just $ takeWhile (/='{') c
srgTopCats :: SRG -> [(String,[SRGCat])]