summaryrefslogtreecommitdiff
path: root/src/GF/Parsing/ConvertGrammar.hs
blob: f8ce9335f571ef43161693b03ef847f228802183 (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
41
42
----------------------------------------------------------------------
-- |
-- Module      : ConvertGrammar
-- Maintainer  : PL
-- Stability   : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/03/21 22:31:46 $ 
-- > CVS $Author: peb $
-- > CVS $Revision: 1.1 $
--
-- All (?) grammar conversions which are used in GF
-----------------------------------------------------------------------------


module GF.Parsing.ConvertGrammar
    (pInfo, emptyPInfo,
     module GF.Parsing.GrammarTypes
    ) where

import GFC (CanonGrammar)
import GF.Parsing.GrammarTypes
import Ident (Ident(..))
import Option
import Tracing

import qualified GF.Parsing.ConvertGFCtoMCFG  as G2M
import qualified GF.Parsing.ConvertMCFGtoCFG  as M2C
import qualified GF.Parsing.MCFGrammar        as MCFG
import qualified GF.Parsing.CFGrammar         as CFG

pInfo :: Options -> CanonGrammar -> Ident -> PInfo 
pInfo opts canon lng = PInfo mcfg cfg mcfp cfp
    where mcfg = G2M.convertGrammar cnv (canon, lng)
	  cnv  = maybe "nondet" id $ getOptVal opts gfcConversion 
	  cfg  = M2C.convertGrammar mcfg
	  mcfp = MCFG.pInfo mcfg
	  cfp  = CFG.pInfo cfg

emptyPInfo :: PInfo
emptyPInfo = PInfo [] [] (MCFG.pInfo []) (CFG.pInfo [])