我正在设计/原型化Python中的域特定语言...至少现在。设计很简单 - 但需要支持指定任意函数(其域是从标签到整数的映射 - 范围是整数。)在许多情况下,该函数将仅选择域中的标签以产生结果......但我希望允许在通用编程语言中轻松(和有效)实现任何函数的规范。
需要注意的是,我希望函数“安全”......我的意思是:
我很想知道这个功能应该有效实施 - 我希望不经常提供定义 - 并且经常进行评估。我还希望使用熟悉的语法来定义函数。
我考虑过在python中支持函数的实现......我知道我可以impose restrictions using the eval() function,我发现AST module - 建议一种涉及解析AST的方法然后解释(或在评估之前验证)AST树。我还阅读了关于pyparse的内容,并开始实施一种定制的,解释性的语言。
我不禁认为试图阻止来自eval()的不良行为是“向后”解决问题(试图阻止事后的不良功能),而实施定制语言则需要重新发明轮子
Python是否已经拥有安全,高效,可嵌入的表达式解释器?
答案 0 :(得分:0)
如果您在网络浏览器中运行此操作(通常用于不受信任的代码问题),请考虑使用类似Brython的方式在客户端运行它。没有人关心用户是否攻击自己的机器。
如果您确实实施了定制的口译员,则不必重新实施所有轮。我认为在不受信任的代码上使用compile()
是相对安全的,但要注意大量常量占用时间和内存。在可以杀死的单独进程中运行编译器。然后你只需要编写一个Python字节码解释器,它无法访问任何重要的东西。