2011-03-29 62 views
1

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

我意识到像IronPython这样的东西很容易符合法案,但有很多其他(危险的)事情他们可以做,我不希望他们能够。

什么人会推荐我用这样的东西?

+0

用户可以输入一个LINQ表达式,然后动态地解析它以确保它是一个布尔表达式吗? – 2011-03-29 02:10:17

回答

0

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

可可/ R是一个分析器发电机,可以采取一门语言的语法和为您生产出一个解析器和扫描仪,这应该让你开始用一个简单的解释:http://www.ssw.uni-linz.ac.at/coco/

有一个样本分析器和解释器称为味道可以帮助你开始。