1
0
forked from GitHub/gf-core

Eliminate mutual dependencies between the GF compiler and the PGF library

+ References to modules under src/compiler have been eliminated from the PGF
  library (under src/runtime/haskell). Only two functions had to be moved (from
  GF.Data.Utilities to PGF.Utilities) to make this possible, other apparent
  dependencies turned out to be vacuous.

+ In gf.cabal, the GF executable no longer directly depends on the PGF library
  source directory, but only on the exposed library modules. This means that
  there is less duplication in gf.cabal and that the 30 modules in the
  PGF library will no longer be compiled twice while building GF.

  To make this possible, additional PGF library modules have been exposed, even
  though they should probably be considered for internal use only. They could
  be collected in a PGF.Internal module, or marked as "unstable", to make
  this explicit.

+ Also, by using the -fwarn-unused-imports flag, ~220 redundant imports were
  found and removed, reducing the total number of imports by ~15%.
This commit is contained in:
hallgren
2013-11-05 13:11:10 +00:00
parent e6ec23c178
commit decd7122de
97 changed files with 312 additions and 335 deletions

View File

@@ -57,7 +57,7 @@ flag custom-binary
Description: Use a customised version of the binary package Description: Use a customised version of the binary package
Default: True Default: True
library Library
build-depends: base >= 4.2 && <5, build-depends: base >= 4.2 && <5,
array, array,
fst, fst,
@@ -66,11 +66,11 @@ library
random, random,
pretty, pretty,
mtl mtl
hs-source-dirs: src/compiler src/runtime/haskell hs-source-dirs: src/runtime/haskell
if flag(custom-binary) if flag(custom-binary)
hs-source-dirs: src/binary hs-source-dirs: src/binary
other-modules: exposed-modules:
-- not really part of GF but I have changed the original binary library -- not really part of GF but I have changed the original binary library
-- and we have to keep the copy for now. -- and we have to keep the copy for now.
Data.Binary Data.Binary
@@ -81,40 +81,38 @@ library
else else
build-depends: binary build-depends: binary
ghc-options: -fwarn-unused-imports
extensions: extensions:
exposed-modules: exposed-modules:
PGF PGF
other-modules:
PGF.CId
PGF.Data PGF.Data
PGF.Macros PGF.Macros
PGF.Optimize
PGF.Printer
PGF.Signature
PGF.Tree
PGF.Utilities
other-modules:
PGF.CId
PGF.Binary
PGF.Expr
PGF.Generate PGF.Generate
PGF.Linearize PGF.Linearize
PGF.Parse
PGF.SortTop
PGF.Expr
PGF.Type
PGF.Tree
PGF.Tokenizer
PGF.Paraphrase
PGF.TypeCheck
PGF.Binary
PGF.Morphology PGF.Morphology
PGF.VisualizeTree PGF.Paraphrase
PGF.Printer PGF.Parse
PGF.Probabilistic PGF.Probabilistic
PGF.SortTop
PGF.Type
PGF.Tokenizer
PGF.TypeCheck
PGF.Forest PGF.Forest
PGF.Optimize PGF.TrieMap
PGF.Signature PGF.VisualizeTree
GF.Data.TrieMap
GF.Data.Utilities
GF.Data.SortedList
GF.Data.ErrM
GF.Data.Relation
GF.Data.Operations
executable gf Executable gf
build-depends: base >= 4.2 && <5, build-depends: gf,
base >= 4.2 && <5,
array, array,
containers, containers,
bytestring, bytestring,
@@ -131,7 +129,7 @@ executable gf
haskeline, haskeline,
parallel>=3, parallel>=3,
utf8-string utf8-string
ghc-options: -threaded ghc-options: -threaded -fwarn-unused-imports
if flag(server) if flag(server)
build-depends: httpd-shed, network, json, cgi build-depends: httpd-shed, network, json, cgi
-- ,silently -- ,silently
@@ -153,21 +151,17 @@ executable gf
if impl(ghc>=7.0) if impl(ghc>=7.0)
ghc-options: -rtsopts ghc-options: -rtsopts
hs-source-dirs: src/compiler src/runtime/haskell hs-source-dirs: src/compiler
if flag(custom-binary) if !flag(custom-binary)
hs-source-dirs: src/binary
other-modules: Data.Binary.IEEE754
else
build-depends: binary, data-binary-ieee754 build-depends: binary, data-binary-ieee754
extensions: extensions:
main-is: GF.hs main-is: GF.hs
other-modules: other-modules:
GF.Data.BacktrackM GF.Data.BacktrackM
GF.Data.TrieMap
GF.Data.Utilities GF.Data.Utilities
GF.Data.SortedList -- GF.Data.SortedList
GF.Data.ErrM GF.Data.ErrM
GF.Data.Operations GF.Data.Operations
GF.Data.Str GF.Data.Str
@@ -227,20 +221,6 @@ executable gf
GF.Compile GF.Compile
GF.Index GF.Index
GF.Quiz GF.Quiz
PGF
PGF.CId
PGF.Data
PGF.Expr
PGF.Type
PGF.Tree
PGF.Macros
PGF.Generate
PGF.Linearize
PGF.Binary
PGF.Paraphrase
PGF.TypeCheck
PGF.Printer
PGF.Optimize
GFC GFC
GFI GFI

View File

@@ -56,7 +56,7 @@ module Data.Binary.Builder (
import Foreign import Foreign
import Data.Monoid import Data.Monoid
import Data.Word --import Data.Word
import qualified Data.ByteString as S import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Lazy as L
@@ -66,7 +66,7 @@ import qualified Data.ByteString.Base as S
#else #else
import Data.ByteString.Internal (inlinePerformIO) import Data.ByteString.Internal (inlinePerformIO)
import qualified Data.ByteString.Internal as S import qualified Data.ByteString.Internal as S
import qualified Data.ByteString.Lazy.Internal as L --import qualified Data.ByteString.Lazy.Internal as L
#endif #endif
#if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__) #if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__)

View File

@@ -68,7 +68,7 @@ module Data.Binary.Get (
) where ) where
import Control.Monad (when,liftM,ap) import Control.Monad (when,liftM) -- ap
import Control.Monad.Fix import Control.Monad.Fix
import Data.Maybe (isNothing) import Data.Maybe (isNothing)
@@ -95,7 +95,7 @@ import Data.STRef
#if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__) #if defined(__GLASGOW_HASKELL__) && !defined(__HADDOCK__)
import GHC.Base import GHC.Base
import GHC.Word import GHC.Word
import GHC.Int --import GHC.Int
#endif #endif
-- | The parse state -- | The parse state

View File

@@ -1,7 +1,6 @@
module GF.Command.Abstract where module GF.Command.Abstract where
import PGF.CId(CId,mkCId) import PGF(CId,mkCId,Expr)
import PGF.Data(Expr)
type Ident = String type Ident = String

View File

