diff --git a/src/GF/Speech/PGFToCFG.hs b/src/GF/Speech/PGFToCFG.hs index 772ae90c1..4165e0aa1 100644 --- a/src/GF/Speech/PGFToCFG.hs +++ b/src/GF/Speech/PGFToCFG.hs @@ -114,7 +114,3 @@ pgfToCFG pgf lang = mkCFG (prCId (lookStartCat pgf)) extCats (startRules ++ conc fruleToCFRule (c,FCoerce c') = [CFRule (fcatToCat c l) [NonTerminal (fcatToCat c' l)] (CFRes 0) | l <- [0..catLinArity c-1]] - - -isLiteralFCat :: FCat -> Bool -isLiteralFCat = (`elem` [fcatString, fcatInt, fcatFloat, fcatVar]) diff --git a/src/PGF/PMCFG.hs b/src/PGF/PMCFG.hs index 6a83baad3..c077367ad 100644 --- a/src/PGF/PMCFG.hs +++ b/src/PGF/PMCFG.hs @@ -50,6 +50,8 @@ fcatInt = (-2) fcatFloat = (-3) fcatVar = (-4) +isLiteralFCat :: FCat -> Bool +isLiteralFCat = (`elem` [fcatString, fcatInt, fcatFloat, fcatVar]) ppPMCFG :: ParserInfo -> Doc ppPMCFG pinfo = @@ -101,6 +103,6 @@ ppSeqId seqid = char 'S' <> int seqid filterProductions prods = fmap (Set.filter filterRule) prods where - filterRule (FApply funid args) = all (\fcat -> IntMap.member fcat prods) args + filterRule (FApply funid args) = all (\fcat -> isLiteralFCat fcat || IntMap.member fcat prods) args filterRule (FCoerce _) = True filterRule _ = True