bugfix: the optimizer should not filter out rules that refer to lexical categories

This commit is contained in:
krasimir
2009-06-18 17:31:49 +00:00
parent e3b38dc245
commit aaeecb9b5d
2 changed files with 3 additions and 5 deletions

View File

@@ -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