@@ -14,13 +14,12 @@ import Prelude hiding (putStrLn)
import PGF import PGF
import PGF.VisualizeTree(getDepLabels)
import PGF.Macros(lookStartCat,functionsToCat,lookValCat,restrictPGF,hasLin) import PGF.Macros(lookStartCat,functionsToCat,lookValCat,restrictPGF,hasLin)
import PGF.Data(abstract,funs,cats,Literal(LStr),Expr(EFun,ELit)) ---- import PGF.Data(abstract,funs,cats,Literal(LStr),Expr(EFun,ELit)) ----
import PGF.Morphology(isInMorpho,morphoKnown) --import PGF.Morphology(isInMorpho,morphoKnown)
import PGF.Printer(ppFun,ppCat) import PGF.Printer(ppFun,ppCat)
import PGF.Probabilistic(rankTreesByProbs,probTree,setProbabilities) --import PGF.Probabilistic(rankTreesByProbs,probTree,setProbabilities)
import PGF.Generate (generateRandomFrom) ---- --import PGF.Generate (generateRandomFrom) ----
import PGF.Tree (Tree(Fun), expr2tree, tree2expr) import PGF.Tree (Tree(Fun), expr2tree, tree2expr)
import PGF.Optimize(optimizePGF) import PGF.Optimize(optimizePGF)
@@ -30,7 +29,7 @@ import GF.Compile.ExampleBased
import GF.Infra.Option (noOptions, readOutputFormat, outputFormatsExpl) import GF.Infra.Option (noOptions, readOutputFormat, outputFormatsExpl)
import GF.Infra.UseIO(writeUTF8File) import GF.Infra.UseIO(writeUTF8File)
import GF.Infra.SIO import GF.Infra.SIO
import GF.Data.ErrM ---- --import GF.Data.ErrM ----
import GF.Command.Abstract import GF.Command.Abstract
import GF.Command.Messages import GF.Command.Messages
import GF.Text.Lexing import GF.Text.Lexing
@@ -43,13 +42,13 @@ import GF.Command.TreeOperations ---- temporary place for typecheck and compute
import GF.Data.Operations import GF.Data.Operations
import Data.Binary (encodeFile) import Data.Binary (encodeFile)
import Data.List import Data.List(intersperse,nub)
import Data.Maybe import Data.Maybe
import qualified Data.Map as Map import qualified Data.Map as Map
--import System.Cmd(system) -- use GF.Infra.UseIO.restricedSystem instead! --import System.Cmd(system) -- use GF.Infra.UseIO.restricedSystem instead!
import Text.PrettyPrint import Text.PrettyPrint
import Data.List (sort) import Data.List (sort)
import Debug.Trace --import Debug.Trace
--import System.Random (newStdGen) ---- --import System.Random (newStdGen) ----
@@ -940,7 +939,7 @@ allCommands = Map.fromList [
let outp = valStrOpts "output" "dot" opts let outp = valStrOpts "output" "dot" opts
mlab <- case file of mlab <- case file of
"" -> return Nothing "" -> return Nothing
_ -> restricted (readFile file) >>= return . Just . getDepLabels . lines _ -> (Just . getDepLabels . lines) `fmap` restricted (readFile file)
let lang = optLang pgf opts let lang = optLang pgf opts
let grphs = unlines $ map (graphvizDependencyTree outp debug mlab Nothing pgf lang) es let grphs = unlines $ map (graphvizDependencyTree outp debug mlab Nothing pgf lang) es
if isFlag "view" opts || isFlag "format" opts then do if isFlag "view" opts || isFlag "format" opts then do

View File

@@ -12,7 +12,7 @@ import GF.Infra.UseIO
import GF.Infra.Option import GF.Infra.Option
import GF.Data.ErrM import GF.Data.ErrM
import Data.List (nubBy) --import Data.List (nubBy)
import System.FilePath import System.FilePath
-- import a grammar in an environment where it extends an existing grammar -- import a grammar in an environment where it extends an existing grammar

View File

@@ -13,10 +13,8 @@ import GF.Command.Abstract
import GF.Command.Parse import GF.Command.Parse
import PGF import PGF
import PGF.Data import PGF.Data
import PGF.Morphology --import PGF.Morphology
import GF.System.Signal
import GF.Infra.SIO import GF.Infra.SIO
import GF.Infra.Option
import Text.PrettyPrint import Text.PrettyPrint
import Control.Monad(when) import Control.Monad(when)

View File

@@ -1,7 +1,6 @@
module GF.Command.Parse(readCommandLine, pCommand) where module GF.Command.Parse(readCommandLine, pCommand) where
import PGF.CId import PGF
import PGF.Expr
import GF.Command.Abstract import GF.Command.Abstract
import Data.Char import Data.Char

View File

@@ -17,7 +17,6 @@ import GF.Compile.Coding
import GF.Compile.Tags import GF.Compile.Tags
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Grammar.Lookup
import GF.Grammar.Printer import GF.Grammar.Printer
import GF.Grammar.Binary import GF.Grammar.Binary
@@ -34,15 +33,10 @@ import System.FilePath
import qualified Data.Map as Map import qualified Data.Map as Map
--import qualified Data.Set as Set --import qualified Data.Set as Set
import Data.List(nub) import Data.List(nub)
import Data.Maybe (isNothing)
import Text.PrettyPrint import Text.PrettyPrint
import PGF.CId
import PGF.Data
import PGF.Macros
import PGF.Optimize import PGF.Optimize
import PGF.Probabilistic import PGF
-- | Compiles a number of source files and builds a 'PGF' structure for them. -- | Compiles a number of source files and builds a 'PGF' structure for them.
compileToPGF :: Options -> [FilePath] -> IOE PGF compileToPGF :: Options -> [FilePath] -> IOE PGF

View File

@@ -33,8 +33,8 @@ import qualified GF.Compile.Compute.ConcreteNew as CN
import GF.Grammar import GF.Grammar
import GF.Grammar.Lexer import GF.Grammar.Lexer
import GF.Grammar.Lookup import GF.Grammar.Lookup
import GF.Grammar.Predef --import GF.Grammar.Predef
import GF.Grammar.PatternMatch --import GF.Grammar.PatternMatch
import GF.Data.Operations import GF.Data.Operations
import GF.Infra.CheckM import GF.Infra.CheckM

View File

@@ -3,10 +3,10 @@ module GF.Compile.Coding where
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Grammar.Macros import GF.Grammar.Macros
import GF.Text.Coding import GF.Text.Coding
import GF.Infra.Option --import GF.Infra.Option
import GF.Data.Operations import GF.Data.Operations
import Data.Char --import Data.Char
import System.IO import System.IO
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS

View File

@@ -16,7 +16,7 @@ module GF.Compile.Compute.AppPredefined (
isInPredefined, typPredefined, arrityPredefined, predefModInfo, appPredefined isInPredefined, typPredefined, arrityPredefined, predefModInfo, appPredefined
) where ) where
import GF.Infra.Ident(identS) --import GF.Infra.Ident(identS)
import GF.Infra.Option import GF.Infra.Option
import GF.Data.Operations import GF.Data.Operations
import GF.Grammar import GF.Grammar

View File

@@ -17,9 +17,9 @@ module GF.Compile.Compute.ConcreteLazy (computeConcrete, computeTerm,checkPredef
import GF.Data.Operations import GF.Data.Operations
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Infra.Ident import GF.Infra.Ident
import GF.Infra.Option --import GF.Infra.Option
import GF.Data.Str import GF.Data.Str
import GF.Grammar.ShowTerm --import GF.Grammar.ShowTerm
import GF.Grammar.Printer import GF.Grammar.Printer
import GF.Grammar.Predef import GF.Grammar.Predef
import GF.Grammar.Macros import GF.Grammar.Macros
@@ -30,8 +30,8 @@ import GF.Grammar.Lockfield (isLockLabel,unlockRecord) ----
import GF.Compile.Compute.AppPredefined import GF.Compile.Compute.AppPredefined
import Data.List (nub,intersperse) import Data.List (nub) --intersperse
import Control.Monad (liftM2, liftM) --import Control.Monad (liftM2, liftM)
import Control.Monad.Identity import Control.Monad.Identity
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -9,15 +9,15 @@ import GF.Grammar hiding (Env, VGen, VApp, VRecType)
import GF.Grammar.Lookup(lookupResDefLoc,allParamValues) import GF.Grammar.Lookup(lookupResDefLoc,allParamValues)
import GF.Grammar.Predef(cPredef,cErrorType,cTok,cStr) import GF.Grammar.Predef(cPredef,cErrorType,cTok,cStr)
import GF.Grammar.PatternMatch(matchPattern,measurePatt) import GF.Grammar.PatternMatch(matchPattern,measurePatt)
import GF.Grammar.Lockfield(unlockRecord,lockLabel,isLockLabel,lockRecType) import GF.Grammar.Lockfield(lockLabel,isLockLabel,lockRecType) --unlockRecord
import GF.Compile.Compute.Value hiding (Error) import GF.Compile.Compute.Value hiding (Error)
import GF.Compile.Compute.Predef(predef,predefName,delta) import GF.Compile.Compute.Predef(predef,predefName,delta)
import GF.Data.Str(Str,glueStr,str2strings,str,sstr,plusStr,strTok) import GF.Data.Str(Str,glueStr,str2strings,str,sstr,plusStr,strTok)
import GF.Data.Operations(Err,err,errIn,maybeErr,combinations,mapPairsM) import GF.Data.Operations(Err,err,errIn,maybeErr,combinations,mapPairsM)
import GF.Data.Utilities(mapFst,mapSnd,mapBoth,apBoth,apSnd) import GF.Data.Utilities(mapFst,mapSnd,mapBoth)
import Control.Monad(ap,liftM,liftM2,mplus,unless) import Control.Monad(ap,liftM,liftM2,mplus,unless)
import Data.List (findIndex,intersect,isInfixOf,nub,elemIndex,(\\)) import Data.List (findIndex,intersect,nub,elemIndex,(\\)) --,isInfixOf
import Data.Char (isUpper,toUpper,toLower) --import Data.Char (isUpper,toUpper,toLower)
import Text.PrettyPrint import Text.PrettyPrint
import qualified Data.Map as Map import qualified Data.Map as Map
--import Debug.Trace(trace) --import Debug.Trace(trace)

View File

@@ -9,13 +9,13 @@ import Data.List (isInfixOf)
import Data.Char (isUpper,toLower,toUpper) import Data.Char (isUpper,toLower,toUpper)
import Control.Monad(ap) import Control.Monad(ap)
import GF.Data.Utilities (mapSnd,apBoth) import GF.Data.Utilities (apBoth) --mapSnd
import GF.Compile.Compute.Value import GF.Compile.Compute.Value
import GF.Infra.Ident (Ident,varX,showIdent) import GF.Infra.Ident (Ident,showIdent) --,varX
import GF.Data.Operations(Err,err) import GF.Data.Operations(Err) -- ,err
import GF.Grammar.Predef import GF.Grammar.Predef
import PGF.Data(BindType(..)) --import PGF.Data(BindType(..))
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
class Predef a where class Predef a where

View File

@@ -1,8 +1,8 @@
module GF.Compile.Compute.Value where module GF.Compile.Compute.Value where
import GF.Grammar.Grammar(Label,Type,TInfo,MetaId,Patt,QIdent) import GF.Grammar.Grammar(Label,Type,MetaId,Patt,QIdent)
import PGF.Data(BindType) import PGF.Data(BindType)
import GF.Infra.Ident(Ident) import GF.Infra.Ident(Ident)
import Text.Show.Functions import Text.Show.Functions()
import Data.Ix(Ix) import Data.Ix(Ix)
-- | Self-contained (not quite) representation of values -- | Self-contained (not quite) representation of values

View File

@@ -4,9 +4,9 @@ module GF.Compile.ExampleBased (
) where ) where
import PGF import PGF
import PGF.Probabilistic --import PGF.Probabilistic
import PGF.Morphology --import PGF.Morphology
import GF.Compile.ToAPI --import GF.Compile.ToAPI
import Data.List import Data.List

View File

