mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 11:42:49 -06:00
added mkInt and mkFloat in the Haskell binding to make it easy to create literal expressions
This commit is contained in:
@@ -112,6 +112,36 @@ pgf_expr_string(GuString str, GuPool* pool)
|
|||||||
lit);
|
lit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PgfExpr
|
||||||
|
pgf_expr_int(int val, GuPool* pool)
|
||||||
|
{
|
||||||
|
PgfLiteral lit;
|
||||||
|
PgfLiteralInt* plit =
|
||||||
|
gu_new_variant(PGF_LITERAL_INT,
|
||||||
|
PgfLiteralInt,
|
||||||
|
&lit, pool);
|
||||||
|
plit->val = val;
|
||||||
|
return gu_new_variant_i(pool,
|
||||||
|
PGF_EXPR_LIT,
|
||||||
|
PgfExprLit,
|
||||||
|
lit);
|
||||||
|
}
|
||||||
|
|
||||||
|
PgfExpr
|
||||||
|
pgf_expr_float(double val, GuPool* pool)
|
||||||
|
{
|
||||||
|
PgfLiteral lit;
|
||||||
|
PgfLiteralFlt* plit =
|
||||||
|
gu_new_variant(PGF_LITERAL_FLT,
|
||||||
|
PgfLiteralFlt,
|
||||||
|
&lit, pool);
|
||||||
|
plit->val = val;
|
||||||
|
return gu_new_variant_i(pool,
|
||||||
|
PGF_EXPR_LIT,
|
||||||
|
PgfExprLit,
|
||||||
|
lit);
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct PgfExprParser PgfExprParser;
|
typedef struct PgfExprParser PgfExprParser;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|||||||
@@ -149,6 +149,12 @@ pgf_expr_apply(PgfApplication*, GuPool* pool);
|
|||||||
PgfExpr
|
PgfExpr
|
||||||
pgf_expr_string(GuString, GuPool* pool);
|
pgf_expr_string(GuString, GuPool* pool);
|
||||||
|
|
||||||
|
PgfExpr
|
||||||
|
pgf_expr_int(int val, GuPool* pool);
|
||||||
|
|
||||||
|
PgfExpr
|
||||||
|
pgf_expr_float(double val, GuPool* pool);
|
||||||
|
|
||||||
PgfExpr
|
PgfExpr
|
||||||
pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err);
|
pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err);
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ module PGF2 (-- * CId
|
|||||||
-- * Types
|
-- * Types
|
||||||
Type(..), Hypo, BindType(..), showType, functionType,
|
Type(..), Hypo, BindType(..), showType, functionType,
|
||||||
-- * Trees
|
-- * Trees
|
||||||
Expr,Fun,readExpr,showExpr,mkApp,unApp,mkStr,
|
Expr,Fun,readExpr,showExpr,mkApp,unApp,mkStr,mkInt,mkFloat,
|
||||||
graphvizAbstractTree,graphvizParseTree,
|
graphvizAbstractTree,graphvizParseTree,
|
||||||
-- * Morphology
|
-- * Morphology
|
||||||
MorphoAnalysis, lookupMorpho, fullFormLexicon,
|
MorphoAnalysis, lookupMorpho, fullFormLexicon,
|
||||||
|
|||||||
@@ -67,6 +67,22 @@ mkStr str =
|
|||||||
exprFPl <- newForeignPtr gu_pool_finalizer exprPl
|
exprFPl <- newForeignPtr gu_pool_finalizer exprPl
|
||||||
return (Expr c_expr exprFPl)
|
return (Expr c_expr exprFPl)
|
||||||
|
|
||||||
|
mkInt :: Int -> Expr
|
||||||
|
mkInt val =
|
||||||
|
unsafePerformIO $ do
|
||||||
|
exprPl <- gu_new_pool
|
||||||
|
c_expr <- pgf_expr_int (fromIntegral val) exprPl
|
||||||
|
exprFPl <- newForeignPtr gu_pool_finalizer exprPl
|
||||||
|
return (Expr c_expr exprFPl)
|
||||||
|
|
||||||
|
mkFloat :: Double -> Expr
|
||||||
|
mkFloat val =
|
||||||
|
unsafePerformIO $ do
|
||||||
|
exprPl <- gu_new_pool
|
||||||
|
c_expr <- pgf_expr_float (realToFrac val) exprPl
|
||||||
|
exprFPl <- newForeignPtr gu_pool_finalizer exprPl
|
||||||
|
return (Expr c_expr exprFPl)
|
||||||
|
|
||||||
readExpr :: String -> Maybe Expr
|
readExpr :: String -> Maybe Expr
|
||||||
readExpr str =
|
readExpr str =
|
||||||
unsafePerformIO $
|
unsafePerformIO $
|
||||||
|
|||||||
@@ -204,6 +204,12 @@ foreign import ccall "pgf/pgf.h pgf_expr_apply"
|
|||||||
foreign import ccall "pgf/pgf.h pgf_expr_string"
|
foreign import ccall "pgf/pgf.h pgf_expr_string"
|
||||||
pgf_expr_string :: CString -> Ptr GuPool -> IO PgfExpr
|
pgf_expr_string :: CString -> Ptr GuPool -> IO PgfExpr
|
||||||
|
|
||||||
|
foreign import ccall "pgf/pgf.h pgf_expr_int"
|
||||||
|
pgf_expr_int :: CInt -> Ptr GuPool -> IO PgfExpr
|
||||||
|
|
||||||
|
foreign import ccall "pgf/pgf.h pgf_expr_float"
|
||||||
|
pgf_expr_float :: CDouble -> Ptr GuPool -> IO PgfExpr
|
||||||
|
|
||||||
foreign import ccall "pgf/pgf.h pgf_expr_unapply"
|
foreign import ccall "pgf/pgf.h pgf_expr_unapply"
|
||||||
pgf_expr_unapply :: PgfExpr -> Ptr GuPool -> IO (Ptr PgfApplication)
|
pgf_expr_unapply :: PgfExpr -> Ptr GuPool -> IO (Ptr PgfApplication)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user