diff options
| author | krasimir <krasimir@chalmers.se> | 2017-05-12 09:32:25 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2017-05-12 09:32:25 +0000 |
| commit | ca891c912b9f4ce2ddec28219f2f8e44d08f82bd (patch) | |
| tree | fa8d181909dff97406e7407906580d3654b3ec7f /src/runtime | |
| parent | 577b7662d8087d9a43edd009718414a1d978eeb3 (diff) | |
a binding to the sentence lookup from Haskell
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/haskell-bind/PGF2.hsc | 22 | ||||
| -rw-r--r-- | src/runtime/haskell-bind/PGF2/FFI.hs | 3 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc index b022d06fe..e50fdd4b1 100644 --- a/src/runtime/haskell-bind/PGF2.hsc +++ b/src/runtime/haskell-bind/PGF2.hsc @@ -57,11 +57,13 @@ module PGF2 (-- * PGF alignWords, -- ** Parsing parse, parseWithHeuristics, - -- ** Generation + -- ** Sentence Lookup + lookupSentence, + -- ** Generation generateAll, -- ** Morphological Analysis MorphoAnalysis, lookupMorpho, fullFormLexicon, - -- ** Visualizations + -- ** Visualizations graphvizAbstractTree,graphvizParseTree, -- * Exceptions @@ -470,6 +472,22 @@ mkCallbacksMap concr callbacks pool = do predict_callback _ _ _ = return nullPtr +lookupSentence :: Concr -- ^ the language with which we parse + -> Type -- ^ the start category + -> String -- ^ the input sentence + -> [(Expr,Float)] +lookupSentence lang (Type ctype _) sent = + unsafePerformIO $ + do exprPl <- gu_new_pool + parsePl <- gu_new_pool + sent <- newUtf8CString sent parsePl + enum <- pgf_lookup_sentence (concr lang) ctype sent parsePl exprPl + parseFPl <- newForeignPtr gu_pool_finalizer parsePl + exprFPl <- newForeignPtr gu_pool_finalizer exprPl + exprs <- fromPgfExprEnum enum parseFPl (touchConcr lang >> touchForeignPtr exprFPl) + return exprs + + -- | The oracle is a triple of functions. -- The first two take a category name and a linearization field name -- and they should return True/False when the corresponding diff --git a/src/runtime/haskell-bind/PGF2/FFI.hs b/src/runtime/haskell-bind/PGF2/FFI.hs index 5ca2ee01f..77e075495 100644 --- a/src/runtime/haskell-bind/PGF2/FFI.hs +++ b/src/runtime/haskell-bind/PGF2/FFI.hs @@ -208,6 +208,9 @@ foreign import ccall "pgf/pgf.h pgf_align_words" foreign import ccall "pgf/pgf.h pgf_parse_with_heuristics" pgf_parse_with_heuristics :: Ptr PgfConcr -> PgfType -> CString -> Double -> Ptr PgfCallbacksMap -> Ptr GuExn -> Ptr GuPool -> Ptr GuPool -> IO (Ptr GuEnum) +foreign import ccall "pgf/pgf.h pgf_lookup_sentence" + pgf_lookup_sentence :: Ptr PgfConcr -> PgfType -> CString -> Ptr GuPool -> Ptr GuPool -> IO (Ptr GuEnum) + type LiteralMatchCallback = CInt -> Ptr CInt -> Ptr GuPool -> IO (Ptr PgfExprProb) foreign import ccall "wrapper" |
