From 9efddd16ce282f3a89cb0488cc4b642ee07aa23b Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Sun, 23 Sep 2007 20:01:25 +0000 Subject: [PATCH] remove some redundant dependencies from FCFG --- src/GF/Canon/GFCC/FCFGParsing.hs | 6 ++---- src/GF/Canon/GFCC/GFCCAPI.hs | 6 +++--- src/GF/Canon/GFCC/ParGFCC.hs | 2 +- src/GF/Canon/GFCC/PrintGFCC.hs | 2 +- src/GF/Compile/ShellState.hs | 4 +++- src/GF/Conversion/FTypes.hs | 1 - src/GF/Conversion/SimpleToFCFG.hs | 13 +++---------- src/GF/Formalism/FCFG.hs | 3 --- src/GF/Formalism/Utilities.hs | 1 - src/GF/Parsing/FCFG.hs | 2 -- src/GF/Parsing/FCFG/Active.hs | 3 --- src/GF/Parsing/FCFG/PInfo.hs | 5 ----- 12 files changed, 13 insertions(+), 35 deletions(-) diff --git a/src/GF/Canon/GFCC/FCFGParsing.hs b/src/GF/Canon/GFCC/FCFGParsing.hs index eeea653d2..9cd489278 100644 --- a/src/GF/Canon/GFCC/FCFGParsing.hs +++ b/src/GF/Canon/GFCC/FCFGParsing.hs @@ -2,7 +2,7 @@ module GF.Canon.GFCC.FCFGParsing (parserLang,buildPInfo,FCFPInfo) where import GF.Canon.GFCC.DataGFCC import GF.Canon.GFCC.AbsGFCC -import GF.Conversion.SimpleToFCFG (convertGrammarCId,FCat(..)) +import GF.Conversion.SimpleToFCFG (convertGrammar,FCat(..)) --import GF.System.Tracing --import GF.Infra.Print @@ -35,11 +35,9 @@ import qualified GF.Parsing.FCFG as PF import GF.Canon.GFCC.ErrM import GF.Infra.PrintClass ---convertGrammarCId :: Grammar -> [(CId,FGrammar)] - parserLang :: GFCC -> CId -> CFCat -> [CFTok] -> Err [Exp] parserLang mgr lang = parse info where - fcfgs = convertGrammarCId mgr + fcfgs = convertGrammar mgr info = buildPInfo $ maybe (error "no parser") id $ lookup lang fcfgs type CFTok = String ---- diff --git a/src/GF/Canon/GFCC/GFCCAPI.hs b/src/GF/Canon/GFCC/GFCCAPI.hs index 9c3978442..9315ae0fc 100644 --- a/src/GF/Canon/GFCC/GFCCAPI.hs +++ b/src/GF/Canon/GFCC/GFCCAPI.hs @@ -23,14 +23,14 @@ import GF.Canon.GFCC.PrintGFCC import GF.Canon.GFCC.ErrM import GF.Canon.GFCC.FCFGParsing import qualified GF.Canon.GFCC.GenGFCC as G -import GF.Conversion.SimpleToFCFG (convertGrammarCId,FCat(..)) ---- +import GF.Conversion.SimpleToFCFG (convertGrammar,FCat(..)) --import GF.Data.Operations --import GF.Infra.UseIO import qualified Data.Map as Map import System.Random (newStdGen) import System.Directory (doesFileExist) -import System + -- This API is meant to be used when embedding GF grammars in Haskell -- programs. The embedded system is supposed to use the @@ -73,7 +73,7 @@ startCat :: MultiGrammar -> Category file2grammar f = do gfcc <- file2gfcc f - let fcfgs = convertGrammarCId gfcc + let fcfgs = convertGrammar gfcc return (MultiGrammar gfcc [(lang, buildPInfo fcfg) | (CId lang,fcfg) <- fcfgs]) file2gfcc f = diff --git a/src/GF/Canon/GFCC/ParGFCC.hs b/src/GF/Canon/GFCC/ParGFCC.hs index 2d208c20d..9aca361e7 100644 --- a/src/GF/Canon/GFCC/ParGFCC.hs +++ b/src/GF/Canon/GFCC/ParGFCC.hs @@ -4,7 +4,7 @@ module GF.Canon.GFCC.ParGFCC where import GF.Canon.GFCC.AbsGFCC import GF.Canon.GFCC.LexGFCC import GF.Canon.GFCC.ErrM -import Array +import Data.Array #if __GLASGOW_HASKELL__ >= 503 import GHC.Exts #else diff --git a/src/GF/Canon/GFCC/PrintGFCC.hs b/src/GF/Canon/GFCC/PrintGFCC.hs index 05a9246cd..b3a2e3171 100644 --- a/src/GF/Canon/GFCC/PrintGFCC.hs +++ b/src/GF/Canon/GFCC/PrintGFCC.hs @@ -4,7 +4,7 @@ module GF.Canon.GFCC.PrintGFCC where -- pretty-printer generated by the BNF converter import GF.Canon.GFCC.AbsGFCC -import Char +import Data.Char -- the top-level printing method printTree :: Print a => a -> String diff --git a/src/GF/Compile/ShellState.hs b/src/GF/Compile/ShellState.hs index 57c0d1e88..e9533e1a0 100644 --- a/src/GF/Compile/ShellState.hs +++ b/src/GF/Compile/ShellState.hs @@ -17,6 +17,8 @@ module GF.Compile.ShellState where import GF.Data.Operations import GF.Canon.GFC import GF.Canon.AbsGFC +import GF.Canon.GFCC.AbsGFCC(CId(CId)) +import GF.Canon.GFCC.DataGFCC(mkGFCC) import GF.Canon.CanonToGFCC as C2GFCC import GF.Grammar.Macros import GF.Grammar.MMacros @@ -260,7 +262,7 @@ updateShellState opts ign mcnc sh ((_,sgr,gr,eenv),rts) = do let fromGFC = snd . snd . Cnv.convertGFC opts (mcfgs, cfgs) = unzip $ map (curry fromGFC cgr) concrs - fcfgs = FCnv.convertGrammar (C2GFCC.mkCanon2gfccNoUTF8 cgr) + fcfgs = [(IC id,g) | (CId id,g) <- FCnv.convertGrammar (mkGFCC (C2GFCC.mkCanon2gfccNoUTF8 cgr))] pInfos = zipWith3 Prs.buildPInfo mcfgs (map snd fcfgs) cfgs diff --git a/src/GF/Conversion/FTypes.hs b/src/GF/Conversion/FTypes.hs index 6538b04cd..9409fc4ee 100644 --- a/src/GF/Conversion/FTypes.hs +++ b/src/GF/Conversion/FTypes.hs @@ -1,6 +1,5 @@ module GF.Conversion.FTypes where -import qualified GF.Infra.Ident as Ident (Ident(..), wildIdent, isWildIdent) import qualified GF.Canon.GFCC.AbsGFCC as AbsGFCC (CId(..)) import GF.Formalism.FCFG diff --git a/src/GF/Conversion/SimpleToFCFG.hs b/src/GF/Conversion/SimpleToFCFG.hs index 6b580cb24..f5d771298 100644 --- a/src/GF/Conversion/SimpleToFCFG.hs +++ b/src/GF/Conversion/SimpleToFCFG.hs @@ -13,11 +13,9 @@ module GF.Conversion.SimpleToFCFG - (convertGrammar,convertGrammarCId,FCat(..)) where + (convertGrammar,FCat(..)) where -import GF.System.Tracing import GF.Infra.PrintClass -import GF.Infra.Ident import Control.Monad @@ -42,13 +40,8 @@ import Data.Maybe type FToken = String -convertGrammar :: Grammar -> [(Ident,FCFGrammar FCat FName FToken)] -convertGrammar g = [(IC c, f) | (CId c,f) <- convertGrammarCId (mkGFCC g)] - --- this is more native for GFCC - -convertGrammarCId :: GFCC -> [(CId,FCFGrammar FCat FName FToken)] -convertGrammarCId gfcc = [(cncname,convert abs_defs conc) | +convertGrammar :: GFCC -> [(CId,FCFGrammar FCat FName FToken)] +convertGrammar gfcc = [(cncname,convert abs_defs conc) | cncname <- cncnames gfcc, conc <- Map.lookup cncname (concretes gfcc)] where diff --git a/src/GF/Formalism/FCFG.hs b/src/GF/Formalism/FCFG.hs index e8e1f52e8..2fb4b0422 100644 --- a/src/GF/Formalism/FCFG.hs +++ b/src/GF/Formalism/FCFG.hs @@ -13,9 +13,6 @@ import Control.Monad (liftM) import Data.List (groupBy) import Data.Array -import GF.Formalism.Utilities ---import GF.Formalism.GCFG - import GF.Infra.PrintClass diff --git a/src/GF/Formalism/Utilities.hs b/src/GF/Formalism/Utilities.hs index 5d6c5854e..d1826d095 100644 --- a/src/GF/Formalism/Utilities.hs +++ b/src/GF/Formalism/Utilities.hs @@ -43,7 +43,6 @@ filterCats syms = [ cat | Cat cat <- syms ] filterToks :: [Symbol c t] -> [t] filterToks syms = [ tok | Tok tok <- syms ] - ------------------------------------------------------------ -- * edges diff --git a/src/GF/Parsing/FCFG.hs b/src/GF/Parsing/FCFG.hs index 9309dc78c..dfe26d0b3 100644 --- a/src/GF/Parsing/FCFG.hs +++ b/src/GF/Parsing/FCFG.hs @@ -13,8 +13,6 @@ module GF.Parsing.FCFG import GF.Data.Operations (Err(..)) import GF.Formalism.Utilities -import GF.Formalism.GCFG -import GF.Formalism.MCFG import GF.Parsing.FCFG.PInfo import qualified GF.Parsing.FCFG.Active as Active diff --git a/src/GF/Parsing/FCFG/Active.hs b/src/GF/Parsing/FCFG/Active.hs index 243fc993c..d315ca1cc 100644 --- a/src/GF/Parsing/FCFG/Active.hs +++ b/src/GF/Parsing/FCFG/Active.hs @@ -14,12 +14,9 @@ import GF.Data.Assoc import GF.Data.SortedList import GF.Data.Utilities -import GF.Formalism.GCFG import GF.Formalism.FCFG -import GF.Formalism.MCFG(Lin(..)) import GF.Formalism.Utilities -import GF.Infra.Ident import GF.Infra.PrintClass import GF.Parsing.FCFG.Range diff --git a/src/GF/Parsing/FCFG/PInfo.hs b/src/GF/Parsing/FCFG/PInfo.hs index 0105bf24f..e463cf65a 100644 --- a/src/GF/Parsing/FCFG/PInfo.hs +++ b/src/GF/Parsing/FCFG/PInfo.hs @@ -9,11 +9,8 @@ module GF.Parsing.FCFG.PInfo where -import GF.System.Tracing import GF.Infra.PrintClass - import GF.Formalism.Utilities -import GF.Formalism.GCFG import GF.Formalism.FCFG import GF.Data.SortedList import GF.Data.Assoc @@ -73,8 +70,6 @@ getLeftCornerCat lins buildFCFPInfo :: (Ord c, Ord n, Ord t) => (t -> (c,SyntaxNode RuleId RangeRec)) -> FCFGrammar c n t -> FCFPInfo c n t buildFCFPInfo lexer grammar = - traceCalcFirst grammar $ - tracePrt "MCFG.PInfo - parser info" (prt) $ FCFPInfo { allRules = allrules , topdownRules = topdownrules -- , emptyRules = emptyrules