diff options
| author | aarne <aarne@chalmers.se> | 2009-10-07 16:18:33 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-10-07 16:18:33 +0000 |
| commit | 9896fcaad1c1e30e7b2c1129c94fc7c2117d501b (patch) | |
| tree | 651411f3466e6033de02794aac4a3af39f9aa348 /src/PGF/Linearize.hs | |
| parent | e5609907274298dc8f41cbe170b2b6a253ed1b7a (diff) | |
parse tree visualization command vp
Diffstat (limited to 'src/PGF/Linearize.hs')
| -rw-r--r-- | src/PGF/Linearize.hs | 15 |
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 |
