我想在我的C/C++应用程序中创建一个嵌入式Python解释器.理想情况下,此解释器的行为将与真实的Python解释器完全相同,但在处理输入的每一行后会产生收益.标准的Python模块代码从外部看起来与我想要的完全一样,只是它是用Python编写的.例如.:
>>> import code
>>> code.interact()
Python 2.7.1 (r271:86832, Jan 3 2011, 15:34:27)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
代码的核心是接受可能不完整的用户输入并显示语法错误(情况1),等待更多输入(情况2)或执行用户输入(情况3)的函数.
try:
code = self.compile(source, filename, symbol)
except (OverflowError, SyntaxError, ValueError):
# Case 1
self.showsyntaxerror(filename)
return False
if code is None:
# Case 2
return True
# Case 3
self.runcode(code)
return False
Python源代码树Demo / embed / demo.c中的示例是外壳,但不是我想要的外壳,因为该示例仅处理完整的语句.我在这里包括部分内容以供参考:
/* Example of embedding Python in another program */
#include "Python.h"
main(int argc, char **argv)
{
/* Initialize the Python interpreter. Required. */
Py_Initialize();
[snip]
/* Execute some Python statements (in module __main__) */
PyRun_SimpleString("import sys\n");
[snip]
/* Exit, cleaning up the interpreter */
Py_Exit(0);
}
我正在寻找的是处理不完整块,堆栈跟踪等的C代码.即,真正的Python解释器的所有行为.提前致谢.
解决方法:
看一下boost.python.这是C语言中Python的绝佳诠释,反之亦然.
但是您仍然可以使用C API. PyRun_InteractiveLoopFlags()函数在您的C应用程序中提供了一个交互式控制台.
标签:c-3,python 来源: https://codeday.me/bug/20191208/2094564.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。