summaryrefslogtreecommitdiff
path: root/src/GF/Parsing/MCFG
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2006-06-08 21:23:29 +0000
committerkr.angelov <kr.angelov@gmail.com>2006-06-08 21:23:29 +0000
commit694f6eb984c8f22fe042e210b0671062accba8c7 (patch)
tree32faab2fafad6a46a4f2c2b1321dd51634749c1e /src/GF/Parsing/MCFG
parent98d0af8d73ee56fdb9c64626e173eec0ebbce5e7 (diff)
code polishing for the literal category support
Diffstat (limited to 'src/GF/Parsing/MCFG')
-rw-r--r--src/GF/Parsing/MCFG/Active.hs14
-rw-r--r--src/GF/Parsing/MCFG/Active2.hs7
-rw-r--r--src/GF/Parsing/MCFG/Incremental.hs9
-rw-r--r--src/GF/Parsing/MCFG/Incremental2.hs7
-rw-r--r--src/GF/Parsing/MCFG/Naive.hs10
-rw-r--r--src/GF/Parsing/MCFG/PInfo.hs4
6 files changed, 26 insertions, 25 deletions
diff --git a/src/GF/Parsing/MCFG/Active.hs b/src/GF/Parsing/MCFG/Active.hs
index 5ccd43398..c6e9c6b06 100644
--- a/src/GF/Parsing/MCFG/Active.hs
+++ b/src/GF/Parsing/MCFG/Active.hs
@@ -34,18 +34,16 @@ import GF.Infra.Print
parse :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
parse strategy pinfo starts toks =
- trace2 "MCFG.Active - strategy" (if isBU strategy then "BU"
- else if isTD strategy then "TD" else "None") $
- [ Abs (cat, found) (zip rhs rrecs) fun |
- Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
+ accumAssoc groupSyntaxNodes $
+ [ ((cat, found), SNode fun (zip rhs rrecs)) |
+ Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
where chart = process strategy pinfo starts toks
-- parseR :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
parseR strategy pinfo starts =
- trace2 "MCFG.Active Range - strategy" (if isBU strategy then "BU"
- else if isTD strategy then "TD" else "None") $
- [ Abs (cat, found) (zip rhs rrecs) fun |
- Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
+ accumAssoc groupSyntaxNodes $
+ [ ((cat, found), SNode fun (zip rhs rrecs)) |
+ Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
where chart = processR strategy pinfo starts
process :: (Ord n, Ord c, Ord l, Ord t) =>
diff --git a/src/GF/Parsing/MCFG/Active2.hs b/src/GF/Parsing/MCFG/Active2.hs
index f702c83b3..7ad8627bc 100644
--- a/src/GF/Parsing/MCFG/Active2.hs
+++ b/src/GF/Parsing/MCFG/Active2.hs
@@ -34,10 +34,9 @@ import GF.Infra.Print
--parse :: (Ord n, Ord c, Ord l, Ord t) => String -> MCFParser c n l t
parse strategy pinfo starts toks =
- trace2 "MCFG.Active 2 - strategy" (if isBU strategy then "BU"
- else if isTD strategy then "TD" else "None") $
- [ Abs (cat, found) (zip rhs rrecs) fun |
- Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
+ accumAssoc groupSyntaxNodes $
+ [ ((cat, found), SNode fun (zip rhs rrecs)) |
+ Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
where chart = process strategy pinfo starts toks
process :: (Ord n, Ord c, Ord l, Ord t) =>
diff --git a/src/GF/Parsing/MCFG/Incremental.hs b/src/GF/Parsing/MCFG/Incremental.hs
index 64a6c759e..bd5b4114d 100644
--- a/src/GF/Parsing/MCFG/Incremental.hs
+++ b/src/GF/Parsing/MCFG/Incremental.hs
@@ -18,6 +18,7 @@ import Control.Monad (guard)
import GF.Data.Utilities (select)
import GF.Data.GeneralDeduction
+import GF.Data.Assoc
import GF.Formalism.GCFG
import GF.Formalism.MCFG
@@ -34,14 +35,16 @@ import GF.Infra.Print
parse :: (Ord n, Ord c, Ord l, Ord t) => MCFParser c n l t
parse pinfo starts toks =
- [ Abs (cat, found) (zip rhs rrecs) fun |
- Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
+ accumAssoc groupSyntaxNodes $
+ [ ((cat, found), SNode fun (zip rhs rrecs)) |
+ Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
where chart = process pinfo toks ntoks
ntoks = snd (inputBounds toks)
-- parseR :: (Ord n, Ord c, Ord l, Ord t) => MCFParser c n l t
parseR pinfo starts ntoks =
- [ Abs (cat, found) (zip rhs rrecs) fun |
+ accumAssoc groupSyntaxNodes $
+ [ ((cat, found), SNode fun (zip rhs rrecs)) |
Final (Abs cat rhs fun) found rrecs <- chartLookup chart Fin ]
where chart = processR pinfo ntoks
diff --git a/src/GF/Parsing/MCFG/Incremental2.hs b/src/GF/Parsing/MCFG/Incremental2.hs
index 880909758..db6c3084e 100644
--- a/src/GF/Parsing/MCFG/Incremental2.hs
+++ b/src/GF/Parsing/MCFG/Incremental2.hs
@@ -36,9 +36,10 @@ import GF.Infra.Print
-- parseR :: (Ord n, Ord c, Ord l, Ord t) => MCFParser c n l t
parse pinfo starts inp =
- [ Abs (cat, found) (zip rhs rrecs) fun |
- k <- uncurry enumFromTo (inputBounds inp),
- Final (Abs cat rhs fun) found rrecs <- chartLookup chart k Fin ]
+ accumAssoc groupSyntaxNodes $
+ [ ((cat, found), SNode fun (zip rhs rrecs)) |
+ k <- uncurry enumFromTo (inputBounds inp),
+ Final (Abs cat rhs fun) found rrecs <- chartLookup chart k Fin ]
where chart = process pinfo inp
--process :: (Ord n, Ord c, Ord l) => MCFPInfo c n l Range -> (Int, Int) -> IChart c n l
diff --git a/src/GF/Parsing/MCFG/Naive.hs b/src/GF/Parsing/MCFG/Naive.hs
index 8697f9c4c..7d1fa0a8a 100644
--- a/src/GF/Parsing/MCFG/Naive.hs
+++ b/src/GF/Parsing/MCFG/Naive.hs
@@ -34,15 +34,17 @@ import GF.Infra.Print
-- | Builds a chart from the initial agenda, given by prediction, and the inference rules
parse :: (Ord t, Ord n, Ord c, Ord l) => MCFParser c n l t
parse pinfo starts toks
- = [ Abs (cat, makeRangeRec lins) (zip rhs rrecs) fun |
- Active (Abs cat _Nil fun, rhs) lins rrecs <- chartLookup chart Final ]
+ = accumAssoc groupSyntaxNodes $
+ [ ((cat, makeRangeRec lins), SNode fun (zip rhs rrecs)) |
+ Active (Abs cat _Nil fun, rhs) lins rrecs <- chartLookup chart Final ]
where chart = process pinfo toks
-- | Builds a chart from the initial agenda, given by prediction, and the inference rules
-- parseR :: (Ord t, Ord n, Ord c, Ord l) => MCFParser c n l t
parseR pinfo starts
- = [ Abs (cat, makeRangeRec lins) (zip rhs rrecs) fun |
- Active (Abs cat _Nil fun, rhs) lins rrecs <- chartLookup chart Final ]
+ = accumAssoc groupSyntaxNodes $
+ [ ((cat, makeRangeRec lins), SNode fun (zip rhs rrecs)) |
+ Active (Abs cat _Nil fun, rhs) lins rrecs <- chartLookup chart Final ]
where chart = processR pinfo
process :: (Ord t, Ord n, Ord c, Ord l) => MCFPInfo c n l t -> Input t -> NChart c n l
diff --git a/src/GF/Parsing/MCFG/PInfo.hs b/src/GF/Parsing/MCFG/PInfo.hs
index 5a61a4edf..56119dcec 100644
--- a/src/GF/Parsing/MCFG/PInfo.hs
+++ b/src/GF/Parsing/MCFG/PInfo.hs
@@ -30,9 +30,7 @@ import GF.Parsing.MCFG.Range
type MCFParser c n l t = MCFPInfo c n l t
-> [c]
-> Input t
- -> MCFChart c n l
-
-type MCFChart c n l = [Abstract (c, RangeRec l) n]
+ -> SyntaxChart n (c, RangeRec l)
makeFinalEdge :: c -> l -> (Int, Int) -> (c, RangeRec l)
makeFinalEdge cat lbl bnds = (cat, [(lbl, makeRange bnds)])