mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-25 10:48:54 -06:00
Add bootNGF and readNGF to Python bindings
This commit is contained in:
@@ -3528,6 +3528,62 @@ pgf_readPGF(PyObject *self, PyObject *args)
|
|||||||
|
|
||||||
return py_pgf;
|
return py_pgf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PGFObject*
|
||||||
|
pgf_bootNGF(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
const char *fpath; // pgf
|
||||||
|
const char *npath; // ngf
|
||||||
|
if (!PyArg_ParseTuple(args, "ss", &fpath, &npath))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
PGFObject* py_pgf = (PGFObject*) pgf_PGFType.tp_alloc(&pgf_PGFType, 0);
|
||||||
|
|
||||||
|
// Read the PGF grammar.
|
||||||
|
PgfExn err;
|
||||||
|
py_pgf->pgf = pgf_boot_ngf(fpath, npath, &err);
|
||||||
|
if (err.type == PGF_EXN_SYSTEM_ERROR) {
|
||||||
|
errno = err.code;
|
||||||
|
PyErr_SetFromErrnoWithFilename(PyExc_IOError, npath);
|
||||||
|
Py_DECREF(py_pgf);
|
||||||
|
return NULL;
|
||||||
|
} else if (err.type == PGF_EXN_PGF_ERROR) {
|
||||||
|
PyErr_SetString(PGFError, err.msg);
|
||||||
|
free((char*) err.msg);
|
||||||
|
Py_DECREF(py_pgf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return py_pgf;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PGFObject*
|
||||||
|
pgf_readNGF(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
const char *fpath;
|
||||||
|
if (!PyArg_ParseTuple(args, "s", &fpath))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
PGFObject* py_pgf = (PGFObject*) pgf_PGFType.tp_alloc(&pgf_PGFType, 0);
|
||||||
|
|
||||||
|
// Read the NGF grammar.
|
||||||
|
PgfExn err;
|
||||||
|
py_pgf->pgf = pgf_read_ngf(fpath, &err);
|
||||||
|
if (err.type == PGF_EXN_SYSTEM_ERROR) {
|
||||||
|
errno = err.code;
|
||||||
|
PyErr_SetFromErrnoWithFilename(PyExc_IOError, fpath);
|
||||||
|
Py_DECREF(py_pgf);
|
||||||
|
return NULL;
|
||||||
|
} else if (err.type == PGF_EXN_PGF_ERROR) {
|
||||||
|
PyErr_SetString(PGFError, err.msg);
|
||||||
|
free((char*) err.msg);
|
||||||
|
Py_DECREF(py_pgf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return py_pgf;
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static ExprObject*
|
static ExprObject*
|
||||||
pgf_readExpr(PyObject *self, PyObject *args) {
|
pgf_readExpr(PyObject *self, PyObject *args) {
|
||||||
@@ -3592,7 +3648,11 @@ pgf_readType(PyObject *self, PyObject *args) {
|
|||||||
|
|
||||||
static PyMethodDef module_methods[] = {
|
static PyMethodDef module_methods[] = {
|
||||||
{"readPGF", (void*)pgf_readPGF, METH_VARARGS,
|
{"readPGF", (void*)pgf_readPGF, METH_VARARGS,
|
||||||
"Reads a PGF file in memory"},
|
"Reads a PGF file into memory"},
|
||||||
|
{"bootNGF", (void*)pgf_bootNGF, METH_VARARGS,
|
||||||
|
"Reads a PGF file into memory and stores the unpacked data in an NGF file"},
|
||||||
|
{"readNGF", (void*)pgf_readNGF, METH_VARARGS,
|
||||||
|
"Reads an NGF file into memory"},
|
||||||
/* {"readExpr", (void*)pgf_readExpr, METH_VARARGS,
|
/* {"readExpr", (void*)pgf_readExpr, METH_VARARGS,
|
||||||
"Parses a string as an abstract tree"},
|
"Parses a string as an abstract tree"},
|
||||||
{"readType", (void*)pgf_readType, METH_VARARGS,
|
{"readType", (void*)pgf_readType, METH_VARARGS,
|
||||||
|
|||||||
@@ -6,9 +6,10 @@ import sys
|
|||||||
|
|
||||||
sys.stdout.write("loading...")
|
sys.stdout.write("loading...")
|
||||||
sys.stdout.flush();
|
sys.stdout.flush();
|
||||||
# gr = pgf.readPGF("../../../treebanks/PennTreebank/ParseEngAbs.pgf")
|
gr1 = pgf.readPGF("../haskell/tests/basic.pgf")
|
||||||
gr = pgf.readPGF("../haskell/tests/basic.pgf")
|
gr2 = pgf.bootNGF("../haskell/tests/basic.pgf", "./basic.ngf")
|
||||||
sys.stdout.write("\n")
|
gr3 = pgf.readNGF("./basic.ngf")
|
||||||
|
sys.stdout.write("done")
|
||||||
|
|
||||||
# source_lang = gr.languages["ParseEng"]
|
# source_lang = gr.languages["ParseEng"]
|
||||||
# target_lang = gr.languages["ParseBul"]
|
# target_lang = gr.languages["ParseBul"]
|
||||||
|
|||||||
Reference in New Issue
Block a user