@@ -1,14 +1,14 @@
module GF.Compile.Export where module GF.Compile.Export where
import PGF import PGF
import PGF.Printer import PGF.Printer(ppPGF)
import GF.Compile.PGFtoHaskell import GF.Compile.PGFtoHaskell
import GF.Compile.PGFtoProlog import GF.Compile.PGFtoProlog
import GF.Compile.PGFtoLProlog import GF.Compile.PGFtoLProlog
import GF.Compile.PGFtoJS import GF.Compile.PGFtoJS
import GF.Compile.PGFtoPython import GF.Compile.PGFtoPython
import GF.Infra.Option import GF.Infra.Option
import GF.Speech.CFG --import GF.Speech.CFG
import GF.Speech.PGFToCFG import GF.Speech.PGFToCFG
import GF.Speech.SRGS_ABNF import GF.Speech.SRGS_ABNF
import GF.Speech.SRGS_XML import GF.Speech.SRGS_XML

View File

@@ -13,7 +13,7 @@ module GF.Compile.GeneratePMCFG
(generatePMCFG, pgfCncCat, addPMCFG, resourceValues (generatePMCFG, pgfCncCat, addPMCFG, resourceValues
) where ) where
import PGF.CId --import PGF.CId
import PGF.Data(CncCat(..),Symbol(..),fidVar) import PGF.Data(CncCat(..),Symbol(..),fidVar)
import GF.Infra.Option import GF.Infra.Option
@@ -24,23 +24,23 @@ import GF.Grammar.Lockfield (isLockLabel)
import GF.Data.BacktrackM import GF.Data.BacktrackM
import GF.Data.Operations import GF.Data.Operations
import GF.Infra.UseIO (IOE) import GF.Infra.UseIO (IOE)
import GF.Data.Utilities (updateNthM, updateNth) import GF.Data.Utilities (updateNthM) --updateNth
import GF.Compile.Compute.ConcreteNew(GlobalEnv,normalForm,resourceValues,ppL) import GF.Compile.Compute.ConcreteNew(GlobalEnv,normalForm,resourceValues,ppL)
import System.IO(hPutStr,hPutStrLn,stderr) import System.IO(hPutStr,hPutStrLn,stderr)
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.List as List import qualified Data.List as List
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import qualified Data.IntSet as IntSet import qualified Data.IntSet as IntSet
import Text.PrettyPrint hiding (Str) import Text.PrettyPrint hiding (Str)
import Data.Array.IArray import Data.Array.IArray
import Data.Array.Unboxed import Data.Array.Unboxed
import Data.Maybe --import Data.Maybe
import Data.Char (isDigit) --import Data.Char (isDigit)
import Control.Monad import Control.Monad
import Control.Monad.Identity import Control.Monad.Identity
import Control.Monad.Trans (liftIO) import Control.Monad.Trans (liftIO)
import Control.Exception --import Control.Exception
---------------------------------------------------------------------- ----------------------------------------------------------------------
-- main conversion function -- main conversion function

View File

@@ -25,9 +25,9 @@ import GF.Grammar.Lexer
import GF.Grammar.Parser import GF.Grammar.Parser
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Compile.ReadFiles --import GF.Compile.ReadFiles
import Data.Char (toUpper) --import Data.Char (toUpper)
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS
import Control.Monad (foldM) import Control.Monad (foldM)
import System.Cmd (system) import System.Cmd (system)

View File

