summaryrefslogtreecommitdiff
path: root/src-3.0/PGF/Parsing/FCFG.hs
blob: 4ca6a956a66ee67de8b3708d7201cc4df6f1d7d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
----------------------------------------------------------------------
-- |
-- Maintainer  : Krasimir Angelov
-- Stability   : (stable)
-- Portability : (portable)
--
-- FCFG parsing
-----------------------------------------------------------------------------

module PGF.Parsing.FCFG
    (buildParserInfo,ParserInfo,parseFCFG) where

import GF.Data.ErrM
import GF.Data.Assoc
import GF.Data.SortedList 

import PGF.CId
import PGF.Data
import PGF.Macros
import PGF.BuildParser
import PGF.Parsing.FCFG.Utilities
import qualified PGF.Parsing.FCFG.Active      as Active
import qualified PGF.Parsing.FCFG.Incremental as Incremental

import qualified Data.Map as Map

----------------------------------------------------------------------
-- parsing

-- main parsing function

parseFCFG :: String           -- ^ parsing strategy
         -> ParserInfo        -- ^ compiled grammar (fcfg) 
         -> CId               -- ^ starting category
         -> [String]          -- ^ input tokens
         -> Err [Tree]        -- ^ resulting GF terms
parseFCFG "bottomup"    pinfo start toks = return $ Active.parse "b"  pinfo start toks 
parseFCFG "topdown"     pinfo start toks = return $ Active.parse "t"  pinfo start toks 
parseFCFG "incremental" pinfo start toks = return $ Incremental.parse pinfo start toks 
parseFCFG strat         pinfo start toks = fail   $ "FCFG parsing strategy not defined: " ++ strat