跳开冗长的描述,直接上代码。先来个简单的示例:
CLIPS>
(defrule trafic
(light green)
=>
(printout t "GO" crlf))
CLIPS>
这是一个简单的规则,如果是绿灯,就在屏幕上打印“GO”。然后,在输入一个事实:
CLIPS> (assert (light green))
最后,开始运行:
CLIPS> (run)
GO
上面是一个简单的流程:制定1个规则,然后提供1个事实条件,当输入运行命令后,事实会和规则进行匹配,如果匹配成功,则输出设置的结果。
规则定义的语法如下( ;后面部分为注释,CLIPS的注释以“;”开始):
(defrule rule_name ;规则名称
"optional_comment" ;对规则的注释
(pattern_1) ; Left-Hand Side (LHS)
(pattern_2) ; of the rule consisting of elements before the "=>"
...
(pattern_N)
=>
(action_1) ; Right-Hand Side (RHS)
(action_2) ; of the rule consisting of elements after the "=>".
...
(action_M))
其中pattern部分是判断条件,如果不写,CLIPS会认为所有的条件都符合,给定任何事实(fact)都会执行“=>”后面的action。