@@ -1,24 +1,23 @@
{-# LANGUAGE BangPatterns #-} {-# LANGUAGE BangPatterns #-}
module GF.Compile.GrammarToPGF (mkCanon2pgf) where module GF.Compile.GrammarToPGF (mkCanon2pgf) where
import GF.Compile.Export --import GF.Compile.Export
import GF.Compile.GeneratePMCFG import GF.Compile.GeneratePMCFG
import GF.Compile.GenerateBC import GF.Compile.GenerateBC
import PGF.CId import PGF(CId,mkCId,bsCId)
import PGF.Data(fidInt,fidFloat,fidString,fidVar) import PGF.Data(fidInt,fidFloat,fidString,fidVar)
import PGF.Optimize(updateProductionIndices) import PGF.Optimize(updateProductionIndices)
import qualified PGF.Macros as CM --import qualified PGF.Macros as CM
import qualified PGF.Data as C import qualified PGF.Data as C
import qualified PGF.Data as D import qualified PGF.Data as D
import GF.Grammar.Predef import GF.Grammar.Predef
import GF.Grammar.Printer --import GF.Grammar.Printer
import GF.Grammar.Grammar import GF.Grammar.Grammar
import qualified GF.Grammar.Lookup as Look import qualified GF.Grammar.Lookup as Look
import qualified GF.Grammar as A import qualified GF.Grammar as A
import qualified GF.Grammar.Macros as GM import qualified GF.Grammar.Macros as GM
import qualified GF.Infra.Option as O --import GF.Compile.GeneratePMCFG
import GF.Compile.GeneratePMCFG
import GF.Infra.Ident import GF.Infra.Ident
import GF.Infra.Option import GF.Infra.Option
@@ -26,13 +25,13 @@ import GF.Infra.UseIO (IOE)
import GF.Data.Operations import GF.Data.Operations
import Data.List import Data.List
import Data.Char (isDigit,isSpace) --import Data.Char (isDigit,isSpace)
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import Data.Array.IArray import Data.Array.IArray
import Text.PrettyPrint --import Text.PrettyPrint
import Control.Monad.Identity --import Control.Monad.Identity
mkCanon2pgf :: Options -> SourceGrammar -> Ident -> IOE D.PGF mkCanon2pgf :: Options -> SourceGrammar -> Ident -> IOE D.PGF
mkCanon2pgf opts gr am = do mkCanon2pgf opts gr am = do
@@ -104,7 +103,7 @@ mkCanon2pgf opts gr am = do
return (seqs, ((m,id), info) : is) return (seqs, ((m,id), info) : is)
i2i :: Ident -> CId i2i :: Ident -> CId
i2i = CId . ident2bs i2i = bsCId . ident2bs
mkType :: [Ident] -> A.Type -> C.Type mkType :: [Ident] -> A.Type -> C.Type
mkType scope t = mkType scope t =

View File

@@ -1,12 +1,13 @@
module GF.Compile.Instructions where module GF.Compile.Instructions where
import Data.IORef --import Data.IORef
import Data.Binary import Data.Binary
import Data.Binary.Put import Data.Binary.Put
import Data.Binary.Get import Data.Binary.Get
import Data.Binary.IEEE754 import Data.Binary.IEEE754
import PGF.CId import PGF(CId)
import PGF.Binary --import PGF.CId
--import PGF.Binary
type IntRef = Int type IntRef = Int
type AConstant = CId type AConstant = CId

View File

@@ -23,15 +23,15 @@ import GF.Grammar.Lookup
import GF.Grammar.Predef import GF.Grammar.Predef
--import GF.Compile.Refresh --import GF.Compile.Refresh
import GF.Compile.Compute.Concrete import GF.Compile.Compute.Concrete
import GF.Compile.CheckGrammar --import GF.Compile.CheckGrammar
import GF.Compile.Update --import GF.Compile.Update
import GF.Data.Operations import GF.Data.Operations
import GF.Infra.CheckM --import GF.Infra.CheckM
import GF.Infra.Option import GF.Infra.Option
import Control.Monad import Control.Monad
import Data.List --import Data.List
import qualified Data.Set as Set import qualified Data.Set as Set
import Text.PrettyPrint import Text.PrettyPrint
import Debug.Trace import Debug.Trace

View File

@@ -16,7 +16,7 @@
module GF.Compile.PGFtoHaskell (grammar2haskell) where module GF.Compile.PGFtoHaskell (grammar2haskell) where
import PGF.CId import PGF(showCId)
import PGF.Data import PGF.Data
import PGF.Macros import PGF.Macros

View File

@@ -1,18 +1,18 @@
module GF.Compile.PGFtoJS (pgf2js) where module GF.Compile.PGFtoJS (pgf2js) where
import PGF.CId import PGF(showCId)
import PGF.Data hiding (mkStr) import PGF.Data hiding (mkStr)
import qualified PGF.Macros as M import qualified PGF.Macros as M
import qualified GF.JavaScript.AbsJS as JS import qualified GF.JavaScript.AbsJS as JS
import qualified GF.JavaScript.PrintJS as JS import qualified GF.JavaScript.PrintJS as JS
import GF.Data.ErrM --import GF.Data.ErrM
import GF.Infra.Option --import GF.Infra.Option
import Control.Monad (mplus) --import Control.Monad (mplus)
import Data.Array.Unboxed (UArray) --import Data.Array.Unboxed (UArray)
import qualified Data.Array.IArray as Array import qualified Data.Array.IArray as Array
import Data.Maybe (fromMaybe) --import Data.Maybe (fromMaybe)
import Data.Map (Map) import Data.Map (Map)
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@@ -1,13 +1,13 @@
module GF.Compile.PGFtoLProlog(grammar2lambdaprolog_mod, grammar2lambdaprolog_sig) where module GF.Compile.PGFtoLProlog(grammar2lambdaprolog_mod, grammar2lambdaprolog_sig) where
import PGF.CId import PGF(mkCId,ppCId,showCId,wildCId)
import PGF.Data hiding (ppExpr, ppType, ppHypo) import PGF.Data hiding (ppExpr, ppType, ppHypo)
import PGF.Macros --import PGF.Macros
import Data.List import Data.List
import Data.Maybe import Data.Maybe
import Text.PrettyPrint import Text.PrettyPrint
import qualified Data.Map as Map import qualified Data.Map as Map
import Debug.Trace --import Debug.Trace
grammar2lambdaprolog_mod pgf = render $ grammar2lambdaprolog_mod pgf = render $
text "module" <+> ppCId (absname pgf) <> char '.' $$ text "module" <+> ppCId (absname pgf) <> char '.' $$

View File

@@ -8,9 +8,9 @@
module GF.Compile.PGFtoProlog (grammar2prolog) where module GF.Compile.PGFtoProlog (grammar2prolog) where
import PGF.CId import PGF(mkCId,wildCId,showCId)
import PGF.Data import PGF.Data
import PGF.Macros --import PGF.Macros
import GF.Data.Operations import GF.Data.Operations

View File

@@ -8,7 +8,7 @@
module GF.Compile.PGFtoPython (pgf2python) where module GF.Compile.PGFtoPython (pgf2python) where
import PGF.CId import PGF(showCId)
import PGF.Data import PGF.Data
import qualified PGF.Macros as M import qualified PGF.Macros as M
@@ -18,7 +18,7 @@ import qualified Data.Array.IArray as Array
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import Data.List (intersperse) --import Data.List (intersperse)
pgf2python :: PGF -> String pgf2python :: PGF -> String
pgf2python pgf = ("# -*- coding: utf-8 -*-" ++++ pgf2python pgf = ("# -*- coding: utf-8 -*-" ++++

View File

@@ -35,8 +35,8 @@ import GF.Grammar.Grammar
import GF.Grammar.Binary import GF.Grammar.Binary
import Control.Monad import Control.Monad
import Data.Char --import Data.Char
import Data.List --import Data.List
import Data.Maybe(isJust) import Data.Maybe(isJust)
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@@ -34,8 +34,8 @@ import GF.Infra.Ident
import GF.Infra.CheckM import GF.Infra.CheckM
import GF.Grammar.Macros import GF.Grammar.Macros
import GF.Grammar.Printer import GF.Grammar.Printer
import GF.Grammar.Lookup --import GF.Grammar.Lookup
import GF.Grammar.Printer --import GF.Grammar.Printer
import GF.Data.Operations import GF.Data.Operations
import Control.Monad import Control.Monad

View File

@@ -8,10 +8,10 @@ import GF.Infra.UseIO
import GF.Data.Operations import GF.Data.Operations
import GF.Grammar import GF.Grammar
import Data.List --import Data.List
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import Control.Monad --import Control.Monad
import Text.PrettyPrint import Text.PrettyPrint
import System.FilePath import System.FilePath

View File

@@ -2,14 +2,14 @@ module GF.Compile.ToAPI
(stringToAPI,exprToAPI) (stringToAPI,exprToAPI)
where where
import PGF.Expr import PGF.Data
import PGF.CId import PGF(showCId)
import Data.Maybe import Data.Maybe
import System.IO --import System.IO
import Control.Monad --import Control.Monad
import Data.Set as Set (fromList,toList) --import Data.Set as Set (fromList,toList)
import Data.List import Data.List
import Data.Map(Map) --import Data.Map(Map)
import qualified Data.Map as Map import qualified Data.Map as Map
import PGF.Signature import PGF.Signature

View File

@@ -26,11 +26,11 @@ import GF.Grammar
import GF.Grammar.Lookup import GF.Grammar.Lookup
import GF.Grammar.Unify import GF.Grammar.Unify
--import GF.Compile.Refresh --import GF.Compile.Refresh
import GF.Compile.Compute.Abstract --import GF.Compile.Compute.Abstract
import GF.Compile.TypeCheck.TC import GF.Compile.TypeCheck.TC
import Text.PrettyPrint import Text.PrettyPrint
import Control.Monad (foldM, liftM, liftM2) --import Control.Monad (foldM, liftM, liftM2)
-- | invariant way of creating TCEnv from context -- | invariant way of creating TCEnv from context
initTCEnv gamma = initTCEnv gamma =

View File

@@ -7,16 +7,16 @@ import GF.Grammar.Lockfield
import GF.Compile.Compute.ConcreteNew1 import GF.Compile.Compute.ConcreteNew1
import GF.Compile.Compute.AppPredefined import GF.Compile.Compute.AppPredefined
import GF.Infra.CheckM import GF.Infra.CheckM
import GF.Infra.UseIO --import GF.Infra.UseIO
import GF.Data.Operations import GF.Data.Operations
import Text.PrettyPrint import Text.PrettyPrint
import Data.List (nub, (\\), tails) import Data.List (nub, (\\), tails)
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import GF.Grammar.Parser --import GF.Grammar.Parser
import System.IO --import System.IO
import Debug.Trace --import Debug.Trace
checkLType :: SourceGrammar -> Term -> Type -> Check (Term, Type) checkLType :: SourceGrammar -> Term -> Type -> Check (Term, Type)
checkLType gr t ty = runTcM $ do checkLType gr t ty = runTcM $ do

View File

@@ -26,7 +26,7 @@ import GF.Grammar
import GF.Grammar.Predef import GF.Grammar.Predef
import Control.Monad import Control.Monad
import Data.List (sortBy) --import Data.List (sortBy)
import Data.Maybe import Data.Maybe
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -24,7 +24,7 @@ module GF.Data.Graph ( Graph(..), Node, Edge, NodeInfo
, reverseGraph, mergeGraphs, renameNodes , reverseGraph, mergeGraphs, renameNodes
) where ) where
import GF.Data.Utilities --import GF.Data.Utilities
import Data.List import Data.List
import Data.Maybe import Data.Maybe

View File

@@ -60,10 +60,10 @@ module GF.Data.Operations (-- * misc functions
) where ) where
import Data.Char (isSpace, toUpper, isSpace, isDigit) import Data.Char (isSpace, toUpper, isSpace, isDigit)
import Data.List (nub, sortBy, sort, deleteBy, nubBy, partition, (\\)) import Data.List (nub, partition, (\\))
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Map (Map) import Data.Map (Map)
import Control.Monad (liftM,liftM2, MonadPlus, mzero, mplus) import Control.Monad (liftM,liftM2)
import GF.Data.ErrM import GF.Data.ErrM
import GF.Data.Relation import GF.Data.Relation

View File

@@ -26,7 +26,7 @@ module GF.Data.Relation (Rel, mkRel, mkRel'
, topologicalSort, findCycles) where , topologicalSort, findCycles) where
import Data.Foldable (toList) import Data.Foldable (toList)
import Data.List --import Data.List
import Data.Maybe import Data.Maybe
import Data.Map (Map) import Data.Map (Map)
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@@ -12,12 +12,12 @@
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
module GF.Data.Utilities where module GF.Data.Utilities(module GF.Data.Utilities, module PGF.Utilities) where
import Data.Maybe import Data.Maybe
import Data.List import Data.List
import Control.Monad (MonadPlus(..),liftM) import Control.Monad (MonadPlus(..),liftM)
import qualified Data.Set as Set import PGF.Utilities
-- * functions on lists -- * functions on lists
@@ -68,17 +68,6 @@ safeInit :: [a] -> [a]
safeInit [] = [] safeInit [] = []
safeInit xs = init xs safeInit xs = init xs
-- | Like 'nub', but O(n log n) instead of O(n^2), since it uses a set to lookup previous things.
-- The result list is stable (the elements are returned in the order they occur), and lazy.
-- Requires that the list elements can be compared by Ord.
-- Code ruthlessly taken from http://hpaste.org/54411
nub' :: Ord a => [a] -> [a]
nub' = loop Set.empty
where loop _ [] = []
loop seen (x : xs)
| Set.member x seen = loop seen xs
| otherwise = x : loop (Set.insert x seen) xs
-- | Sorts and then groups elements given an ordering of the -- | Sorts and then groups elements given an ordering of the
-- elements. -- elements.
sortGroupBy :: (a -> a -> Ordering) -> [a] -> [[a]] sortGroupBy :: (a -> a -> Ordering) -> [a] -> [[a]]
@@ -108,10 +97,6 @@ buildMultiMap :: Ord a => [(a,b)] -> [(a,[b])]
buildMultiMap = map (\g -> (fst (head g), map snd g) ) buildMultiMap = map (\g -> (fst (head g), map snd g) )
. sortGroupBy (compareBy fst) . sortGroupBy (compareBy fst)
-- | Replace all occurences of an element by another element.
replace :: Eq a => a -> a -> [a] -> [a]
replace x y = map (\z -> if z == x then y else z)
-- * equality functions -- * equality functions
-- | Use an ordering function as an equality predicate. -- | Use an ordering function as an equality predicate.

View File

