diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2006-06-08 21:23:29 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2006-06-08 21:23:29 +0000 |
| commit | 694f6eb984c8f22fe042e210b0671062accba8c7 (patch) | |
| tree | 32faab2fafad6a46a4f2c2b1321dd51634749c1e /src/GF/Parsing/MCFG | |
| parent | 98d0af8d73ee56fdb9c64626e173eec0ebbce5e7 (diff) | |
code polishing for the literal category support
Diffstat (limited to 'src/GF/Parsing/MCFG')
| -rw-r--r-- | src/GF/Parsing/MCFG/Active.hs | 14 | ||||
| -rw-r--r-- | src/GF/Parsing/MCFG/Active2.hs | 7 | ||||
| -rw-r--r-- | src/GF/Parsing/MCFG/Incremental.hs | 9 | ||||
| -rw-r--r-- | src/GF/Parsing/MCFG/Incremental2.hs | 7 | ||||
| -rw-r--r-- | src/GF/Parsing/MCFG/Naive.hs | 10 | ||||
| -rw-r--r-- | src/GF/Parsing/MCFG/PInfo.hs | 4 |
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)]) |
