diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2007-10-12 16:00:37 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2007-10-12 16:00:37 +0000 |
| commit | 873a160537bf72ead6cfcd6b739d4c7821eb4c85 (patch) | |
| tree | 88a65bddef3808f591015d9a62fa9e39e4427d32 /src/GF/Parsing | |
| parent | 96ed0bf4ac7e2898f6f8de82cacecb69d1e94684 (diff) | |
FCat is just a plain integer now
Diffstat (limited to 'src/GF/Parsing')
| -rw-r--r-- | src/GF/Parsing/FCFG.hs | 6 | ||||
| -rw-r--r-- | src/GF/Parsing/FCFG/PInfo.hs | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/GF/Parsing/FCFG.hs b/src/GF/Parsing/FCFG.hs index cf7f0d986..69c2e5d93 100644 --- a/src/GF/Parsing/FCFG.hs +++ b/src/GF/Parsing/FCFG.hs @@ -25,6 +25,7 @@ import GF.GFCC.AbsGFCC import GF.GFCC.Macros import GF.GFCC.ErrM +import qualified Data.Map as Map ---------------------------------------------------------------------- -- parsing @@ -39,9 +40,8 @@ parseFCF :: Err [Exp] -- ^ resulting GF terms parseFCF strategy pinfo startCat inString = do let inTokens = input inString - startCats = filter isStart $ grammarCats pinfo - isStart cat = fcat2cid cat == startCat - fcfParser <- parseFCF strategy + startCats <- Map.lookup startCat (startupCats pinfo) + fcfParser <- {- trace lctree $ -} parseFCF strategy let chart = fcfParser pinfo startCats inTokens (i,j) = inputBounds inTokens finalEdges = [makeFinalEdge cat i j | cat <- startCats] diff --git a/src/GF/Parsing/FCFG/PInfo.hs b/src/GF/Parsing/FCFG/PInfo.hs index 9c201c225..2d7edb89d 100644 --- a/src/GF/Parsing/FCFG/PInfo.hs +++ b/src/GF/Parsing/FCFG/PInfo.hs @@ -15,9 +15,13 @@ import GF.Formalism.FCFG import GF.Data.SortedList import GF.Data.Assoc import GF.Parsing.FCFG.Range +import qualified GF.GFCC.AbsGFCC as AbsGFCC import Data.Array import Data.Maybe +import qualified Data.Map as Map +import qualified Data.Set as Set +import Debug.Trace ---------------------------------------------------------------------- -- type declarations @@ -48,6 +52,7 @@ data FCFPInfo -- ^ used in 'GF.Parsing.MCFG.Active' (Kilbury): , grammarCats :: SList FCat , grammarToks :: SList FToken + , startupCats :: Map.Map AbsGFCC.CId [FCat] } @@ -68,7 +73,7 @@ getLeftCornerCat lins syms = lins ! 0 buildFCFPInfo :: FGrammar -> FCFPInfo -buildFCFPInfo grammar = +buildFCFPInfo (grammar,startup) = -- trace (unlines [prt (x,Set.toList set) | (x,set) <- Map.toList leftcornFilter]) $ FCFPInfo { allRules = allrules , topdownRules = topdownrules -- , emptyRules = emptyrules @@ -77,6 +82,7 @@ buildFCFPInfo grammar = , leftcornerTokens = leftcorntoks , grammarCats = grammarcats , grammarToks = grammartoks + , startupCats = startup } where allrules = listArray (0,length grammar-1) grammar |
