summaryrefslogtreecommitdiff
path: root/src/GF/Parsing
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2007-10-12 16:00:37 +0000
committerkr.angelov <kr.angelov@gmail.com>2007-10-12 16:00:37 +0000
commit873a160537bf72ead6cfcd6b739d4c7821eb4c85 (patch)
tree88a65bddef3808f591015d9a62fa9e39e4427d32 /src/GF/Parsing
parent96ed0bf4ac7e2898f6f8de82cacecb69d1e94684 (diff)
FCat is just a plain integer now
Diffstat (limited to 'src/GF/Parsing')
-rw-r--r--src/GF/Parsing/FCFG.hs6
-rw-r--r--src/GF/Parsing/FCFG/PInfo.hs8
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