@@ -10,7 +10,7 @@ module GF.Grammar.Analyse (
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Infra.Ident import GF.Infra.Ident
import GF.Infra.Option --- --import GF.Infra.Option ---
import GF.Grammar.Macros import GF.Grammar.Macros
import GF.Grammar.Lookup import GF.Grammar.Lookup
@@ -18,7 +18,7 @@ import GF.Data.Operations
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.List (nub) import Data.List (nub)
import Debug.Trace --import Debug.Trace
stripSourceGrammar :: SourceGrammar -> SourceGrammar stripSourceGrammar :: SourceGrammar -> SourceGrammar
stripSourceGrammar sgr = mGrammar [(i, m{jments = Map.map stripInfo (jments m)}) | (i,m) <- modules sgr] stripSourceGrammar sgr = mGrammar [(i, m{jments = Map.map stripInfo (jments m)}) | (i,m) <- modules sgr]

View File

@@ -12,9 +12,9 @@ module GF.Grammar.Binary(decodeModule,decodeModuleHeader,encodeModule) where
import Prelude hiding (catch) import Prelude hiding (catch)
import Control.Exception(catch,ErrorCall(..),throwIO) import Control.Exception(catch,ErrorCall(..),throwIO)
import Data.Char --import Data.Char
import Data.Binary import Data.Binary
import Control.Monad --import Control.Monad
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS
@@ -23,7 +23,7 @@ import GF.Infra.Ident
import GF.Infra.Option import GF.Infra.Option
import GF.Grammar.Grammar import GF.Grammar.Grammar
import PGF.Binary import PGF() -- Binary instances
-- Please change this every time when the GFO format is changed -- Please change this every time when the GFO format is changed
gfoVersion = "GF02" gfoVersion = "GF02"
@@ -346,3 +346,5 @@ decodeFile' fpath = addFPath fpath (decodeFile fpath)
addFPath fpath m = m `catch` handle addFPath fpath m = m `catch` handle
where where
handle (ErrorCall msg) = throwIO (ErrorCall (fpath++": "++msg)) handle (ErrorCall msg) = throwIO (ErrorCall (fpath++": "++msg))
decodingError = fail "This file was compiled with different version of GF"

View File

@@ -25,7 +25,7 @@ import GF.Data.Utilities (nub')
import Data.Char import Data.Char
import Data.List import Data.List
import System.FilePath --import System.FilePath
getCF :: FilePath -> String -> Err SourceGrammar getCF :: FilePath -> String -> Err SourceGrammar
getCF fpath = fmap (cf2gf fpath) . pCF getCF fpath = fmap (cf2gf fpath) . pCF

View File

@@ -24,7 +24,7 @@ import GF.Grammar.Grammar
import Data.Char import Data.Char
import Data.List import Data.List
import System.FilePath --import System.FilePath

View File

@@ -68,15 +68,15 @@ import GF.Data.Operations
import PGF.Data (FId, FunId, SeqId, LIndex, Sequence, BindType(..)) import PGF.Data (FId, FunId, SeqId, LIndex, Sequence, BindType(..))
import Data.List --import Data.List
import Data.Array.IArray import Data.Array.IArray
import Data.Array.Unboxed import Data.Array.Unboxed
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set --import qualified Data.Set as Set
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import Text.PrettyPrint import Text.PrettyPrint
import System.FilePath --import System.FilePath
import Control.Monad.Identity --import Control.Monad.Identity

View File

@@ -1,5 +1,5 @@
{-# LANGUAGE CPP,MagicHash,BangPatterns #-} {-# LANGUAGE CPP,MagicHash,BangPatterns #-}
{-# LINE 3 "lexer/Lexer.x" #-} -- {-# LINE 3 "lexer/Lexer.x" #-}
module GF.Grammar.Lexer module GF.Grammar.Lexer
( Token(..), Posn(..) ( Token(..), Posn(..)
@@ -8,7 +8,7 @@ module GF.Grammar.Lexer
) where ) where
import GF.Infra.Ident import GF.Infra.Ident
import GF.Data.Operations --import GF.Data.Operations
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@@ -40,8 +40,8 @@ import GF.Grammar.Predef
import GF.Grammar.Lockfield import GF.Grammar.Lockfield
import Data.List (sortBy) import Data.List (sortBy)
import Data.Maybe (maybe) --import Data.Maybe (maybe)
import Control.Monad --import Control.Monad
import Text.PrettyPrint import Text.PrettyPrint
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@@ -22,14 +22,14 @@ import GF.Data.Operations
import GF.Data.Str import GF.Data.Str
import GF.Infra.Ident import GF.Infra.Ident
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Grammar.Values --import GF.Grammar.Values
import GF.Grammar.Predef import GF.Grammar.Predef
import GF.Grammar.Printer import GF.Grammar.Printer
import Control.Monad.Identity(Identity(..)) import Control.Monad.Identity(Identity(..))
import qualified Data.Traversable as T(mapM) import qualified Data.Traversable as T(mapM)
import Control.Monad (liftM, liftM2, liftM3) import Control.Monad (liftM, liftM2, liftM3)
import Data.Char (isDigit) --import Data.Char (isDigit)
import Data.List (sortBy,nub) import Data.List (sortBy,nub)
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -24,10 +24,10 @@ import GF.Infra.Ident
import GF.Grammar.Macros import GF.Grammar.Macros
import GF.Grammar.Printer import GF.Grammar.Printer
import Data.List --import Data.List
import Control.Monad import Control.Monad
import Text.PrettyPrint import Text.PrettyPrint
import Debug.Trace --import Debug.Trace
matchPattern :: [(Patt,rhs)] -> Term -> Err (rhs, Substitution) matchPattern :: [(Patt,rhs)] -> Term -> Err (rhs, Substitution)
matchPattern pts term = matchPattern pts term =

View File

@@ -29,15 +29,15 @@ import GF.Infra.Option
import GF.Grammar.Values import GF.Grammar.Values
import GF.Grammar.Grammar import GF.Grammar.Grammar
import PGF.Expr (ppMeta) import PGF.Data (ppMeta)
import PGF.Printer (ppFId, ppFunId, ppSeqId, ppSeq) import PGF.Printer (ppFId, ppFunId, ppSeqId, ppSeq)
import Text.PrettyPrint import Text.PrettyPrint
import Data.Maybe (maybe, isNothing) import Data.Maybe (isNothing)
import Data.List (intersperse) import Data.List (intersperse)
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import qualified Data.Set as Set --import qualified Data.Set as Set
import qualified Data.Array.IArray as Array import qualified Data.Array.IArray as Array
data TermPrintQual data TermPrintQual

View File

@@ -24,7 +24,7 @@ module GF.Grammar.Values (-- * values used in TC type checking
--Z tree2exp, loc2treeFocus --Z tree2exp, loc2treeFocus
) where ) where
import GF.Data.Operations --import GF.Data.Operations
---Z import GF.Data.Zipper ---Z import GF.Data.Zipper
import GF.Infra.Ident import GF.Infra.Ident

View File

@@ -9,13 +9,13 @@ module GF.Index (addIndex) where
import PGF import PGF
import PGF.Data import PGF.Data
import PGF.Binary --import PGF.Binary
import Data.Binary import Data.Binary
import Data.ByteString.Lazy (readFile,length) import Data.ByteString.Lazy (length) -- readFile
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Map (toAscList) import Data.Map (toAscList)
import Data.List (intercalate) import Data.List (intercalate)
import qualified Data.ByteString.Lazy as BS --import qualified Data.ByteString.Lazy as BS
addIndex :: PGF -> PGF addIndex :: PGF -> PGF
addIndex pgf = pgf {gflags = flags} addIndex pgf = pgf {gflags = flags}

View File

@@ -20,9 +20,9 @@ module GF.Infra.CheckM
) where ) where
import GF.Data.Operations import GF.Data.Operations
import GF.Infra.Ident --import GF.Infra.Ident
--import GF.Grammar.Grammar(Context) --import GF.Grammar.Grammar(Context)
import GF.Grammar.Printer --import GF.Grammar.Printer
import qualified Data.Map as Map import qualified Data.Map as Map
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -69,7 +69,7 @@ module GF.Infra.GetOpt (
import Prelude -- necessary to get dependencies right import Prelude -- necessary to get dependencies right
import Data.List ( isPrefixOf, find ) --import Data.List ( isPrefixOf, find )
-- |What to do with options following non-options -- |What to do with options following non-options
data ArgOrder a data ArgOrder a

View File

@@ -36,7 +36,7 @@ import GF.Infra.GetOpt
import GF.Grammar.Predef import GF.Grammar.Predef
--import System.Console.GetOpt --import System.Console.GetOpt
import System.FilePath import System.FilePath
import System.IO --import System.IO
import GF.Data.ErrM import GF.Data.ErrM

View File

@@ -20,7 +20,7 @@ module GF.Infra.SIO(
) where ) where
import Prelude hiding (putStrLn,print) import Prelude hiding (putStrLn,print)
import Control.Monad(liftM) import Control.Monad(liftM)
import System.IO(Handle,hPutStrLn,hFlush,stdout) import System.IO(hPutStrLn,hFlush,stdout)
import GF.System.Catch(try) import GF.System.Catch(try)
import System.Cmd(system) import System.Cmd(system)
import System.Environment(getEnv) import System.Environment(getEnv)

View File

@@ -29,7 +29,7 @@ import System.IO.Error(isUserError,ioeGetErrorString)
import System.Environment import System.Environment
import System.Exit import System.Exit
import System.CPUTime import System.CPUTime
import System.Cmd --import System.Cmd
import Text.Printf import Text.Printf
import Control.Monad import Control.Monad
import Control.Monad.Trans(MonadIO(..)) import Control.Monad.Trans(MonadIO(..))

View File

@@ -19,11 +19,11 @@ module GF.Quiz (
) where ) where
import PGF import PGF
import PGF.Linearize --import PGF.Linearize
import GF.Data.Operations import GF.Data.Operations
import GF.Infra.UseIO --import GF.Infra.UseIO
import GF.Infra.Option --import GF.Infra.Option
import PGF.Probabilistic --import PGF.Probabilistic
import System.Random import System.Random
import Data.List (nub) import Data.List (nub)

View File

