summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2015-03-19 14:14:30 +0000
committerhallgren <hallgren@chalmers.se>2015-03-19 14:14:30 +0000
commit99f87c30d053e89e0bdb02a42fe8006904e7e9e3 (patch)
tree95778ac146e522176a3160f92294ca82782fd456 /src
parente72fcb1513024e192eb112005da5e8586f517620 (diff)
haskell-bind: add bindings to graphviz rendering functions for abstract&parse trees
Diffstat (limited to 'src')
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc22
-rw-r--r--src/runtime/haskell-bind/PGF2/FFI.hs9
2 files changed, 30 insertions, 1 deletions
diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc
index 0f3b46886..97460de4d 100644
--- a/src/runtime/haskell-bind/PGF2.hsc
+++ b/src/runtime/haskell-bind/PGF2.hsc
@@ -23,6 +23,7 @@ module PGF2 (-- * CId
Type(..), Hypo, functionType,
-- * Trees
Expr,Fun,readExpr,showExpr,mkApp,unApp,mkStr,
+ graphvizAbstractTree,graphvizParseTree,
-- * Morphology
MorphoAnalysis, lookupMorpho, fullFormLexicon,
-- * Exceptions
@@ -272,6 +273,27 @@ showExpr e =
peekCString s
+graphvizAbstractTree :: PGF -> Expr -> String
+graphvizAbstractTree p e =
+ unsafePerformIO $
+ withGuPool $ \tmpPl ->
+ do (sb,out) <- newOut tmpPl
+ exn <- gu_new_exn tmpPl
+ pgf_graphviz_abstract_tree (pgf p) (expr e) out exn
+ s <- gu_string_buf_freeze sb tmpPl
+ peekCString s
+
+
+graphvizParseTree :: Concr -> Expr -> String
+graphvizParseTree c e =
+ unsafePerformIO $
+ withGuPool $ \tmpPl ->
+ do (sb,out) <- newOut tmpPl
+ exn <- gu_new_exn tmpPl
+ pgf_graphviz_parse_tree (concr c) (expr e) out exn
+ s <- gu_string_buf_freeze sb tmpPl
+ peekCString s
+
-----------------------------------------------------------------------------
-- Functions using Concr
-- Morpho analyses, parsing & linearization
diff --git a/src/runtime/haskell-bind/PGF2/FFI.hs b/src/runtime/haskell-bind/PGF2/FFI.hs
index 9de76fb51..d78502561 100644
--- a/src/runtime/haskell-bind/PGF2/FFI.hs
+++ b/src/runtime/haskell-bind/PGF2/FFI.hs
@@ -3,7 +3,7 @@
module PGF2.FFI where
import Foreign.C
-import Foreign.C.String
+--import Foreign.C.String
import Foreign.Ptr
import Foreign.ForeignPtr
import Control.Exception
@@ -206,3 +206,10 @@ foreign import ccall "pgf/pgf.h pgf_print"
foreign import ccall "pgf/expr.h pgf_read_expr"
pgf_read_expr :: Ptr GuIn -> Ptr GuPool -> Ptr GuExn -> IO PgfExpr
+
+
+foreign import ccall "pgf/graphviz.h pgf_graphviz_abstract_tree"
+ pgf_graphviz_abstract_tree :: Ptr PgfPGF -> PgfExpr -> Ptr GuOut -> Ptr GuExn -> IO ()
+
+foreign import ccall "pgf/graphviz.h pgf_graphviz_parse_tree"
+ pgf_graphviz_parse_tree :: Ptr PgfConcr -> PgfExpr -> Ptr GuOut -> Ptr GuExn -> IO ()