diff options
Diffstat (limited to 'src/PGF/Parsing/FCFG.hs')
| -rw-r--r-- | src/PGF/Parsing/FCFG.hs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/PGF/Parsing/FCFG.hs b/src/PGF/Parsing/FCFG.hs new file mode 100644 index 000000000..4ca6a956a --- /dev/null +++ b/src/PGF/Parsing/FCFG.hs @@ -0,0 +1,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 |
