bracketedLinearize in Python is now using the linref

This commit is contained in:
kr.angelov
2013-10-31 09:04:07 +00:00
parent 40f0ceb2ef
commit 8f565302cc
2 changed files with 5 additions and 12 deletions

View File

@@ -59,7 +59,8 @@ struct PgfLinFuncs
};
PgfCncTree
pgf_lzr_wrap_linref(PgfCncTree ctree, GuPool* pool);
/// Linearize a concrete syntax tree.
void

View File

@@ -1492,6 +1492,8 @@ Concr_bracketedLinearize(ConcrObject* self, PyObject *args)
PyObject* list = PyList_New(0);
ctree = pgf_lzr_wrap_linref(ctree, tmp_pool);
PgfBracketLznState state;
state.funcs = &pgf_bracket_lin_funcs;
state.stack = gu_new_buf(PyObject*, tmp_pool);
@@ -1499,18 +1501,8 @@ Concr_bracketedLinearize(ConcrObject* self, PyObject *args)
pgf_lzr_linearize(self->concr, ctree, 0, &state.funcs);
gu_pool_free(tmp_pool);
PyObject* bracket = NULL;
if (PyList_Size(list) == 1) {
bracket = PyList_GetItem(list, 0);
Py_INCREF(bracket);
} else {
PyErr_SetString(PGFError, "The abstract tree cannot be linearized");
}
Py_DECREF(list);
return bracket;
return list;
}
static PyObject*