@@ -8,16 +8,16 @@ module GF.Speech.CFG where
import GF.Data.Utilities import GF.Data.Utilities
import PGF import PGF
import GF.Infra.Option --import GF.Infra.Option
import GF.Data.Relation import GF.Data.Relation
import Control.Monad --import Control.Monad
import Control.Monad.State (State, get, put, evalState) --import Control.Monad.State (State, get, put, evalState)
import Data.Map (Map) import Data.Map (Map)
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.List import Data.List
import Data.Maybe (fromMaybe) --import Data.Maybe (fromMaybe)
import Data.Monoid (mconcat) --import Data.Monoid (mconcat)
import Data.Set (Set) import Data.Set (Set)
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@@ -14,17 +14,17 @@ import qualified Data.Map as Map
import Data.Set (Set) import Data.Set (Set)
import qualified Data.Set as Set import qualified Data.Set as Set
import PGF.CId --import PGF.CId
import PGF.Data import PGF.Data
import GF.Data.Utilities import GF.Data.Utilities
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.PGFToCFG --import GF.Speech.PGFToCFG
import GF.Infra.Ident (Ident) --import GF.Infra.Ident (Ident)
import GF.Data.Graph import GF.Data.Graph
import GF.Data.Relation --import GF.Data.Relation
import GF.Speech.FiniteState import GF.Speech.FiniteState
import GF.Speech.CFG --import GF.Speech.CFG
data Recursivity = RightR | LeftR | NotR data Recursivity = RightR | LeftR | NotR

View File

@@ -41,7 +41,7 @@ import qualified Data.Map as Map
import Data.Set (Set) import Data.Set (Set)
import qualified Data.Set as Set import qualified Data.Set as Set
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Data.Graph import GF.Data.Graph
import qualified GF.Data.Graphviz as Dot import qualified GF.Data.Graphviz as Dot

View File

@@ -8,12 +8,12 @@
module GF.Speech.GSL (gslPrinter) where module GF.Speech.GSL (gslPrinter) where
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.SRG import GF.Speech.SRG
import GF.Speech.RegExp import GF.Speech.RegExp
import GF.Infra.Option import GF.Infra.Option
import GF.Infra.Ident --import GF.Infra.Ident
import PGF import PGF
import Data.Char (toUpper,toLower) import Data.Char (toUpper,toLower)

View File

@@ -12,20 +12,20 @@
module GF.Speech.JSGF (jsgfPrinter) where module GF.Speech.JSGF (jsgfPrinter) where
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Infra.Option import GF.Infra.Option
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.RegExp import GF.Speech.RegExp
import GF.Speech.SISR import GF.Speech.SISR
import GF.Speech.SRG import GF.Speech.SRG
import PGF.CId --import PGF.CId
import PGF.Data import PGF.Data
import Data.Char import Data.Char
import Data.List import Data.List
import Data.Maybe --import Data.Maybe
import Text.PrettyPrint.HughesPJ import Text.PrettyPrint.HughesPJ
import Debug.Trace --import Debug.Trace
width :: Int width :: Int
width = 75 width = 75

View File

