标签: embedded-language

从c ++程序调用python进行分发

我想从我的c ++程序中调用python脚本文件.

我不确定我将分发给谁的人将安装python.

基本上我正在寻找一个我可以使用的.lib文件,它具有类似Apache的分发许可证.

c++ python embedded-language

48
推荐指数
4
解决办法
7万
查看次数

用于Java的嵌入式Prolog解释器/编译器

我正在开发一个Java应用程序,它需要做一些复杂的逻辑规则推导作为其功能的一部分.我想在Prolog或其他逻辑/约束编程语言而不是Java中编写我的逻辑演绎编码,因为我相信生成的代码将更加简单和易于维护.

我在Prolog上搜索了嵌入式Java实现,并发现了它们的数量,每个都只有很少的文档.我的(适度)选择标准是:

  • 应该可以嵌入Java(例如,可以与我的java包捆绑在一起,而不需要在外部程序上进行任何本机安装)
  • 从Java使用的简单接口(用于启动扣减,检查结果和添加规则)
  • 至少有一些关于如何使用它的例子
  • 不一定必须是Prolog,但具有上述标准的其他逻辑/约束编程语言也适合我的需要.

我有什么选择,它们的优点和缺点是什么?

java prolog logic-programming embedded-language constraint-programming

43
推荐指数
4
解决办法
1万
查看次数

是否有任何静态类型,可嵌入的脚本语言?

我想知道是否有任何静态类型,可嵌入的脚本语言.Python,JavaScript等是很好的语言,但它们是动态类型的(即,在运行时检查类型).我只是想知道是否有人知道可以嵌入C++应用程序的任何静态类型的脚本语言?

language-agnostic static-typing embedded-language

43
推荐指数
2
解决办法
1万
查看次数

停止嵌入式Python

我正在将Python解释器嵌入到C程序中.但是,可能会发生这样的情况:运行某些python脚本时PyRun_SimpleString()会遇到无限循环或执行太长时间.考虑PyRun_SimpleString("while 1: pass");在阻止主程序阻止我认为我可以在一个线程中运行解释器.

如何停止在线程中运行的嵌入式解释器中执行python脚本而不会终止整个过程?

是否可以将异常传递给解释器?我应该将脚本包装在其他可以收听信号的脚本下吗?

PS:我可以在一个单独的过程中运行python,但这不是我想要的 - 除非它是最后的手段......


更新:

所以,它现在有效.再次感谢Denis Otkidach!

如果我看到这一点,你必须做两件事:告诉解释器停止并return -1在与PyRun_SimpleString()运行的同一个线程中.

要停止,有一些可能性:PyErr_SetString(PyExc_KeyboardInterrupt, "...")或者PyErr_SetInterrupt()- 第一个可能让Python运行更多指令然后停止,后者立即停止执行.

return -1使用Py_AddPendingCall()注入一个函数调用成Python执行.自2.7和3.1版以来,文档提到它,但它也运行在早期的Pythons上(这里是2.6).从2.7和3.1它也应该是线程安全的,这意味着你可以在不获取GIL(?)的情况下调用它.

所以可以重写下面的例子:

int quit() {
    PyErr_SetInterrupt();
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

python multithreading process embedded-language python-c-api

23
推荐指数
1
解决办法
5048
查看次数

嵌入式语言:Lua vs Common Lisp(ECL)

这里有人有使用Common Lisp作为嵌入式语言的经验(使用ECL)吗?如果是这样,ECL与Lua相比有多好?

lua common-lisp embedded-language

23
推荐指数
1
解决办法
8160
查看次数

如何在C++中嵌入Ruby?

将Ruby作为脚本语言嵌入C++的最佳方法是什么?使用ruby.h?痛饮?别的什么?我需要的是向Ruby公开一些C++对象,并让Ruby解释器评估访问这些对象的脚本.我不关心扩展Ruby或用C++访问它.

我发现这篇关于在C++中嵌入Ruby的文章,虽然它非常有用,但它有点旧,我想知道是否有关于这个主题的任何其他资源(或类似引擎的开源实现).

c++ ruby scripting embedded-language

18
推荐指数
3
解决办法
2万
查看次数

使用Python或其他嵌入式脚本语言部署应用程序

我正在考虑在用C++编写的业余爱好项目中使用Python作为嵌入式脚本语言.我不想依赖单独安装的Python发行版.Python文档似乎很清楚一般用法,但我找不到明确的答案.

用我的应用程序部署Python解释器+标准库是否可行?像Lua,Javascript(Spidermonkey),Ruby等其他语言会更好用于此用途吗?

这是我正在权衡不同语言的标准:

  • 否/很少依赖外部安装的包
  • 标准图书馆,功能齐全
  • 好语言:)
  • 不会导致巨大的安装包

编辑:

我想问题应该是:如何使用我的程序的安装程序部署我自己的python库+标准库,这样平台是否已经安装了python并不重要?

EDIT2:

再澄清一下.我不需要有关链接C和Python代码的细节的信息.

c++ python deployment scripting-language embedded-language

18
推荐指数
3
解决办法
4610
查看次数

在Python中嵌入低性能脚本语言

我有一个网络应用程序.作为其中的一部分,我需要应用程序的用户能够编写(或复制和粘贴)非常简单的脚本来运行他们的数据.

脚本确实非常简单,性能只是最小的问题.脚本的复杂性的例子我的意思是:

ratio = 1.2345678
minimum = 10

def convert(money)
    return money * ratio
end

if price < minimum
    cost = convert(minimum)
else
    cost = convert(price)
end
Run Code Online (Sandbox Code Playgroud)

价格和成本是全局变量(我可以将这些变量提供给环境并在计算后访问).

但是,我确实需要保证一些东西.

  1. 运行的任何脚本都无法访问Python环境.他们无法导入东西,调用我没有明确公开的方法,读取或写入文件,生成线程等等.我需要完全锁定.

  2. 我需要能够对脚本运行的"周期"数量进行硬限制.Cycles是这里的通用术语.如果语言是字节编译的,则可以是VM指令.Apply-调用Eval/Apply循环.或者只是通过一些运行脚本的中央处理循环进行迭代.细节并不像我能够在短时间内停止运行并向所有者发送电子邮件并说"你的脚本似乎只是添加几个数字 - 将它们整理出来".

  3. 它必须在Vanilla未修补的CPython上运行.

到目前为止,我一直在编写自己的DSL来完成这项任务.我能做到.但我想知道我是否可以建立在巨人的肩膀上.是否有可用于Python的迷你语言?

有很多hacky Lisp变种(即使是我在Github上写过的),但是我更喜欢具有更多非专业语法的东西(比如更多的C或Pascal),并且我正在考虑将其作为编码的替代方案一个人,我想要一些更成熟的东西.

有任何想法吗?

python scripting-language embedded-language

17
推荐指数
3
解决办法
2807
查看次数

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

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

embed lua programming-languages embedded-language

17
推荐指数
2
解决办法
7058
查看次数

任何将Clang作为脚本解释器嵌入到C++代码中的教程?

我没有llvm或clang的经验.据我所知,clang被认为很容易嵌入维基百科 -但是,我没有找到任何有关如何实现这一目标的教程.那么有可能通过JIT在运行时编译和执行用户定义的代码来为c ++应用程序的用户提供脚本功能吗?是否可以调用应用程序自己的类和方法并共享对象?

编辑:我更喜欢脚本语言的C语法(甚至C++本身)

c++ jit llvm clang embedded-language

16
推荐指数
3
解决办法
1万
查看次数