summaryrefslogtreecommitdiff
path: root/src-3.0/PGF
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2008-06-02 08:38:27 +0000
committerkrasimir <krasimir@chalmers.se>2008-06-02 08:38:27 +0000
commit75b56603cfab566d58cc5d541bdca702223fcbc5 (patch)
treede7f14f89cd9259defd03cc9e75a05a4199b5175 /src-3.0/PGF
parent7ee26238f59c76e8365f2db6217a3e25bd19ae00 (diff)
use MultiMap from the reference implementation instead of GeneralDeduction and RedBlackTree
Diffstat (limited to 'src-3.0/PGF')
-rw-r--r--src-3.0/PGF/Parsing/FCFG/Active.hs16
1 files changed, 8 insertions, 8 deletions
diff --git a/src-3.0/PGF/Parsing/FCFG/Active.hs b/src-3.0/PGF/Parsing/FCFG/Active.hs
index 4572062f1..71352c725 100644
--- a/src-3.0/PGF/Parsing/FCFG/Active.hs
+++ b/src-3.0/PGF/Parsing/FCFG/Active.hs
@@ -9,10 +9,10 @@
module PGF.Parsing.FCFG.Active (FCFParser, parse, makeFinalEdge) where
-import GF.Data.GeneralDeduction
import GF.Data.Assoc
import GF.Data.SortedList
import GF.Data.Utilities
+import qualified GF.Data.MultiMap as MM
import PGF.CId
import PGF.Data
@@ -117,23 +117,23 @@ data Item
| Final RangeRec (SyntaxNode RuleId RangeRec)
deriving (Eq, Ord)
-data XChart c = XChart !(ParseChart Item c) !(ParseChart Item c)
+data XChart c = XChart !(MM.MultiMap c Item) !(MM.MultiMap c Item)
emptyXChart :: Ord c => XChart c
-emptyXChart = XChart emptyChart emptyChart
+emptyXChart = XChart MM.empty MM.empty
insertXChart (XChart actives finals) item@(Active _ _ _ _ _) c =
- case chartInsert actives item c of
+ case MM.insert' c item actives of
Nothing -> Nothing
Just actives -> Just (XChart actives finals)
insertXChart (XChart actives finals) item@(Final _ _) c =
- case chartInsert finals item c of
+ case MM.insert' c item finals of
Nothing -> Nothing
Just finals -> Just (XChart actives finals)
-lookupXChartAct (XChart actives finals) c = chartLookup actives c
-lookupXChartFinal (XChart actives finals) c = chartLookup finals c
+lookupXChartAct (XChart actives finals) c = actives MM.! c
+lookupXChartFinal (XChart actives finals) c = finals MM.! c
xchart2syntaxchart :: XChart FCat -> ParserInfo -> SyntaxChart (CId,[Profile]) (FCat,RangeRec)
xchart2syntaxchart (XChart actives finals) pinfo =
@@ -144,7 +144,7 @@ xchart2syntaxchart (XChart actives finals) pinfo =
SString s -> ((cat,found), SString s)
SInt n -> ((cat,found), SInt n)
SFloat f -> ((cat,found), SFloat f)
- | (cat, Final found node) <- chartAssocs finals
+ | (cat, Final found node) <- MM.toList finals
]
literals :: ParserInfo -> Input FToken -> [(FCat,Item)]