构建解析器的选项

时间:2012-11-25 20:42:21

标签: parsing dynamic programming-languages

我有一个应用程序,用户可以在其中创建存储在数据库中的实体。每个实体都有一个字符串Name属性和一个boolean Value属性。用户还可以指定包含要对实体执行的逻辑的字符串。例如,逻辑可能类似于:

(Q1或Q2)和(Q3或Q4)

因此,要评估此逻辑,我的应用程序需要查找Name属性为Q1,Q2,Q3和Q4的实体,将Value属性替换为上述表达式中的名称,并评估表达式。

该应用程序是用C#编写的。我是C#和VB的专家,但我没有动态语言的经验。我可以编写一个使用Regex来标记逻辑字符串的解析器,但我想知道是否有更简单的方法来执行此操作,可能使用来自相对较新的.Net动态语言功能的内容。

鲍勃

2 个答案:

答案 0 :(得分:1)

Flee(http://flee.codeplex.com/)看起来像赢家。特别是,它似乎提供了一个简单的事件机制,允许我的应用程序为Flee解析出表达式的变量提供值。

答案 1 :(得分:0)

ANTLR是一个很棒的Java解析器生成器。我建议你试一试:

http://www.antlr.org/wiki/display/ANTLR3/Antlr+3+CSharp+Target