diff options
| author | krasimir <krasimir@chalmers.se> | 2009-09-08 08:40:28 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2009-09-08 08:40:28 +0000 |
| commit | 28a7c4b5c7659dc18166e06e914fb0a81c1c43bc (patch) | |
| tree | 3d4a866f0fe37d8b45230581c44f459d7ac16e3d /src/PGF/Linearize.hs | |
| parent | 9940c44259fe3ee4501e324b4d1816a50d77fa37 (diff) | |
now the datatype Tree is only internal. All API functions are working with Expr directly. Commands gt, gr, p and rf filter out the output via the typechecker
Diffstat (limited to 'src/PGF/Linearize.hs')
| -rw-r--r-- | src/PGF/Linearize.hs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/PGF/Linearize.hs b/src/PGF/Linearize.hs index c15bbd105..3ee170640 100644 --- a/src/PGF/Linearize.hs +++ b/src/PGF/Linearize.hs @@ -4,6 +4,7 @@ module PGF.Linearize import PGF.CId import PGF.Data import PGF.Macros +import PGF.Tree import Control.Monad import qualified Data.Map as Map @@ -13,7 +14,7 @@ import Debug.Trace -- linearization and computation of concrete PGF Terms -linearizes :: PGF -> CId -> Tree -> [String] +linearizes :: PGF -> CId -> Expr -> [String] linearizes pgf lang = realizes . linTree pgf lang realize :: Term -> String @@ -54,8 +55,8 @@ liftVariants = f f (W s t) = liftM (W s) $ f t f t = return t -linTree :: PGF -> CId -> Tree -> Term -linTree pgf lang = lin +linTree :: PGF -> CId -> Expr -> Term +linTree pgf lang = lin . expr2tree where lin (Abs xs e ) = case lin e of R ts -> R $ ts ++ (Data.List.map (kks . prCId) xs) @@ -122,11 +123,11 @@ compute pgf lang args = comp where --------- -- markup with tree positions -linearizesMark :: PGF -> CId -> Tree -> [String] +linearizesMark :: PGF -> CId -> Expr -> [String] linearizesMark pgf lang = realizes . linTreeMark pgf lang -linTreeMark :: PGF -> CId -> Tree -> Term -linTreeMark pgf lang = lin [] +linTreeMark :: PGF -> CId -> Expr -> Term +linTreeMark pgf lang = lin [] . expr2tree where lin p (Abs xs e ) = case lin p e of R ts -> R $ ts ++ (Data.List.map (kks . prCId) xs) |
