summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/py-bindings/gfmodule.c15
-rw-r--r--contrib/py-bindings/script.py3
2 files changed, 13 insertions, 5 deletions
diff --git a/contrib/py-bindings/gfmodule.c b/contrib/py-bindings/gfmodule.c
index 9b2717e29..5b5a547c8 100644
--- a/contrib/py-bindings/gfmodule.c
+++ b/contrib/py-bindings/gfmodule.c
@@ -37,6 +37,7 @@ NEWGF(PGFModule,GF_PGF,PGFType,"gf.pgf","PGF module")
NEWGF(Lang,GF_Language,LangType,"gf.lang","language")
NEWGF(gfType,GF_Type,gfTypeType,"gf.type","gf type")
NEWGF(Expr,GF_Expr,ExprType,"gf.expr","gf expression")
+NEWGF(Tree,GF_Tree,TreeType,"gf.tree","gf tree")
static PyObject*
@@ -90,6 +91,8 @@ delname(t *self){ cb(self->obj);\
DEALLOCFN(gfType_dealloc, gfType, gf_freeType, "freeType")
DEALLOCFN(PGF_dealloc, PGFModule, gf_freePGF, "freePGF")
DEALLOCFN(Lang_dealloc, Lang, gf_freeLanguage, "freeLanguage")
+DEALLOCFN(Tree_dealloc, Tree, gf_freeTree, "freeTree")
+
static gfType*
@@ -124,12 +127,12 @@ parse(PyObject *self, PyObject *args, PyObject *kws)
}
pgf = ((PGFModule*)self)->obj;
lang = ((Lang*)lang_pyob)->obj;
- GF_Tree *p = gf_parse(pgf, lang, cat, lexed);
PyObject *parsed = PyList_New(0);
+ GF_Tree *p = gf_parse(pgf,lang,cat,lexed);
if (*p) {
do {
- Expr* expr;
- expr = (Expr*)ExprType.tp_new(&ExprType,NULL,NULL);
+ Tree* expr; //Expr
+ expr = (Tree*)TreeType.tp_new(&TreeType,NULL,NULL); // Expr* -> Tree*
expr->obj = *(p++);
PyList_Append(parsed, (PyObject*)expr);
/* char *str = gf_showExpr(exp);
@@ -162,6 +165,7 @@ static PyMethodDef pgf_methods[] = {
{NULL, NULL, 0, NULL} /* Sentinel */
};
+
#ifndef PyMODINIT_FUNC/* declarations for DLL import/export */
#define PyMODINIT_FUNC void
#endif
@@ -177,12 +181,15 @@ initgf(void)
PGFType.tp_methods = pgf_methods;
PGFType.tp_dealloc = (destructor)PGF_dealloc;
READYTYPE(PGFType)
- LangType.tp_dealloc = (destructor)Lang_dealloc;
+ LangType.tp_dealloc = (destructor)Lang_dealloc;
READYTYPE(LangType)
gfTypeType.tp_dealloc = (destructor)gfType_dealloc;
READYTYPE(gfTypeType)
ExprType.tp_repr = (reprfunc)expr_repr;
READYTYPE(ExprType)
+ TreeType.tp_dealloc = (destructor)Tree_dealloc;
+ // TreeType.tp_methods = tree_methods;
+ READYTYPE(TreeType)
m = Py_InitModule3("gf", gf_methods,
"Grammatical Framework.");
diff --git a/contrib/py-bindings/script.py b/contrib/py-bindings/script.py
index 120d47867..885174f8b 100644
--- a/contrib/py-bindings/script.py
+++ b/contrib/py-bindings/script.py
@@ -2,7 +2,8 @@
import gf
query = gf.read_pgf("Query.pgf")
lang = gf.read_language('QueryEng')
-print 'start category:',query.startcat()
+cat = query.startcat()
+print 'start category:',cat
lexed = "is 2 prime"
print "Parsing '%s':" % lexed
for e in query.parse(lexed, lang):