summaryrefslogtreecommitdiff
path: root/src/PGF/Linearize.hs
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2009-10-07 16:18:33 +0000
committeraarne <aarne@chalmers.se>2009-10-07 16:18:33 +0000
commit9896fcaad1c1e30e7b2c1129c94fc7c2117d501b (patch)
tree651411f3466e6033de02794aac4a3af39f9aa348 /src/PGF/Linearize.hs
parente5609907274298dc8f41cbe170b2b6a253ed1b7a (diff)
parse tree visualization command vp
Diffstat (limited to 'src/PGF/Linearize.hs')
-rw-r--r--src/PGF/Linearize.hs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/PGF/Linearize.hs b/src/PGF/Linearize.hs
index f733c8cb1..21b1e8856 100644
--- a/src/PGF/Linearize.hs
+++ b/src/PGF/Linearize.hs
@@ -129,12 +129,14 @@ linearizesMark pgf lang = realizes . linTreeMark pgf lang
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 . showCId . snd) xs)
- TM s -> R $ (TM s) : (Data.List.map (kks . showCId . snd) xs)
- lin p (Fun fun es) = let argVariants =
- mapM (\ (i,e) -> liftVariants $ lin (sub p i) e) (zip [0..] es)
- in variants [mark p $ compute pgf lang args $ look fun | args <- argVariants]
+ lin p (Abs xs e ) = case lin p e of
+ R ts -> R $ ts ++ (Data.List.map (kks . showCId . snd) xs)
+ TM s -> R $ (TM s) : (Data.List.map (kks . showCId . snd) xs)
+ lin p (Fun fun es) =
+ let argVariants =
+ mapM (\ (i,e) -> liftVariants $ lin (sub p i) e) (zip [0..] es)
+ in variants [mark (fun,p) $ compute pgf lang args $ look fun |
+ args <- argVariants]
lin p (Lit (LStr s)) = mark p $ R [kks (show s)] -- quoted
lin p (Lit (LInt i)) = mark p $ R [kks (show i)]
lin p (Lit (LFlt d)) = mark p $ R [kks (show d)]
@@ -143,6 +145,7 @@ linTreeMark pgf lang = lin [] . expr2tree
look = lookLin pgf lang
+ mark :: Show a => a -> Term -> Term
mark p t = case t of
R ts -> R $ map (mark p) ts
FV ts -> R $ map (mark p) ts