command vt -mk for displaying overload-style function names

This commit is contained in:
aarne
2009-11-15 20:03:28 +00:00
parent 4c17b7ba95
commit dcc2888faf
2 changed files with 25 additions and 8 deletions

View File

@@ -575,7 +575,8 @@ allCommands cod env@(pgf, mos) = Map.fromList [
synopsis = "show word dependency tree graphically", synopsis = "show word dependency tree graphically",
explanation = unlines [ explanation = unlines [
"Prints a dependency tree in the .dot format (the graphviz format, default)", "Prints a dependency tree in the .dot format (the graphviz format, default)",
"or the MaltParser/CoNLL format (flag -output=malt)", "or the MaltParser/CoNLL format (flag -output=malt for training, malt_input)",
"for unanalysed input.",
"By default, the last argument is the head of every abstract syntax", "By default, the last argument is the head of every abstract syntax",
"function; moreover, the head depends on the head of the function above.", "function; moreover, the head depends on the head of the function above.",
"The graph can be saved in a file by the wf command as usual.", "The graph can be saved in a file by the wf command as usual.",
@@ -603,8 +604,10 @@ allCommands cod env@(pgf, mos) = Map.fromList [
return void return void
else return $ fromString grphs, else return $ fromString grphs,
examples = [ examples = [
"gr | aw -- generate a tree and show word alignment as graph script", "gr | vd -- generate a tree and show dependency tree in .dot",
"gr | vt -view=\"open\" -- generate a tree and display alignment on a Mac" "gr | vd -view=open -- generate a tree and display dependency tree on a Mac",
"gr -number=1000 | vd -file=dep.labels -output=malt -- generate training treebank",
"gr -number=100 | vd -file=dep.labels -output=malt_input -- generate test sentences"
], ],
options = [ options = [
("v","show extra information") ("v","show extra information")
@@ -642,8 +645,8 @@ allCommands cod env@(pgf, mos) = Map.fromList [
return void return void
else return $ fromString grph, else return $ fromString grph,
examples = [ examples = [
"gr | aw -- generate a tree and show word alignment as graph script", "p \"John walks\" | vp -- generate a tree and show parse tree as .dot script",
"gr | vt -view=\"open\" -- generate a tree and display alignment on a Mac" "gr | vp -view=\"open\" -- generate a tree and display parse tree on a Mac"
], ],
options = [ options = [
], ],
@@ -662,9 +665,13 @@ allCommands cod env@(pgf, mos) = Map.fromList [
"If the -view flag is defined, the graph is saved in a temporary file", "If the -view flag is defined, the graph is saved in a temporary file",
"which is processed by graphviz and displayed by the program indicated", "which is processed by graphviz and displayed by the program indicated",
"by the flag. The target format is postscript, unless overridden by the", "by the flag. The target format is postscript, unless overridden by the",
"flag -format." "flag -format.",
"With option -mk, use for showing library style function names of form 'mkC'."
], ],
exec = \opts es -> do exec = \opts es ->
if isOpt "mk" opts
then return $ fromString $ unlines $ map (tree2mk pgf) es
else do
let funs = not (isOpt "nofun" opts) let funs = not (isOpt "nofun" opts)
let cats = not (isOpt "nocat" opts) let cats = not (isOpt "nocat" opts)
let grph = unlines (map (graphvizAbstractTree pgf (funs,cats)) es) -- True=digraph let grph = unlines (map (graphvizAbstractTree pgf (funs,cats)) es) -- True=digraph
@@ -682,6 +689,7 @@ allCommands cod env@(pgf, mos) = Map.fromList [
"p \"hello\" | vt -view=\"open\" -- parse a string and display trees on a Mac" "p \"hello\" | vt -view=\"open\" -- parse a string and display trees on a Mac"
], ],
options = [ options = [
("mk", "show the tree with function names converted to 'mkC' with value cats C"),
("nofun","don't show functions but only categories"), ("nofun","don't show functions but only categories"),
("nocat","don't show categories but only functions") ("nocat","don't show categories but only functions")
], ],

View File

@@ -19,7 +19,7 @@ module PGF.VisualizeTree ( graphvizAbstractTree
, graphvizParseTree , graphvizParseTree
, graphvizDependencyTree , graphvizDependencyTree
, graphvizAlignment , graphvizAlignment
, tree2mk
, getDepLabels , getDepLabels
, PosText(..), readPosText , PosText(..), readPosText
) where ) where
@@ -27,6 +27,7 @@ module PGF.VisualizeTree ( graphvizAbstractTree
import PGF.CId (CId,showCId,pCId,mkCId) import PGF.CId (CId,showCId,pCId,mkCId)
import PGF.Data import PGF.Data
import PGF.Tree import PGF.Tree
import PGF.Expr (showExpr)
import PGF.Linearize import PGF.Linearize
import PGF.Macros (lookValCat) import PGF.Macros (lookValCat)
@@ -63,6 +64,14 @@ prGraph digr ns = concat $ map (++"\n") $ [graph ++ "{\n"] ++ ns ++ ["}"] where
graph = if digr then "digraph" else "graph" graph = if digr then "digraph" else "graph"
-- replace each non-atomic constructor with mkC, where C is the val cat
tree2mk :: PGF -> Expr -> String
tree2mk pgf = showExpr [] . tree2expr . t2m . expr2tree where
t2m t = case t of
Fun cid [] -> t
Fun cid ts -> Fun (mk cid) (map t2m ts)
mk = mkCId . ("mk" ++) . showCId . lookValCat pgf
-- dependency trees from Linearize.linearizeMark -- dependency trees from Linearize.linearizeMark
graphvizDependencyTree :: String -> Bool -> Maybe Labels -> Maybe String -> PGF -> CId -> Expr -> String graphvizDependencyTree :: String -> Bool -> Maybe Labels -> Maybe String -> PGF -> CId -> Expr -> String