我需要一个简单的布尔表达式解析器,用于我正在研究的一个小C ++模板引擎,我正在寻找一些可以为我做这个的库。不幸的是,我没有找到任何易于集成的东西。我发现这种精神基于solution,这似乎是一个很好的起点,但它并不具备我需要的所有功能。我知道精灵迷你c的例子,但它似乎太复杂了,它可能会永远以某种方式剥夺我需要的东西。基本上,我需要的是以下内容:
我需要能够为解析器提供所有变量及其值,包括数组。我们的想法是能够评估表达式,例如:
var == 2 + 3
var != 2.32
var == "foo"
somearr[var][2] == "bar"
(var == 2) or (var > 100)
对于函数,我很乐意做这样的事情:
var.length() == 3
"bla".length() == 3
或者
length(var) == 3
length("bla") == 3
我对语法细节有点灵活,所以有谁知道一个可以做到这一点并且易于集成的开源库?或者我怎么可能扩展一些基于精神的例子?
例如,在这个boolean expression example中我不太明白在解析它们之前如何将变量设置为某些值。但即使我这样做,它也不足以支持我所需要的东西。
任何帮助/指针都表示赞赏!我花了很多时间试图理解精神,但我想我仍然不能很好地理解除了非常简单的解析之外的任何事情。
答案 0 :(得分:0)
可能最好的方法是阅读Stroustrup的“The C ++ Programming Language”第6章,该语言详细讨论了桌面计算器的源代码(可在此处获取:http://www.stroustrup.com/3rd_code.html)。
这是基本的(因为它是一种教学工具),但很容易修改以满足您的需求。