mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-12 14:29:31 -06:00
41 lines
1.4 KiB
Haskell
41 lines
1.4 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- 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
|