summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2007-09-24 08:58:46 +0000
committerkr.angelov <kr.angelov@gmail.com>2007-09-24 08:58:46 +0000
commit9222e4d34c00cffb47a581693a17403e1e4cc3d2 (patch)
treea5e0e68f1b8ee9aa7b24f78e92f0b25d8dbf294e /src/GF
parentb10916944148f409a68f6eac13d9b4db49d6382f (diff)
Update GFCCAPI after the removal of FTypes and the FCFG lexer
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/Canon/GFCC/FCFGParsing.hs39
-rw-r--r--src/GF/Canon/GFCC/GFCCAPI.hs2
2 files changed, 4 insertions, 37 deletions
diff --git a/src/GF/Canon/GFCC/FCFGParsing.hs b/src/GF/Canon/GFCC/FCFGParsing.hs
index 9cd489278..2bd953f0f 100644
--- a/src/GF/Canon/GFCC/FCFGParsing.hs
+++ b/src/GF/Canon/GFCC/FCFGParsing.hs
@@ -1,44 +1,23 @@
-module GF.Canon.GFCC.FCFGParsing (parserLang,buildPInfo,FCFPInfo) where
+module GF.Canon.GFCC.FCFGParsing (parserLang,PF.buildFCFPInfo,PF.FCFPInfo) where
import GF.Canon.GFCC.DataGFCC
import GF.Canon.GFCC.AbsGFCC
import GF.Conversion.SimpleToFCFG (convertGrammar,FCat(..))
---import GF.System.Tracing
---import GF.Infra.Print
---import qualified GF.Grammar.PrGrammar as PrGrammar
-
---import GF.Data.Operations (Err(..))
-
---import qualified GF.Grammar.Grammar as Grammar
---import qualified GF.Grammar.Macros as Macros
---import qualified GF.Canon.AbsGFC as AbsGFC
---import qualified GF.Canon.GFCC.AbsGFCC as AbsGFCC
---import qualified GF.Infra.Ident as Ident
---import GF.CF.CFIdent (CFCat, cfCat2Ident, CFTok, wordsCFTok)
-
import GF.Data.SortedList
import GF.Data.Assoc
import GF.Formalism.Utilities --(forest2trees)
import qualified GF.Data.Operations as Op
-import GF.Conversion.FTypes
-
import GF.Formalism.FCFG
---import qualified GF.Formalism.GCFG as G
---import qualified GF.Formalism.SimpleGFC as S
---import qualified GF.Formalism.MCFG as M
---import qualified GF.Formalism.CFG as C
---import qualified GF.Parsing.MCFG as PM
import qualified GF.Parsing.FCFG as PF
---import qualified GF.Parsing.CFG as PC
import GF.Canon.GFCC.ErrM
import GF.Infra.PrintClass
parserLang :: GFCC -> CId -> CFCat -> [CFTok] -> Err [Exp]
parserLang mgr lang = parse info where
fcfgs = convertGrammar mgr
- info = buildPInfo $ maybe (error "no parser") id $ lookup lang fcfgs
+ info = PF.buildFCFPInfo $ maybe (error "no parser") id $ lookup lang fcfgs
type CFTok = String ----
type CFCat = CId ----
@@ -50,24 +29,12 @@ wordsCFTok :: CFTok -> [String]
wordsCFTok = return ----
-type FCFPInfo = PF.FCFPInfo FCat FName String
-
-buildPInfo :: FGrammar -> FCFPInfo
-buildPInfo fcfg = PF.buildFCFPInfo grammarLexer fcfg where
- grammarLexer s =
- case reads s of
- [(n,"")] -> (fcatInt, SInt (n::Integer))
- _ -> case reads s of
- [(f,"")] -> (fcatFloat, SFloat (f::Double))
- _ -> (fcatString,SString s)
-
-
-- main parsing function
parse ::
-- String -> -- ^ parsing algorithm (mcfg or cfg)
-- String -> -- ^ parsing strategy
- FCFPInfo -> -- ^ compiled grammar (fcfg)
+ PF.FCFPInfo -> -- ^ compiled grammar (fcfg)
-- Ident.Ident -> -- ^ abstract module name
CFCat -> -- ^ starting category
[CFTok] -> -- ^ input tokens
diff --git a/src/GF/Canon/GFCC/GFCCAPI.hs b/src/GF/Canon/GFCC/GFCCAPI.hs
index 9315ae0fc..f04808037 100644
--- a/src/GF/Canon/GFCC/GFCCAPI.hs
+++ b/src/GF/Canon/GFCC/GFCCAPI.hs
@@ -74,7 +74,7 @@ startCat :: MultiGrammar -> Category
file2grammar f = do
gfcc <- file2gfcc f
let fcfgs = convertGrammar gfcc
- return (MultiGrammar gfcc [(lang, buildPInfo fcfg) | (CId lang,fcfg) <- fcfgs])
+ return (MultiGrammar gfcc [(lang, buildFCFPInfo fcfg) | (CId lang,fcfg) <- fcfgs])
file2gfcc f =
readFileIf f >>= err (error "no parse") (return . mkGFCC) . pGrammar . myLexer