问题标签 [embedded-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
144 浏览

c++ - 在 C++ 中转义外部代码块

我目前正在研究一种像这样工作的玩具语言:可以将用这种语言编写的块嵌入到 C++ 源中,在编译之前,这些块在额外的预处理步骤中被翻译成 C++,从而生成有效的 C++ 源。

我想确保这些块始终可以在源代码中明确标识,而且,只要源代码中存在这样的块,它就不能是有效的 C++。此外,我想通过尽可能少地限制嵌入式语言来实现这些(语言本身仍然有些流动)。

显而易见的方法是引入一对特殊的多字符括号,由不能一起出现在有效 C++ 代码(或嵌入式语言)中的字符组成。但是,我不确定如何确保特定的字符序列适用于此目的(不是在GotW #78之后,无论如何 (: )。

那么有什么好方法可以逃脱这些障碍呢?

0 投票
2 回答
6321 浏览

c++ - 通过 C++ 在 Python 函数中传递参数

我正在使用 C++ 程序,我需要从 C++ 程序中调用 Python 对象(以执行优化和数学运算)。我无法通过 C++ 将参数传递给 Python 对象这是一个简单的代码

和python类

不幸的是,参数x没有通过python方法添加(当我调用PyObject_CallMethod(pInstance,“add”,“i”,x))通过python调用打印方法给我“通过Python类的总和是0” . 向 python 方法提供数字的最佳方法是什么?

非常感谢你的帮助

文森特

PS:我在python中定义了一个双重加法函数

在 C++ 中调用以下命令

正在工作...看来我的格式 (i) 有问题。

0 投票
2 回答
10829 浏览

lua - 为什么我们需要像 Lua 这样的嵌入式编程语言?

使用嵌入式编程语言的典型用例是什么?我是否正确理解这种语言应该嵌入到某个程序环境中并且应该能够从那里执行?

0 投票
1 回答
106 浏览

configuration-files - 有嵌入式批处理语言这样的东西吗?

我最近正在查看我正在玩的游戏的配置文件,当我发现配置文件中使用的语言与批处理语言非常相似,每行都被表述为命令,语法是多么简单,它是多么的清晰是文件中的每一行都在做什么,而不需要任何周围的上下文行。不过,我知道没有任何批处理语言经常用作扩展语言,可以嵌入到另一个应用程序中。

实际上是否没有设计用于嵌入其他程序的批处理语言(我想首先是用于配置文件),还是只是我没有听说过它们?如果有,有哪些这样的语言?

如果没有,是否有可能以某种方式从具有自定义命令的隔离环境中的程序运行 shell 脚本或类似脚本,然后从程序中访问生成的环境变量?

编辑:通过批处理语言,我的意思是应该可以给出命令,即在表格上制定行<command> [<arg1> [<arg2> [...] ] ]

0 投票
2 回答
155 浏览

python - 将脚本语言嵌入到游戏引擎中的编程语言中的目的是什么?

我对未来制作游戏很感兴趣,我听说我最喜欢的游戏引擎是用 c++ 制作的,但它嵌入了 python。我几乎没有编程经验,但我非常了解面向对象的工作原理。

0 投票
1 回答
762 浏览

python - Py_DECREF 分段错误

我无法在 C++ 中嵌入 Python。我正在使用 Mingw w64 gcc 和 64 位 Python 2.7.11。

调用编译器:

问题是它在 Py_DECREF 中出现段错误。我尝试扩展宏,并将段错误跟踪到以下语句:

结果,tp_dealloc 指向 0x1。

同样的问题发生在 Python 文档中提供的示例代码中: https ://docs.python.org/2/extending/embedding.html#pure-embedding

如果我删除对 Py_DECREF(pName) 和 Py_DECREF(pArgs) 的一些调用,文档中的代码将按预期工作。然而,我在网上找到的每个示例(包括 Python 文档中的示例)都调用了 Py_DECREF。

此错误的原因可能是什么?我的构建环境会不会有一些不一致?

0 投票
0 回答
259 浏览

python - C++ <-> Python:双向通信

我想将 Python 应用程序集成到我的 C++ 应用程序中。通信必须是双向的,如下例所示:

C++:

Python:

我想过通过嵌入式 Python 从 C++ 调用 Python 代码,但我不知道如何从我的 Python 代码中调用 computeResult。我不想每次调用 computeResult 时都创建一个新进程,所以我必须访问我的 C++ 应用程序的现有实例。

任何想法都会受到赞赏,即使他们不使用嵌入式 Python。

0 投票
1 回答
634 浏览

python - 从 C++ 停止嵌入式 Python 提示符

我正在运行嵌入在 C++ 应用程序中的 Python。该程序由一个 Qt GUI 和一个用于计算的工作 QThread 组成。用户可以选择从文件运行 Python 脚本或启动 Python 提示符。两者都在 QThread 中运行。当 python 脚本完成或我们退出 python 提示时,程序退出。但是,我想处理用户请求退出 GUI 的情况。

如果运行 Python 脚本,我可以通过调用来实现这一点PyErr_SetInterrupt(请参阅停止嵌入式 Python)。Python解释器停止,我们可以正常退出。但是,我还没有找到强制退出 Python 提示的好方法。

我尝试将字符输入stdin(with ungetc),希望 Python 提示符接收到它们但没有成功。我从一个重载PyOS_InputHook中执行此操作,该重载用于在 Python 提示符运行时捕获 Qt 事件。

任何想法如何正确强制 Python 提示退出?

0 投票
0 回答
17 浏览

syntax - 如何在 python 语法中嵌入 cython 语法?

看一下cython 代码的简单示例,我想知道 CPython 解释器是否需要一些硬编码的技巧来理解 cython 语法(例如cdef int N),或者它是否使用标准 python 语法的一些概念(例如函数、类、运算符等)来实现

我的意思是,我可以大致想象如何实现 cython 后端(c 代码生成、编译等),但我不明白如何在不接触 python 解释器本身的情况下将前端语法集成到标准 python 解释器中(即无需将 python 语言扩展到标准之外)。

是什么cdef

换句话说,究竟cdef是什么?它是函数、运算符还是一些新关键字?我会理解N = cedef(int)- 这将创建一些派生自int. 但是这样写,我看不出这 3 个令牌是如何交互的 (1 cdef, 2 int, 3 N) ?

-loop实际上是否for迭代?

如果你写这样的代码:

该循环for i in xrange(N):是普通的python循环。是什么阻止了 python 解释器在 cython 将其编译为 C 代码之前无用地迭代 1000000 次迭代?

它是否像这样工作:

N是 some 的一个实例class cdefxrange调用N.__int__()返回1,只传递一次循环。该表达式f += (i*i)仅包含cdef对象,因此 cython 可以重新定义__add_(), __set__(),__get__()函数以生成 C 代码f+=(i*i)

但是我仍然看不到构造for i in xrange()是如何发送到 cython 的,以从中生成 C 代码。

无论如何,它似乎相当复杂和脆弱,所以也许它必须是其他的

0 投票
2 回答
554 浏览

c++ - Lua C API - 使用同名的变量和函数加载多个文件

假设我有两个 Lua 文件,我将从标准 Lua C API 使用它们,它们共享一个公共库:

common.lua

文件1.lua

文件2.lua

现在说我想让两个 file*.lua 文件共享相同 lua_State的. 在不更改任何 Lua 代码的情况下,如何以可以调用特定代码的方式加载文件doSomething()

有没有一种方法可以将加载的文件(函数、变量、表)中的“所有内容”移动到lua_State使用脚本名称(或其他名称)作为键的全局表中?另外,有没有办法让file1.lua和file2.lua可以共享common.lua的“内存”版本?

我正在使用 Lua 5.1。

谢谢!