forked from GitHub/gf-core
Defined Tree type and moved parsed elements type to Tree
This commit is contained in:
@@ -37,6 +37,7 @@ NEWGF(PGFModule,GF_PGF,PGFType,"gf.pgf","PGF module")
|
|||||||
NEWGF(Lang,GF_Language,LangType,"gf.lang","language")
|
NEWGF(Lang,GF_Language,LangType,"gf.lang","language")
|
||||||
NEWGF(gfType,GF_Type,gfTypeType,"gf.type","gf type")
|
NEWGF(gfType,GF_Type,gfTypeType,"gf.type","gf type")
|
||||||
NEWGF(Expr,GF_Expr,ExprType,"gf.expr","gf expression")
|
NEWGF(Expr,GF_Expr,ExprType,"gf.expr","gf expression")
|
||||||
|
NEWGF(Tree,GF_Tree,TreeType,"gf.tree","gf tree")
|
||||||
|
|
||||||
|
|
||||||
static PyObject*
|
static PyObject*
|
||||||
@@ -90,6 +91,8 @@ delname(t *self){ cb(self->obj);\
|
|||||||
DEALLOCFN(gfType_dealloc, gfType, gf_freeType, "freeType")
|
DEALLOCFN(gfType_dealloc, gfType, gf_freeType, "freeType")
|
||||||
DEALLOCFN(PGF_dealloc, PGFModule, gf_freePGF, "freePGF")
|
DEALLOCFN(PGF_dealloc, PGFModule, gf_freePGF, "freePGF")
|
||||||
DEALLOCFN(Lang_dealloc, Lang, gf_freeLanguage, "freeLanguage")
|
DEALLOCFN(Lang_dealloc, Lang, gf_freeLanguage, "freeLanguage")
|
||||||
|
DEALLOCFN(Tree_dealloc, Tree, gf_freeTree, "freeTree")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static gfType*
|
static gfType*
|
||||||
@@ -124,12 +127,12 @@ parse(PyObject *self, PyObject *args, PyObject *kws)
|
|||||||
}
|
}
|
||||||
pgf = ((PGFModule*)self)->obj;
|
pgf = ((PGFModule*)self)->obj;
|
||||||
lang = ((Lang*)lang_pyob)->obj;
|
lang = ((Lang*)lang_pyob)->obj;
|
||||||
GF_Tree *p = gf_parse(pgf, lang, cat, lexed);
|
|
||||||
PyObject *parsed = PyList_New(0);
|
PyObject *parsed = PyList_New(0);
|
||||||
|
GF_Tree *p = gf_parse(pgf,lang,cat,lexed);
|
||||||
if (*p) {
|
if (*p) {
|
||||||
do {
|
do {
|
||||||
Expr* expr;
|
Tree* expr; //Expr
|
||||||
expr = (Expr*)ExprType.tp_new(&ExprType,NULL,NULL);
|
expr = (Tree*)TreeType.tp_new(&TreeType,NULL,NULL); // Expr* -> Tree*
|
||||||
expr->obj = *(p++);
|
expr->obj = *(p++);
|
||||||
PyList_Append(parsed, (PyObject*)expr);
|
PyList_Append(parsed, (PyObject*)expr);
|
||||||
/* char *str = gf_showExpr(exp);
|
/* char *str = gf_showExpr(exp);
|
||||||
@@ -162,6 +165,7 @@ static PyMethodDef pgf_methods[] = {
|
|||||||
{NULL, NULL, 0, NULL} /* Sentinel */
|
{NULL, NULL, 0, NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifndef PyMODINIT_FUNC/* declarations for DLL import/export */
|
#ifndef PyMODINIT_FUNC/* declarations for DLL import/export */
|
||||||
#define PyMODINIT_FUNC void
|
#define PyMODINIT_FUNC void
|
||||||
#endif
|
#endif
|
||||||
@@ -183,6 +187,9 @@ initgf(void)
|
|||||||
READYTYPE(gfTypeType)
|
READYTYPE(gfTypeType)
|
||||||
ExprType.tp_repr = (reprfunc)expr_repr;
|
ExprType.tp_repr = (reprfunc)expr_repr;
|
||||||
READYTYPE(ExprType)
|
READYTYPE(ExprType)
|
||||||
|
TreeType.tp_dealloc = (destructor)Tree_dealloc;
|
||||||
|
// TreeType.tp_methods = tree_methods;
|
||||||
|
READYTYPE(TreeType)
|
||||||
|
|
||||||
m = Py_InitModule3("gf", gf_methods,
|
m = Py_InitModule3("gf", gf_methods,
|
||||||
"Grammatical Framework.");
|
"Grammatical Framework.");
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
import gf
|
import gf
|
||||||
query = gf.read_pgf("Query.pgf")
|
query = gf.read_pgf("Query.pgf")
|
||||||
lang = gf.read_language('QueryEng')
|
lang = gf.read_language('QueryEng')
|
||||||
print 'start category:',query.startcat()
|
cat = query.startcat()
|
||||||
|
print 'start category:',cat
|
||||||
lexed = "is 2 prime"
|
lexed = "is 2 prime"
|
||||||
print "Parsing '%s':" % lexed
|
print "Parsing '%s':" % lexed
|
||||||
for e in query.parse(lexed, lang):
|
for e in query.parse(lexed, lang):
|
||||||
|
|||||||
Reference in New Issue
Block a user