@@ -6,18 +6,18 @@
---------------------------------------------------------------------- ----------------------------------------------------------------------
module GF.Speech.PGFToCFG (bnfPrinter, pgfToCFG) where module GF.Speech.PGFToCFG (bnfPrinter, pgfToCFG) where
import PGF.CId import PGF(showCId)
import PGF.Data as PGF import PGF.Data as PGF
import PGF.Macros import PGF.Macros
import GF.Infra.Ident --import GF.Infra.Ident
import GF.Speech.CFG hiding (Symbol) import GF.Speech.CFG hiding (Symbol)
import Data.Array.IArray as Array import Data.Array.IArray as Array
import Data.List --import Data.List
import Data.Map (Map) import Data.Map (Map)
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import Data.Maybe --import Data.Maybe
import Data.Set (Set) import Data.Set (Set)
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@@ -10,12 +10,12 @@ module GF.Speech.SISR (SISRFormat(..), SISRTag, prSISR,
import Data.List import Data.List
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Infra.Ident --import GF.Infra.Ident
import GF.Infra.Option (SISRFormat(..)) import GF.Infra.Option (SISRFormat(..))
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.SRG (SRGNT) import GF.Speech.SRG (SRGNT)
import PGF.CId import PGF(showCId)
import qualified GF.JavaScript.AbsJS as JS import qualified GF.JavaScript.AbsJS as JS
import qualified GF.JavaScript.PrintJS as JS import qualified GF.JavaScript.PrintJS as JS

View File

@@ -15,17 +15,17 @@ module GF.Speech.SLF (slfPrinter,slfGraphvizPrinter,
import GF.Data.Utilities import GF.Data.Utilities
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.FiniteState import GF.Speech.FiniteState
import GF.Speech.CFG --import GF.Speech.CFG
import GF.Speech.CFGToFA import GF.Speech.CFGToFA
import GF.Speech.PGFToCFG import GF.Speech.PGFToCFG
import qualified GF.Data.Graphviz as Dot import qualified GF.Data.Graphviz as Dot
import PGF import PGF
import PGF.CId --import PGF.CId
import Control.Monad import Control.Monad
import qualified Control.Monad.State as STM import qualified Control.Monad.State as STM
import Data.Char (toUpper) import Data.Char (toUpper)
import Data.List --import Data.List
import Data.Maybe import Data.Maybe
data SLFs = SLFs [(String,SLF)] SLF data SLFs = SLFs [(String,SLF)] SLF

View File

@@ -17,21 +17,21 @@ module GF.Speech.SRG (SRG(..), SRGRule(..), SRGAlt(..), SRGItem, SRGSymbol
, lookupFM_ , lookupFM_
) where ) where
import GF.Data.Operations --import GF.Data.Operations
import GF.Data.Utilities import GF.Data.Utilities
import GF.Infra.Ident --import GF.Infra.Ident
import GF.Infra.Option import GF.Infra.Option
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.PGFToCFG import GF.Speech.PGFToCFG
import GF.Data.Relation --import GF.Data.Relation
import GF.Speech.FiniteState --import GF.Speech.FiniteState
import GF.Speech.RegExp import GF.Speech.RegExp
import GF.Speech.CFGToFA import GF.Speech.CFGToFA
import GF.Infra.Option --import GF.Infra.Option
import PGF import PGF
import Data.List import Data.List
import Data.Maybe (fromMaybe, maybeToList) --import Data.Maybe (fromMaybe, maybeToList)
import Data.Map (Map) import Data.Map (Map)
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Set (Set) import Data.Set (Set)

View File

@@ -19,7 +19,7 @@
module GF.Speech.SRGS_ABNF (srgsAbnfPrinter, srgsAbnfNonRecursivePrinter) where module GF.Speech.SRGS_ABNF (srgsAbnfPrinter, srgsAbnfNonRecursivePrinter) where
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Infra.Option import GF.Infra.Option
import GF.Speech.CFG import GF.Speech.CFG
import GF.Speech.SISR as SISR import GF.Speech.SISR as SISR
@@ -27,11 +27,11 @@ import GF.Speech.SRG
import GF.Speech.RegExp import GF.Speech.RegExp
import PGF (PGF, CId) import PGF (PGF, CId)
import Data.Char --import Data.Char
import Data.List import Data.List
import Data.Maybe import Data.Maybe
import Text.PrettyPrint.HughesPJ import Text.PrettyPrint.HughesPJ
import Debug.Trace --import Debug.Trace
width :: Int width :: Int
width = 75 width = 75

View File

@@ -6,7 +6,7 @@
---------------------------------------------------------------------- ----------------------------------------------------------------------
module GF.Speech.SRGS_XML (srgsXmlPrinter, srgsXmlNonRecursivePrinter) where module GF.Speech.SRGS_XML (srgsXmlPrinter, srgsXmlNonRecursivePrinter) where
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Data.XML import GF.Data.XML
import GF.Infra.Option import GF.Infra.Option
import GF.Speech.CFG import GF.Speech.CFG
@@ -15,11 +15,11 @@ import GF.Speech.SISR as SISR
import GF.Speech.SRG import GF.Speech.SRG
import PGF (PGF, CId, Token) import PGF (PGF, CId, Token)
import Control.Monad --import Control.Monad
import Data.Char (toUpper,toLower) --import Data.Char (toUpper,toLower)
import Data.List import Data.List
import Data.Maybe import Data.Maybe
import qualified Data.Map as Map --import qualified Data.Map as Map
srgsXmlPrinter :: Options srgsXmlPrinter :: Options
-> PGF -> CId -> String -> PGF -> CId -> String

View File

@@ -6,21 +6,21 @@
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
module GF.Speech.VoiceXML (grammar2vxml) where module GF.Speech.VoiceXML (grammar2vxml) where
import GF.Data.Operations --import GF.Data.Operations
import GF.Data.Str (sstrV) --import GF.Data.Str (sstrV)
import GF.Data.Utilities --import GF.Data.Utilities
import GF.Data.XML import GF.Data.XML
import GF.Infra.Ident --import GF.Infra.Ident
import PGF import PGF
import PGF.Data import PGF.Data
import PGF.Macros import PGF.Macros
import Control.Monad (liftM) --import Control.Monad (liftM)
import Data.List (isPrefixOf, find, intersperse) import Data.List (intersperse) -- isPrefixOf, find
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Debug.Trace --import Debug.Trace
-- | the main function -- | the main function
grammar2vxml :: PGF -> CId -> String grammar2vxml :: PGF -> CId -> String

View File

@@ -18,7 +18,7 @@ module GF.System.UseSignal where
import Control.Concurrent (myThreadId, killThread) import Control.Concurrent (myThreadId, killThread)
import Control.Exception (SomeException,catch) import Control.Exception (SomeException,catch)
import Prelude hiding (catch) import Prelude hiding (catch)
import System.IO --import System.IO
#ifdef mingw32_HOST_OS #ifdef mingw32_HOST_OS
import GHC.ConsoleHandler import GHC.ConsoleHandler

View File

@@ -2,7 +2,7 @@ module GFC (mainGFC, writePGF) where
-- module Main where -- module Main where
import PGF import PGF
import PGF.CId --import PGF.CId
import PGF.Data import PGF.Data
import PGF.Optimize import PGF.Optimize
import GF.Index import GF.Index

View File

@@ -13,7 +13,6 @@ import GF.Data.Operations (chunks,err)
import GF.Grammar hiding (Ident,isPrefixOf) import GF.Grammar hiding (Ident,isPrefixOf)
import GF.Grammar.Analyse import GF.Grammar.Analyse
import GF.Grammar.Parser (runP, pExp) import GF.Grammar.Parser (runP, pExp)
import GF.Grammar.Printer (ppGrammar, ppModule)
import GF.Grammar.ShowTerm import GF.Grammar.ShowTerm
import GF.Grammar.Lookup (allOpers,allOpersTo) import GF.Grammar.Lookup (allOpers,allOpersTo)
import GF.Compile.Rename(renameSourceTerm) import GF.Compile.Rename(renameSourceTerm)
@@ -25,7 +24,6 @@ import GF.Infra.CheckM
import GF.Infra.UseIO(ioErrorText) import GF.Infra.UseIO(ioErrorText)
import GF.Infra.SIO import GF.Infra.SIO
import GF.Infra.Option import GF.Infra.Option
import GF.Infra.Ident (showIdent)
import qualified System.Console.Haskeline as Haskeline import qualified System.Console.Haskeline as Haskeline
import GF.Text.Coding(decodeUnicode,encodeUnicode) import GF.Text.Coding(decodeUnicode,encodeUnicode)
@@ -36,7 +34,6 @@ import PGF.Data
import PGF.Macros import PGF.Macros
import Data.Char import Data.Char
import Data.Maybe
import Data.List(nub,isPrefixOf,isInfixOf,partition) import Data.List(nub,isPrefixOf,isInfixOf,partition)
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS

View File

@@ -5,7 +5,7 @@ import Control.Monad(unless,foldM,ap,mplus)
import Data.List(sortBy) import Data.List(sortBy)
import Data.Function(on) import Data.Function(on)
import qualified Data.Map as Map import qualified Data.Map as Map
import Text.JSON(encode,makeObj) import Text.JSON(makeObj) --encode
import Text.PrettyPrint(render,text,(<+>)) import Text.PrettyPrint(render,text,(<+>))
-- 4 extra imports just to deal with the ByteString mess... -- 4 extra imports just to deal with the ByteString mess...

View File

@@ -2,14 +2,14 @@ module ExampleDemo (Environ,initial,getNext, provideExample, testThis,mkFuncWith
where where
import PGF import PGF
import System.IO --import System.IO
import Data.List import Data.List
import Control.Monad --import Control.Monad
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import qualified Data.Set as Set import qualified Data.Set as Set
import Data.Maybe import Data.Maybe
import System.Environment (getArgs) --import System.Environment (getArgs)
import System.Random (RandomGen) --newStdGen import System.Random (RandomGen) --newStdGen

View File

@@ -21,6 +21,8 @@ module PGF(
-- * Identifiers -- * Identifiers
CId, mkCId, wildCId, CId, mkCId, wildCId,
showCId, readCId, showCId, readCId,
-- extra
ppCId, pIdent, bsCId,
-- * Languages -- * Languages
Language, Language,
@@ -50,6 +52,8 @@ module PGF(
mkInt, unInt, mkInt, unInt,
mkDouble, unDouble, mkDouble, unDouble,
mkMeta, unMeta, mkMeta, unMeta,
-- extra
pExpr,
-- * Operations -- * Operations
-- ** Linearization -- ** Linearization
@@ -111,6 +115,8 @@ module PGF(
Lemma, Analysis, Morpho, Lemma, Analysis, Morpho,
lookupMorpho, buildMorpho, fullFormLexicon, lookupMorpho, buildMorpho, fullFormLexicon,
morphoMissing, morphoMissing,
-- extra:
morphoKnown, isInMorpho,
-- ** Tokenizing -- ** Tokenizing
mkTokenizer, mkTokenizer,
@@ -124,6 +130,8 @@ module PGF(
gizaAlignment, gizaAlignment,
GraphvizOptions(..), GraphvizOptions(..),
graphvizDefaults, graphvizDefaults,
-- extra:
getDepLabels,
-- * Probabilities -- * Probabilities
Probabilities, Probabilities,
@@ -131,6 +139,8 @@ module PGF(
defaultProbabilities, defaultProbabilities,
showProbabilities, showProbabilities,
readProbabilitiesFromFile, readProbabilitiesFromFile,
-- extra:
probTree, setProbabilities, rankTreesByProbs,
-- -- ** SortTop -- -- ** SortTop
-- forExample, -- forExample,
@@ -153,21 +163,20 @@ import PGF.Macros
import PGF.Expr (Tree) import PGF.Expr (Tree)
import PGF.Morphology import PGF.Morphology
import PGF.Data import PGF.Data
import PGF.Binary import PGF.Binary()
import PGF.Tokenizer import PGF.Tokenizer
import qualified PGF.Forest as Forest import qualified PGF.Forest as Forest
import qualified PGF.Parse as Parse import qualified PGF.Parse as Parse
import PGF.Utilities(replace)
import GF.Data.Utilities (replace) --import Data.Char
import Data.Char
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import Data.Maybe --import Data.Maybe
import Data.Binary import Data.Binary
import Data.List(mapAccumL) import Data.List(mapAccumL)
import System.Random (newStdGen) --import System.Random (newStdGen)
import Control.Monad --import Control.Monad
import Text.PrettyPrint import Text.PrettyPrint
--------------------------------------------------- ---------------------------------------------------

View File

@@ -10,7 +10,7 @@ import Data.Array.IArray
import qualified Data.ByteString as BS import qualified Data.ByteString as BS
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import qualified Data.Set as Set --import qualified Data.Set as Set
import Control.Monad import Control.Monad
pgfMajorVersion, pgfMinorVersion :: Word16 pgfMajorVersion, pgfMinorVersion :: Word16

View File

@@ -3,7 +3,7 @@ module PGF.CId (CId(..),
readCId, showCId, readCId, showCId,
-- utils -- utils
pCId, pIdent, ppCId) where bsCId, pCId, pIdent, ppCId) where
import Control.Monad import Control.Monad
import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Char8 as BS
@@ -23,6 +23,8 @@ wildCId = CId (BS.singleton '_')
mkCId :: String -> CId mkCId :: String -> CId
mkCId s = CId (BS.pack s) mkCId s = CId (BS.pack s)
bsCId = CId
-- | Reads an identifier from 'String'. The function returns 'Nothing' if the string is not valid identifier. -- | Reads an identifier from 'String'. The function returns 'Nothing' if the string is not valid identifier.
readCId :: String -> Maybe CId readCId :: String -> Maybe CId
readCId s = case [x | (x,cs) <- RP.readP_to_S pCId s, all isSpace cs] of readCId s = case [x | (x,cs) <- RP.readP_to_S pCId s, all isSpace cs] of

View File

@@ -8,11 +8,11 @@ import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import qualified Data.IntSet as IntSet import qualified Data.IntSet as IntSet
import qualified GF.Data.TrieMap as TMap import qualified PGF.TrieMap as TMap
import qualified Data.ByteString as BS import qualified Data.ByteString as BS
import Data.Array.IArray import Data.Array.IArray
import Data.Array.Unboxed import Data.Array.Unboxed
import Data.List --import Data.List
-- internal datatypes for PGF -- internal datatypes for PGF

View File

@@ -23,7 +23,7 @@ import PGF.CId
import PGF.Type import PGF.Type
import Data.Char import Data.Char
import Data.Maybe --import Data.Maybe
import Data.List as List import Data.List as List
import qualified Data.Map as Map hiding (showTree) import qualified Data.Map as Map hiding (showTree)
import Control.Monad import Control.Monad

View File

@@ -32,7 +32,7 @@ import qualified Data.IntSet as IntSet
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import Control.Monad import Control.Monad
import Control.Monad.State import Control.Monad.State
import GF.Data.Utilities (nub') import PGF.Utilities (nub')
data Forest data Forest
= Forest = Forest

View File

@@ -8,14 +8,13 @@ module PGF.Generate
import PGF.CId import PGF.CId
import PGF.Data import PGF.Data
import PGF.Expr --import PGF.Macros
import PGF.Macros
import PGF.TypeCheck import PGF.TypeCheck
import PGF.Probabilistic --import PGF.Probabilistic
import Data.Maybe (fromMaybe) --import Data.Maybe (fromMaybe)
import qualified Data.Map as Map --import qualified Data.Map as Map
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import Control.Monad import Control.Monad
import Control.Monad.Identity import Control.Monad.Identity
import System.Random import System.Random

View File

@@ -12,7 +12,7 @@ import PGF.Macros
import PGF.Expr import PGF.Expr
import Data.Array.IArray import Data.Array.IArray
import Data.List import Data.List
import Control.Monad --import Control.Monad
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import qualified Data.Set as Set import qualified Data.Set as Set

View File

@@ -4,11 +4,11 @@ import PGF.CId
import PGF.Data import PGF.Data
import Control.Monad import Control.Monad
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set --import qualified Data.Set as Set
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import qualified Data.IntSet as IntSet --import qualified Data.IntSet as IntSet
import qualified Data.Array as Array import qualified Data.Array as Array
import Data.Maybe --import Data.Maybe
import Data.List import Data.List
import Data.Array.IArray import Data.Array.IArray
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -11,7 +11,7 @@ import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import Data.Array.IArray import Data.Array.IArray
import Data.List (intersperse) --import Data.List (intersperse)
import Data.Char (isDigit) ---- import Data.Char (isDigit) ----
-- these 4 definitions depend on the datastructure used -- these 4 definitions depend on the datastructure used

View File

@@ -7,7 +7,7 @@ module PGF.Optimize
import PGF.CId import PGF.CId
import PGF.Data import PGF.Data
import PGF.Macros import PGF.Macros
import Data.Maybe --import Data.Maybe
import Data.List (mapAccumL) import Data.List (mapAccumL)
import Data.Array.IArray import Data.Array.IArray
import Data.Array.MArray import Data.Array.MArray
@@ -17,7 +17,7 @@ import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.IntSet as IntSet import qualified Data.IntSet as IntSet
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import qualified GF.Data.TrieMap as TrieMap import qualified PGF.TrieMap as TrieMap
import qualified Data.List as List import qualified Data.List as List
import Control.Monad.ST import Control.Monad.ST

View File

@@ -15,13 +15,13 @@ module PGF.Paraphrase (
import PGF.Data import PGF.Data
import PGF.Tree import PGF.Tree
import PGF.Macros (lookDef,isData) --import PGF.Macros (lookDef,isData)
import PGF.CId --import PGF.CId
import Data.List (nub,sort,group) import Data.List (nub,sort,group)
import qualified Data.Map as Map import qualified Data.Map as Map
import Debug.Trace ---- --import Debug.Trace ----
paraphrase :: PGF -> Expr -> [Expr] paraphrase :: PGF -> Expr -> [Expr]
paraphrase pgf t = nub (paraphraseN 2 pgf t) paraphrase pgf t = nub (paraphraseN 2 pgf t)

View File

@@ -15,15 +15,14 @@ module PGF.Parse
import Data.Array.IArray import Data.Array.IArray
import Data.Array.Base (unsafeAt) import Data.Array.Base (unsafeAt)
import Data.List (isPrefixOf, foldl') import Data.List (isPrefixOf, foldl')
import Data.Maybe (fromMaybe, maybe, maybeToList) import Data.Maybe (fromMaybe, maybeToList)
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified GF.Data.TrieMap as TrieMap import qualified PGF.TrieMap as TrieMap
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import qualified Data.IntSet as IntSet import qualified Data.IntSet as IntSet
import qualified Data.Set as Set import qualified Data.Set as Set
import Control.Monad import Control.Monad
import GF.Data.SortedList
import PGF.CId import PGF.CId
import PGF.Data import PGF.Data
import PGF.Expr(Tree) import PGF.Expr(Tree)

View File

@@ -2,16 +2,14 @@ module PGF.Printer (ppPGF,ppCat,ppFId,ppFunId,ppSeqId,ppSeq,ppFun) where
import PGF.CId import PGF.CId
import PGF.Data import PGF.Data
import PGF.Macros --import PGF.Macros
import GF.Data.Operations
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import qualified Data.IntMap as IntMap import qualified Data.IntMap as IntMap
import Data.List import Data.List
import Data.Array.IArray import Data.Array.IArray
import Data.Array.Unboxed --import Data.Array.Unboxed
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -15,12 +15,10 @@ module PGF.Probabilistic
import PGF.CId import PGF.CId
import PGF.Data import PGF.Data
import PGF.Macros import PGF.Macros
import PGF.Type
import PGF.Expr
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.List (sortBy,partition,nub,mapAccumL) import Data.List (sortBy,partition,nub,mapAccumL)
import Data.Maybe (fromMaybe, fromJust) import Data.Maybe (fromMaybe) --, fromJust
-- | An abstract data structure which represents -- | An abstract data structure which represents
-- the probabilities for the different functions in a grammar. -- the probabilities for the different functions in a grammar.

View File

@@ -4,7 +4,6 @@ module PGF.SortTop
import PGF.CId import PGF.CId
import PGF.Data import PGF.Data
import PGF.Expr
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.Set as Set import qualified Data.Set as Set
import Data.Maybe import Data.Maybe

View File

@@ -9,7 +9,7 @@ module PGF.Tokenizer
( mkTokenizer ( mkTokenizer
) where ) where
import Data.List (intercalate) --import Data.List (intercalate)
--import Test.QuickCheck --import Test.QuickCheck
import FST.TransducerInterface import FST.TransducerInterface
import PGF.Morphology (fullFormLexicon, buildMorpho) import PGF.Morphology (fullFormLexicon, buildMorpho)

View File

@@ -7,11 +7,11 @@ module PGF.Tree
import PGF.CId import PGF.CId
import PGF.Expr hiding (Tree) import PGF.Expr hiding (Tree)
import Data.Char --import Data.Char
import Data.List as List import Data.List as List
import Control.Monad --import Control.Monad
import qualified Text.PrettyPrint as PP --import qualified Text.PrettyPrint as PP
import qualified Text.ParserCombinators.ReadP as RP --import qualified Text.ParserCombinators.ReadP as RP
-- | The tree is an evaluated expression in the abstract syntax -- | The tree is an evaluated expression in the abstract syntax
-- of the grammar. The type is especially restricted to not -- of the grammar. The type is especially restricted to not

View File

@@ -1,4 +1,4 @@
module GF.Data.TrieMap module PGF.TrieMap
( TrieMap ( TrieMap
, empty , empty

View File

@@ -1,4 +1,4 @@
module PGF.Type ( Type(..), Hypo, module PGF.Type ( Type(..), Hypo, CId,
readType, showType, readType, showType,
mkType, mkHypo, mkDepHypo, mkImplHypo, mkType, mkHypo, mkDepHypo, mkImplHypo,
unType, unType,
@@ -10,7 +10,7 @@ import Data.Char
import Data.List import Data.List
import qualified Text.PrettyPrint as PP import qualified Text.PrettyPrint as PP
import qualified Text.ParserCombinators.ReadP as RP import qualified Text.ParserCombinators.ReadP as RP
import Control.Monad --import Control.Monad
-- | To read a type from a 'String', use 'readType'. -- | To read a type from a 'String', use 'readType'.
data Type = data Type =

View File

@@ -30,7 +30,7 @@ module PGF.TypeCheck ( checkType, checkExpr, inferExpr
import PGF.Data import PGF.Data
import PGF.Expr hiding (eval, apply, applyValue, value2expr) import PGF.Expr hiding (eval, apply, applyValue, value2expr)
import qualified PGF.Expr as Expr import qualified PGF.Expr as Expr
import PGF.Macros (typeOfHypo, cidInt, cidFloat, cidString) import PGF.Macros (cidInt, cidFloat, cidString) -- typeOfHypo
import PGF.CId import PGF.CId
import Data.Map as Map import Data.Map as Map
@@ -38,7 +38,7 @@ import Data.IntMap as IntMap
import Data.Maybe as Maybe import Data.Maybe as Maybe
import Data.List as List import Data.List as List
import Control.Monad import Control.Monad
import Control.Monad.Identity --import Control.Monad.Identity
import Control.Monad.State import Control.Monad.State
import Control.Monad.Error import Control.Monad.Error
import Text.PrettyPrint import Text.PrettyPrint

View File

@@ -0,0 +1,20 @@
-- | Basic utilities
module PGF.Utilities where
import Data.Set(empty,member,insert)
-- | Like 'nub', but O(n log n) instead of O(n^2), since it uses a set to lookup previous things.
-- The result list is stable (the elements are returned in the order they occur), and lazy.
-- Requires that the list elements can be compared by Ord.
-- Code ruthlessly taken from http://hpaste.org/54411
nub' :: Ord a => [a] -> [a]
nub' = loop empty
where loop _ [] = []
loop seen (x : xs)
| member x seen = loop seen xs
| otherwise = x : loop (insert x seen) xs
-- | Replace all occurences of an element by another element.
replace :: Eq a => a -> a -> [a] -> [a]
replace x y = map (\z -> if z == x then y else z)

View File

@@ -21,24 +21,24 @@ module PGF.VisualizeTree
, getDepLabels , getDepLabels
) where ) where
import PGF.CId (CId,wildCId,showCId,ppCId,pCId,mkCId) import PGF.CId (wildCId,showCId,ppCId,mkCId) --CId,pCId,
import PGF.Data import PGF.Data
import PGF.Expr (showExpr, Tree) import PGF.Expr (Tree) -- showExpr
import PGF.Linearize import PGF.Linearize
import PGF.Macros (lookValCat, lookMap, import PGF.Macros (lookValCat, BracketedString(..))
BracketedString(..), BracketedTokn(..), flattenBracketedString) --lookMap, BracketedTokn(..), flattenBracketedString
import qualified Data.Map as Map import qualified Data.Map as Map
import qualified Data.IntMap as IntMap --import qualified Data.IntMap as IntMap
import Data.List (intersperse,nub,mapAccumL,find) import Data.List (intersperse,nub,mapAccumL,find)
import Data.Char (isDigit) --import Data.Char (isDigit)
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Text.PrettyPrint import Text.PrettyPrint
import Data.Array.IArray --import Data.Array.IArray
import Control.Monad --import Control.Monad
import qualified Data.Set as Set --import qualified Data.Set as Set
import qualified Text.ParserCombinators.ReadP as RP --import qualified Text.ParserCombinators.ReadP as RP
data GraphvizOptions = GraphvizOptions {noLeaves :: Bool, data GraphvizOptions = GraphvizOptions {noLeaves :: Bool,