summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc22
-rw-r--r--src/runtime/haskell-bind/PGF2/FFI.hs3
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"