Parsing 编译器中的解析阶段与规则引擎有何不同?

Parsing 编译器中的解析阶段与规则引擎有何不同?,parsing,compiler-construction,rule-engine,Parsing,Compiler Construction,Rule Engine,我大致了解编译器的工作原理(我指的是语言、语法、词汇分析、语法分析等)。规则引擎有各种规则和关联的操作,就像语法中有规则一样,您可以在解析器生成器工具(如ANTLR)中将操作与之关联。因此,我对如何区分这两个方面有点困惑。有谁能对这些差异给出更清晰、更正式的解释 谢谢, 阿比纳夫 规则引擎有一个事实数据库和一组规则,这些规则可以检查数据库的元素,并修改、插入或删除事实。通常,数据库由一组标记结构(T V1 V2…Vn)组成,每个结构具有不同类型的值V_i。规则通常是一种模式,指定如果某组结构实例

我大致了解编译器的工作原理(我指的是语言、语法、词汇分析、语法分析等)。规则引擎有各种规则和关联的操作,就像语法中有规则一样,您可以在解析器生成器工具(如ANTLR)中将操作与之关联。因此,我对如何区分这两个方面有点困惑。有谁能对这些差异给出更清晰、更正式的解释

谢谢,
阿比纳夫

规则引擎有一个事实数据库和一组规则,这些规则可以检查数据库的元素,并修改、插入或删除事实。通常,数据库由一组标记结构(T V1 V2…Vn)组成,每个结构具有不同类型的值V_i。规则通常是一种模式,指定如果某组结构实例具有属性[这些结构的值上的某些条件,可能是合取或析取],则其中一个匹配结构的一个或多个值会发生更改,或者匹配结构会被删除,或者插入一个新结构,其中包含一组计算出的值。一个非常复杂的规则引擎将规则视为这样的结构,因此也可以插入和删除规则,但这是非常不寻常的。规则引擎(高效,这是最难的部分)决定在任何时刻可以匹配的规则集,选择一个并重复执行。这个想法的价值在于,一个人可以有一个大致独立的任意“事实”桶(每一个都由标记结构表示),以及一组类似独立的规则,并以统一的方式将它们放在一起。希望是,定义代表世界各个方面的结构很容易,定义操作规则也很容易。这是一种编码大量不同知识的方法,这就是为什么“商业”人员喜欢它们。(这个想法来自人工智能世界)

编译器解析器在一个活动中有两个任务:1)确定输入文本流(分解为langauge标记)是否是特定编程语言的合法实例,2)如果是,则构造编译器数据结构(通常是抽象语法树和符号表)表示程序,以便编译器的其余部分可以生成代码。编译器人员花了大约50年的时间来研究如何快速完成这项工作,并使用非常专业的算法(如根据语法规则使用自定义编码操作的LALR解析器生成器)来完成这项工作

可以用规则引擎实现编译器解析器;您需要一个由令牌流和其他与AST节点和符号表条目相对应的数据类型组成的数据类型。编写解析器可能会更困难,而且不太可能达到编译器解析器的速度,这就是为什么没有人这样做的原因


不能使用编译器解析器实现规则引擎句号。因此,严格来说,规则引擎更强大。

我不清楚您在问题中提到的“规则引擎”是什么意思。你能详细说明一下吗?我说的规则引擎是指:。。。举个例子谢谢你,艾拉。这是一个非常全面和明确的答案,消除了我的疑虑:)