【发布时间】:2017-04-03 05:19:25
【问题描述】:
至少目前,我正在用 Python 设计/制作一种领域特定语言的原型。设计很简单 - 但需要支持指定任意函数(其域是从标签到整数的映射 - 范围是整数。)在许多情况下,该函数将仅在域中选择一个标签以产生一个结果...但我想允许规范任何可以用通用编程语言轻松(有效)实现的功能。
需要注意的是,我希望函数“安全”...我的意思是:
- “纯”功能:确定性且无副作用。 (即没有外部状态;没有与文件、I/O、设备等交互)
- 终止 - 成功或在特定(小规模)分配的计算资源到期后。
我很希望这个功能应该被有效地实现——我希望不经常提供定义——并且非常频繁地进行评估。我还希望使用熟悉的语法来定义函数。
我考虑过支持在 python 中实现函数...我知道我可以impose restrictions using the eval() function,并且我找到了AST module - 建议一种方法涉及解析为 AST,然后解释 (或在评估之前验证)AST 树。我还阅读了有关 pyparse 的信息,并考虑实施一种定制的、解释性的语言。
我不禁认为,试图阻止来自 eval() 的不良行为是在“向后”解决问题(试图在事后阻止不良功能),而实施定制语言将涉及重新发明轮子.
Python 是否已经有了安全、高效、可嵌入的表达式解释器?
【问题讨论】:
标签: python functional-programming interpreter dsl