解析树的优化

时间:2013-09-18 14:45:03

标签: c++ tree

我最近开始用C ++深入研究Parse Trees,因为我有一定​​的任务。在ast_parse(boost-library)的帮助下生成抽象语法树。然后将此ast转换为解析树。有一个shared_ptr指向树的根节点。这里一切正常,问题如下:

输入字符串可以是这样的:

NumberOfViews > 3 AND NumberofViews > 3

甚至更糟

NumberOfViews > 3 OR not NumberOfViews > 3 

(当然这总是评估为真,可以完全删除。)

因此树中存在大量冗余甚至逻辑问题,因为树可能变得非常大。我必须以有效的方式分析树,并修复这些问题(我将从修复重复问题开始)。我不需要解决方案,只需要一些提示从哪里开始或在哪里查看,因为到目前为止我还没有任何解析树的经验。

更多信息:

解析树可以变得更复杂,使用AND,OR,IN,< =,!=甚至可以调用特殊函数。它们可以有大约5000个字符。这些过滤器由客户创建。大多数情况下,现有的过滤器被复制到一个新过滤器中,没有人关心冗余或不合逻辑的表达。所以我无法避免那些虚假的表达。我的目标是拥有相同的Parse树(因为已经有一个工作的树),只是没有冗余。解析树是从ast生成的;我首先考虑优化ast,所以我不必处理解析树本身。但是,我不知道如何在解析树中检测重复项。

0 个答案:

没有答案
相关问题