From 4d1809ef2d824eb6e80fc1bf1d0f5e0aaf23ec16 Mon Sep 17 00:00:00 2001 From: krasimir Date: Thu, 29 May 2008 11:20:40 +0000 Subject: Simplify the Input type. Remove Edge and use only Range type --- src-3.0/GF/Parsing/FCFG/Active.hs | 11 ++++----- src-3.0/GF/Parsing/FCFG/PInfo.hs | 1 - src-3.0/GF/Parsing/FCFG/Range.hs | 50 --------------------------------------- 3 files changed, 5 insertions(+), 57 deletions(-) delete mode 100644 src-3.0/GF/Parsing/FCFG/Range.hs (limited to 'src-3.0/GF/Parsing/FCFG') diff --git a/src-3.0/GF/Parsing/FCFG/Active.hs b/src-3.0/GF/Parsing/FCFG/Active.hs index 498054eee..9d4a0ac0c 100644 --- a/src-3.0/GF/Parsing/FCFG/Active.hs +++ b/src-3.0/GF/Parsing/FCFG/Active.hs @@ -20,7 +20,6 @@ import GF.Formalism.Utilities import GF.Infra.PrintClass -import GF.Parsing.FCFG.Range import GF.Parsing.FCFG.PInfo import Control.Monad (guard) @@ -69,8 +68,8 @@ process strategy pinfo toks ((c,item):items) chart = process strategy pinfo toks found' -> let items = do rng <- concatRange rng (found' !! r) return (c, Active found rng lbl (ppos+1) node) in process strategy pinfo toks items chart - FSymTok tok -> let items = do (i,j) <- inputToken toks ? tok - rng' <- concatRange rng (makeRange i j) + FSymTok tok -> let items = do t_rng <- inputToken toks ? tok + rng' <- concatRange rng t_rng return (cat, Active found rng' lbl (ppos+1) node) in process strategy pinfo toks items chart | otherwise = @@ -143,7 +142,7 @@ xchart2syntaxchart (XChart actives finals) pinfo = literals :: FCFPInfo -> Input FToken -> [(FCat,Item)] literals pinfo toks = - [let (c,node) = lexer t in (c,Final [makeRange i j] node) | Edge i j t <- inputEdges toks, not (t `elem` grammarToks pinfo)] + [let (c,node) = lexer t in (c,Final [rng] node) | (t,rngs) <- aAssocs (inputToken toks), rng <- rngs, not (t `elem` grammarToks pinfo)] where lexer t = case reads t of @@ -172,8 +171,8 @@ initialBU pinfo toks = do (tok,rngs) <- aAssocs (inputToken toks) ruleid <- leftcornerTokens pinfo ? tok let FRule _ _ _ cat _ = allRules pinfo ! ruleid - (i,j) <- rngs - return (cat,Active [] (makeRange i j) 0 1 (emptyChildren ruleid pinfo)) + rng <- rngs + return (cat,Active [] rng 0 1 (emptyChildren ruleid pinfo)) ++ do ruleid <- epsilonRules pinfo let FRule _ _ _ cat _ = allRules pinfo ! ruleid diff --git a/src-3.0/GF/Parsing/FCFG/PInfo.hs b/src-3.0/GF/Parsing/FCFG/PInfo.hs index dc934c1e5..08d40df85 100644 --- a/src-3.0/GF/Parsing/FCFG/PInfo.hs +++ b/src-3.0/GF/Parsing/FCFG/PInfo.hs @@ -14,7 +14,6 @@ import GF.Formalism.Utilities import GF.Formalism.FCFG import GF.Data.SortedList import GF.Data.Assoc -import GF.Parsing.FCFG.Range import GF.GFCC.CId import Data.Array diff --git a/src-3.0/GF/Parsing/FCFG/Range.hs b/src-3.0/GF/Parsing/FCFG/Range.hs deleted file mode 100644 index 24674f58b..000000000 --- a/src-3.0/GF/Parsing/FCFG/Range.hs +++ /dev/null @@ -1,50 +0,0 @@ ---------------------------------------------------------------------- --- | --- Maintainer : Krasimir Angelov --- Stability : (stable) --- Portability : (portable) --- --- Definitions of ranges, and operations on ranges ------------------------------------------------------------------------------ - -module GF.Parsing.FCFG.Range - ( RangeRec, Range(..), makeRange, concatRange, rangeEdge, edgeRange, minRange, maxRange, - ) where - - --- GF modules -import GF.Formalism.Utilities -import GF.Infra.PrintClass - ------------------------------------------------------------- --- ranges as single pairs - -type RangeRec = [Range] - -data Range = Range {-# UNPACK #-} !Int {-# UNPACK #-} !Int - | EmptyRange - deriving (Eq, Ord) - -makeRange :: Int -> Int -> Range -makeRange = Range - -concatRange :: Range -> Range -> [Range] -concatRange EmptyRange rng = return rng -concatRange rng EmptyRange = return rng -concatRange (Range i j) (Range j' k) = [Range i k | j==j'] - -rangeEdge :: a -> Range -> Edge a -rangeEdge a (Range i j) = Edge i j a - -edgeRange :: Edge a -> Range -edgeRange (Edge i j _) = Range i j - -minRange :: Range -> Int -minRange (Range i j) = i - -maxRange :: Range -> Int -maxRange (Range i j) = j - -instance Print Range where - prt (Range i j) = "(" ++ show i ++ "-" ++ show j ++ ")" - prt (EmptyRange) = "(?)" -- cgit v1.2.3