forked from GitHub/gf-core
fixes in the C and Python API to make them closer to the Haskell API
This commit is contained in:
@@ -220,7 +220,7 @@ static PgfLinFuncs pgf_bracket_lin_funcs = {
|
|||||||
.end_phrase = pgf_bracket_lzn_end_phrase
|
.end_phrase = pgf_bracket_lzn_end_phrase
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
static void
|
||||||
pgf_graphviz_parse_level(GuBuf* level, GuWriter* wtr, GuExn* err)
|
pgf_graphviz_parse_level(GuBuf* level, GuWriter* wtr, GuExn* err)
|
||||||
{
|
{
|
||||||
gu_puts("\n subgraph {rank=same;\n", wtr, err);
|
gu_puts("\n subgraph {rank=same;\n", wtr, err);
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ pgf_jit_predicate(PgfJitState* state, PgfCIdMap* abscats,
|
|||||||
jit_pusharg_p(JIT_V0);
|
jit_pusharg_p(JIT_V0);
|
||||||
jit_pusharg_p(JIT_V2);
|
jit_pusharg_p(JIT_V2);
|
||||||
jit_pusharg_p(JIT_V1);
|
jit_pusharg_p(JIT_V1);
|
||||||
jit_finish(pgf_try_first);
|
jit_finish(pgf_reasoner_try_first);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PGF_JIT_DEBUG
|
#ifdef PGF_JIT_DEBUG
|
||||||
@@ -182,7 +182,7 @@ pgf_jit_predicate(PgfJitState* state, PgfCIdMap* abscats,
|
|||||||
jit_pusharg_p(JIT_V0);
|
jit_pusharg_p(JIT_V0);
|
||||||
jit_pusharg_p(JIT_V2);
|
jit_pusharg_p(JIT_V2);
|
||||||
jit_pusharg_p(JIT_V1);
|
jit_pusharg_p(JIT_V1);
|
||||||
jit_finish(pgf_try_else);
|
jit_finish(pgf_reasoner_try_else);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < n_hypos; i++) {
|
for (size_t i = 0; i < n_hypos; i++) {
|
||||||
@@ -240,7 +240,7 @@ pgf_jit_predicate(PgfJitState* state, PgfCIdMap* abscats,
|
|||||||
jit_getarg_p(JIT_V1, rs_arg);
|
jit_getarg_p(JIT_V1, rs_arg);
|
||||||
jit_getarg_p(JIT_V2, st_arg);
|
jit_getarg_p(JIT_V2, st_arg);
|
||||||
} else {
|
} else {
|
||||||
jit_patch_movi(ref,pgf_complete);
|
jit_patch_movi(ref,pgf_reasoner_complete);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -260,7 +260,7 @@ pgf_jit_predicate(PgfJitState* state, PgfCIdMap* abscats,
|
|||||||
jit_pusharg_p(JIT_V0);
|
jit_pusharg_p(JIT_V0);
|
||||||
jit_pusharg_p(JIT_V2);
|
jit_pusharg_p(JIT_V2);
|
||||||
jit_pusharg_p(JIT_V1);
|
jit_pusharg_p(JIT_V1);
|
||||||
jit_finish(pgf_try_constant);
|
jit_finish(pgf_reasoner_try_constant);
|
||||||
} else {
|
} else {
|
||||||
#ifdef PGF_JIT_DEBUG
|
#ifdef PGF_JIT_DEBUG
|
||||||
gu_puts(" COMPLETE\n", wtr, err);
|
gu_puts(" COMPLETE\n", wtr, err);
|
||||||
@@ -270,7 +270,7 @@ pgf_jit_predicate(PgfJitState* state, PgfCIdMap* abscats,
|
|||||||
jit_prepare(2);
|
jit_prepare(2);
|
||||||
jit_pusharg_p(JIT_V2);
|
jit_pusharg_p(JIT_V2);
|
||||||
jit_pusharg_p(JIT_V1);
|
jit_pusharg_p(JIT_V1);
|
||||||
jit_finish(pgf_complete);
|
jit_finish(pgf_reasoner_complete);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PGF_JIT_DEBUG
|
#ifdef PGF_JIT_DEBUG
|
||||||
|
|||||||
@@ -254,8 +254,8 @@ pgf_parse_with_heuristics(PgfConcr* concr, PgfCId cat, PgfLexer *lexer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
GuEnum*
|
GuEnum*
|
||||||
pgf_get_completions(PgfConcr* concr, PgfCId cat, PgfLexer *lexer,
|
pgf_complete(PgfConcr* concr, PgfCId cat, PgfLexer *lexer,
|
||||||
GuString prefix, GuPool* pool)
|
GuString prefix, GuPool* pool)
|
||||||
{
|
{
|
||||||
// Begin parsing a sentence of the specified category
|
// Begin parsing a sentence of the specified category
|
||||||
PgfParseState* state =
|
PgfParseState* state =
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ typedef struct PgfConcr PgfConcr;
|
|||||||
|
|
||||||
#include <pgf/expr.h>
|
#include <pgf/expr.h>
|
||||||
#include <pgf/lexer.h>
|
#include <pgf/lexer.h>
|
||||||
|
#include <pgf/graphviz.h>
|
||||||
|
|
||||||
/// An enumeration of #PgfExpr elements.
|
/// An enumeration of #PgfExpr elements.
|
||||||
typedef GuEnum PgfExprEnum;
|
typedef GuEnum PgfExprEnum;
|
||||||
@@ -126,15 +127,15 @@ pgf_parse_with_heuristics(PgfConcr* concr, PgfCId cat, PgfLexer *lexer,
|
|||||||
GuPool* pool, GuPool* out_pool);
|
GuPool* pool, GuPool* out_pool);
|
||||||
|
|
||||||
GuEnum*
|
GuEnum*
|
||||||
pgf_get_completions(PgfConcr* concr, PgfCId cat, PgfLexer *lexer,
|
pgf_complete(PgfConcr* concr, PgfCId cat, PgfLexer *lexer,
|
||||||
GuString prefix, GuPool* pool);
|
GuString prefix, GuPool* pool);
|
||||||
|
|
||||||
bool
|
bool
|
||||||
pgf_parseval(PgfConcr* concr, PgfExpr expr, PgfCId cat,
|
pgf_parseval(PgfConcr* concr, PgfExpr expr, PgfCId cat,
|
||||||
double *precision, double *recall, double *exact);
|
double *precision, double *recall, double *exact);
|
||||||
|
|
||||||
PgfExprEnum*
|
PgfExprEnum*
|
||||||
pgf_generate(PgfPGF* pgf, PgfCId cat, GuPool* pool);
|
pgf_generate_all(PgfPGF* pgf, PgfCId cat, GuPool* pool);
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ pgf_combine1(PgfReasoner* rs, PgfCombine1State* st)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_try_first(PgfReasoner* rs, PgfExprState* parent, PgfAbsFun* absfun)
|
pgf_reasoner_try_first(PgfReasoner* rs, PgfExprState* parent, PgfAbsFun* absfun)
|
||||||
{
|
{
|
||||||
PgfCId cat = absfun->type->cid;
|
PgfCId cat = absfun->type->cid;
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ pgf_try_first(PgfReasoner* rs, PgfExprState* parent, PgfAbsFun* absfun)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_try_else(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun)
|
pgf_reasoner_try_else(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun)
|
||||||
{
|
{
|
||||||
PgfExprState *st = gu_new(PgfExprState, rs->tmp_pool);
|
PgfExprState *st = gu_new(PgfExprState, rs->tmp_pool);
|
||||||
st->base.continuation = (PgfPredicate) absfun->predicate;
|
st->base.continuation = (PgfPredicate) absfun->predicate;
|
||||||
@@ -311,7 +311,7 @@ pgf_combine2(PgfReasoner* rs, PgfCombine2State* st)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_complete(PgfReasoner* rs, PgfExprState* st)
|
pgf_reasoner_complete(PgfReasoner* rs, PgfExprState* st)
|
||||||
{
|
{
|
||||||
PgfExprProb* ep = gu_new(PgfExprProb, rs->pool);
|
PgfExprProb* ep = gu_new(PgfExprProb, rs->pool);
|
||||||
ep->prob = st->base.prob - st->answers->outside_prob;
|
ep->prob = st->base.prob - st->answers->outside_prob;
|
||||||
@@ -332,10 +332,10 @@ pgf_complete(PgfReasoner* rs, PgfExprState* st)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_try_constant(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun)
|
pgf_reasoner_try_constant(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun)
|
||||||
{
|
{
|
||||||
pgf_try_else(rs, prev, absfun);
|
pgf_reasoner_try_else(rs, prev, absfun);
|
||||||
pgf_complete(rs, prev);
|
pgf_reasoner_complete(rs, prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PgfExprProb*
|
static PgfExprProb*
|
||||||
@@ -382,7 +382,7 @@ pgf_reasoner_enum_next(GuEnum* self, void* to, GuPool* pool)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PgfExprEnum*
|
PgfExprEnum*
|
||||||
pgf_generate(PgfPGF* pgf, PgfCId cat, GuPool* pool)
|
pgf_generate_all(PgfPGF* pgf, PgfCId cat, GuPool* pool)
|
||||||
{
|
{
|
||||||
PgfReasoner* rs = gu_new(PgfReasoner, pool);
|
PgfReasoner* rs = gu_new(PgfReasoner, pool);
|
||||||
rs->pool = pool;
|
rs->pool = pool;
|
||||||
|
|||||||
@@ -8,15 +8,15 @@ typedef struct PgfExprState PgfExprState;
|
|||||||
typedef void (*PgfPredicate)(PgfReasoner* rs, PgfReasonerState* st);
|
typedef void (*PgfPredicate)(PgfReasoner* rs, PgfReasonerState* st);
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_try_first(PgfReasoner* rs, PgfExprState* parent, PgfAbsFun* absfun);
|
pgf_reasoner_try_first(PgfReasoner* rs, PgfExprState* parent, PgfAbsFun* absfun);
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_try_else(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun);
|
pgf_reasoner_try_else(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun);
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_complete(PgfReasoner* rs, PgfExprState* st);
|
pgf_reasoner_complete(PgfReasoner* rs, PgfExprState* st);
|
||||||
|
|
||||||
void
|
void
|
||||||
pgf_try_constant(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun);
|
pgf_reasoner_try_constant(PgfReasoner* rs, PgfExprState* prev, PgfAbsFun* absfun);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1228,7 +1228,7 @@ Concr_parse(ConcrObject* self, PyObject *args, PyObject *keywds)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static IterObject*
|
static IterObject*
|
||||||
Concr_getCompletions(ConcrObject* self, PyObject *args, PyObject *keywds)
|
Concr_complete(ConcrObject* self, PyObject *args, PyObject *keywds)
|
||||||
{
|
{
|
||||||
static char *kwlist[] = {"sentence", "tokens", "cat",
|
static char *kwlist[] = {"sentence", "tokens", "cat",
|
||||||
"prefix", "n", NULL};
|
"prefix", "n", NULL};
|
||||||
@@ -1295,7 +1295,7 @@ Concr_getCompletions(ConcrObject* self, PyObject *args, PyObject *keywds)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pyres->res =
|
pyres->res =
|
||||||
pgf_get_completions(self->concr, catname, lexer, prefix, pyres->pool);
|
pgf_complete(self->concr, catname, lexer, prefix, pyres->pool);
|
||||||
|
|
||||||
if (pyres->res == NULL) {
|
if (pyres->res == NULL) {
|
||||||
Py_DECREF(pyres);
|
Py_DECREF(pyres);
|
||||||
@@ -1698,7 +1698,7 @@ static PyMethodDef Concr_methods[] = {
|
|||||||
"- n (int), max. trees; OPTIONAL, default: extract all trees\n"
|
"- n (int), max. trees; OPTIONAL, default: extract all trees\n"
|
||||||
"- heuristics (double >= 0.0); OPTIONAL, default: taken from the flags in the grammar"
|
"- heuristics (double >= 0.0); OPTIONAL, default: taken from the flags in the grammar"
|
||||||
},
|
},
|
||||||
{"getCompletions", (PyCFunction)Concr_getCompletions, METH_VARARGS | METH_KEYWORDS,
|
{"complete", (PyCFunction)Concr_complete, METH_VARARGS | METH_KEYWORDS,
|
||||||
"Parses a partial string and returns a list with the top n possible next tokens"
|
"Parses a partial string and returns a list with the top n possible next tokens"
|
||||||
},
|
},
|
||||||
{"parseval", (PyCFunction)Concr_parseval, METH_VARARGS,
|
{"parseval", (PyCFunction)Concr_parseval, METH_VARARGS,
|
||||||
@@ -2011,7 +2011,7 @@ PGF_functionType(PGFObject* self, PyObject *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static IterObject*
|
static IterObject*
|
||||||
PGF_generate(PGFObject* self, PyObject *args, PyObject *keywds)
|
PGF_generateAll(PGFObject* self, PyObject *args, PyObject *keywds)
|
||||||
{
|
{
|
||||||
static char *kwlist[] = {"cat", "n", NULL};
|
static char *kwlist[] = {"cat", "n", NULL};
|
||||||
|
|
||||||
@@ -2040,7 +2040,7 @@ PGF_generate(PGFObject* self, PyObject *args, PyObject *keywds)
|
|||||||
GuString catname = gu_str_string(catname_s, tmp_pool);
|
GuString catname = gu_str_string(catname_s, tmp_pool);
|
||||||
|
|
||||||
pyres->res =
|
pyres->res =
|
||||||
pgf_generate(self->pgf, catname, pyres->pool);
|
pgf_generate_all(self->pgf, catname, pyres->pool);
|
||||||
if (pyres->res == NULL) {
|
if (pyres->res == NULL) {
|
||||||
Py_DECREF(pyres);
|
Py_DECREF(pyres);
|
||||||
gu_pool_free(tmp_pool);
|
gu_pool_free(tmp_pool);
|
||||||
@@ -2122,7 +2122,7 @@ static PyMethodDef PGF_methods[] = {
|
|||||||
{"functionType", (PyCFunction)PGF_functionType, METH_VARARGS,
|
{"functionType", (PyCFunction)PGF_functionType, METH_VARARGS,
|
||||||
"Returns the type of a function"
|
"Returns the type of a function"
|
||||||
},
|
},
|
||||||
{"generate", (PyCFunction)PGF_generate, METH_VARARGS | METH_KEYWORDS,
|
{"generateAll", (PyCFunction)PGF_generateAll, METH_VARARGS | METH_KEYWORDS,
|
||||||
"Generates abstract syntax trees of given category in decreasing probability order"
|
"Generates abstract syntax trees of given category in decreasing probability order"
|
||||||
},
|
},
|
||||||
{"compute", (PyCFunction)PGF_compute, METH_VARARGS,
|
{"compute", (PyCFunction)PGF_compute, METH_VARARGS,
|
||||||
|
|||||||
Reference in New Issue
Block a user