mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-09-29 13:43:38 -06:00
an API to retrieve a single language
This commit is contained in:
@@ -76,7 +76,7 @@ module PGF2 (-- * PGF
|
||||
graphvizWordAlignment, graphvizLRAutomaton,
|
||||
|
||||
-- * Concrete syntax
|
||||
ConcName,Concr,languages,concreteName,languageCode,concreteFlag,
|
||||
ConcName,Concr,languages,language,concreteName,languageCode,concreteFlag,
|
||||
|
||||
-- ** Linearization
|
||||
linearize, linearizeAll, tabularLinearize, tabularLinearizeAll,
|
||||
@@ -299,6 +299,16 @@ languages p = unsafePerformIO $ do
|
||||
fptr <- newForeignPtrEnv pgf_free_concr_revision (a_db p) (castPtr c_revision)
|
||||
writeIORef ref (Map.insert name (Concr (a_db p) fptr) concrs)
|
||||
|
||||
language :: PGF -> ConcName -> Maybe Concr
|
||||
language p name = unsafePerformIO $
|
||||
(withForeignPtr (a_revision p) $ \c_revision ->
|
||||
withText name $ \c_name -> do
|
||||
res <- withPgfExn "language" (pgf_get_concrete (a_db p) c_revision c_name)
|
||||
if res == nullPtr
|
||||
then return Nothing
|
||||
else do fptr <- newForeignPtrEnv pgf_free_concr_revision (a_db p) res
|
||||
return (Just (Concr (a_db p) fptr)))
|
||||
|
||||
showPGF :: PGF -> String
|
||||
showPGF p =
|
||||
render (text "abstract" <+> ppAbstractName p <+> char '{' $$
|
||||
|
||||
@@ -178,6 +178,8 @@ foreign import ccall pgf_iter_categories :: Ptr PgfDB -> Ptr PGF -> Ptr PgfItor
|
||||
|
||||
foreign import ccall pgf_iter_concretes :: Ptr PgfDB -> Ptr PGF -> Ptr PgfItor -> Ptr PgfExn -> IO ()
|
||||
|
||||
foreign import ccall pgf_get_concrete :: Ptr PgfDB -> Ptr PGF -> Ptr PgfItor -> Ptr PgfExn -> IO (Ptr Concr)
|
||||
|
||||
foreign import ccall pgf_start_cat :: Ptr PgfDB -> Ptr PGF -> Ptr PgfUnmarshaller -> Ptr PgfExn -> IO (StablePtr Type)
|
||||
|
||||
foreign import ccall pgf_category_context :: Ptr PgfDB -> Ptr PGF -> Ptr PgfText -> Ptr CSize -> Ptr PgfUnmarshaller -> Ptr PgfExn -> IO (Ptr PgfTypeHypo)
|
||||
|
||||
Reference in New Issue
Block a user