mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-13 23:09:31 -06:00
48 lines
1.3 KiB
Haskell
48 lines
1.3 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- Module : NoParse
|
|
-- Maintainer : AR
|
|
-- Stability : (stable)
|
|
-- Portability : (portable)
|
|
--
|
|
-- > CVS $Date: 2005/11/14 16:03:41 $
|
|
-- > CVS $Author: aarne $
|
|
-- > CVS $Revision: 1.1 $
|
|
--
|
|
-- Probabilistic abstract syntax. AR 30\/10\/2005
|
|
--
|
|
-- (c) Aarne Ranta 2005 under GNU GPL
|
|
--
|
|
-- Contents: decide what lin rules no parser is generated.
|
|
-- Usually a list of noparse idents from 'i -boparse=file'.
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
module GF.Compile.NoParse (
|
|
NoParse -- = Ident -> Bool
|
|
,getNoparseFromFile -- :: Opts -> IO NoParse
|
|
,doParseAll -- :: NoParse
|
|
) where
|
|
|
|
import GF.Infra.Ident
|
|
import GF.Data.Operations
|
|
import GF.Infra.Option
|
|
|
|
|
|
type NoParse = (Ident -> Bool)
|
|
|
|
doParseAll :: NoParse
|
|
doParseAll = const False
|
|
|
|
getNoparseFromFile :: Options -> FilePath -> IO NoParse
|
|
getNoparseFromFile opts file = do
|
|
let f = maybe file id $ getOptVal opts noparseFile
|
|
s <- readFile f
|
|
return $ igns s
|
|
where
|
|
igns s i = isInBinTree i $ buildTree $ flip zip (repeat ()) $ concat $ map getIgnores $ lines s
|
|
-- where
|
|
getIgnores s = case dropWhile (/="--#") (words s) of
|
|
_:"noparse":fs -> map identC fs
|
|
_ -> []
|