summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjorn <bjorn@bringert.net>2008-06-12 18:35:25 +0000
committerbjorn <bjorn@bringert.net>2008-06-12 18:35:25 +0000
commitb76c8c195cb4f6bb7bdaa5c3d2c522c2c39f7e15 (patch)
tree5f6182a364e5b97be7d889c4b4ebb5e3e89000be
parent43459c75c8f74662efd9cfea0cc64e55adc78a44 (diff)
Add GF.Speech.SRG.isExternalCat
-rw-r--r--src-3.0/GF/Speech/SRG.hs6
-rw-r--r--src-3.0/GF/Speech/SRGS_XML.hs3
2 files changed, 6 insertions, 3 deletions
diff --git a/src-3.0/GF/Speech/SRG.hs b/src-3.0/GF/Speech/SRG.hs
index a4a41afb5..8bb509d22 100644
--- a/src-3.0/GF/Speech/SRG.hs
+++ b/src-3.0/GF/Speech/SRG.hs
@@ -8,12 +8,13 @@
-- FIXME: remove \/ warn \/ fail if there are int \/ string literal
-- categories in the grammar
----------------------------------------------------------------------
-module GF.Speech.SRG (SRG(..), SRGRule(..), SRGAlt(..), SRGItem
+module GF.Speech.SRG (SRG(..), SRGRule(..), SRGAlt(..), SRGItem, SRGSymbol
, SRGNT, CFTerm
, makeSRG
, makeSimpleSRG
, makeNonRecursiveSRG
, getSpeechLanguage
+ , isExternalCat
, lookupFM_, prtS
) where
@@ -139,6 +140,9 @@ cfRulesToSRGRule rs@(r:_) = SRGRule (lhsCat r) rhs
allSRGCats :: SRG -> [String]
allSRGCats SRG { srgRules = rs } = [c | SRGRule c _ <- rs]
+isExternalCat :: SRG -> Cat -> Bool
+isExternalCat srg c = c `Set.member` srgExternalCats srg
+
--
-- * Size-optimized EBNF SRGs
--
diff --git a/src-3.0/GF/Speech/SRGS_XML.hs b/src-3.0/GF/Speech/SRGS_XML.hs
index a4c07ee05..97c1629fb 100644
--- a/src-3.0/GF/Speech/SRGS_XML.hs
+++ b/src-3.0/GF/Speech/SRGS_XML.hs
@@ -20,7 +20,6 @@ import Data.Char (toUpper,toLower)
import Data.List
import Data.Maybe
import qualified Data.Map as Map
-import qualified Data.Set as Set
srgsXmlPrinter :: Maybe SISRFormat
-> PGF -> CId -> String
@@ -39,7 +38,7 @@ prSrgsXml sisr srg = showXMLDoc (optimizeSRGS xmlGr)
meta "generator" "Grammatical Framework"]
++ map ruleToXML (srgRules srg)
ruleToXML (SRGRule cat alts) = Tag "rule" ([("id",cat)]++pub) (prRhs alts)
- where pub | cat `Set.member` srgExternalCats srg = [("scope","public")]
+ where pub | isExternalCat srg cat = [("scope","public")]
| otherwise = []
prRhs rhss = [oneOf (map (mkProd sisr) rhss)]