简单的谓词DSL

时间:2011-03-29 00:55:09

标签: .net dynamic

在我编写的.NET程序的一部分中,我希望用户能够在运行时编写一个简单的函数体,只返回true或false。用户需要通常的基本逻辑运算符,嵌套逻辑运算的能力(a&&(b || c)),以及一小组运算符“==”“!=”“contains”“notcontains” 。换句话说,我让用户在运行时编写一个过滤器谓词的函数。

我意识到像IronPython这样的东西很容易适应账单,但是他们还有很多其他(危险的)可以做的事情我不希望他们能够做到。

人们会建议我使用什么类似的东西?

1 个答案:

答案 0 :(得分:0)

如果你的语法真的很简单,我建议你去编写自己的解析器和一个小字节码解释器。开发成本没有您想象的那么高,并且有一些有用的工具。

Coco / R是一个解析器生成器,可以使用语言语法并为您生成解析器和扫描程序,这应该让您从一个简单的解释器开始:http://www.ssw.uni-linz.ac.at/coco/

有一个名为Taste的示例解析器和解释器可以帮助您入门。