我在Eigen Library的帮助下用C++做一些计算,函数是这样的:
MatrixXd Cov(MatrixXd Data)
{
VectorXd meanVector;
...
return Covariance;
}
Run Code Online (Sandbox Code Playgroud)
..在wrap python函数中:
static PyObject *Wrap_Cov(PyObject *self,PyObject *args)
{
Pyobject *Objectdata;
if(!PyArg_ParseTuple(args,"O", &ObjectData))
return NULL;
Cov(ObjectData);
return Py_BuildValue("O",&covariance_answer);
}
Run Code Online (Sandbox Code Playgroud)
显然,Python不知道我定义的''对象'',它不能将''MatrixXd''转换为''对象'',我认为它是某种''数组'',而不是''对象' "
如何在不使用boost的情况下执行此操作?
大约每年一次,我必须开发或至少设计一个语法和解析器 - 这似乎是我工作生活的一个常数.
每次我面对这个任务,大约一年,我,相当一个lex/yacc(flex/bison resp.)的家伙,考虑或重新考虑普通lex/yacc的替代品,并在经过一些沉思和尝试之后回到普通的lex/yacc.
因为我在应用程序的中心有一个CORBA服务器,我可以用几乎所有语言编写的解析器调用,所以这次我看看
对我来说,带有antlrworks的串联antlr4看起来是最有希望的候选者,但是我还不确定花在进入它上面的时间最终会被摊销.
我必须开发的语法类似于SQL DDL(在结构方面,而不是在主题方面).
为什么任何替代方案都会使我的任务比使用普通lex/yacc更容易?
antlr ×1
c++ ×1
eigen ×1
lex ×1
matrix ×1
multilingual ×1
parsing ×1
python ×1
python-c-api ×1
yacc ×1