我想將複雜模式與剪輯匹配:它涉及簡單事實的檢測,並在第二步中檢測更復雜其創建需要處理簡單事實的實例。目前,我處理這三個規則:剪輯:匹配由許多事實和實例組成的複雜模式,其創建基於這些事實
Rule1
檢查大量簡單的事實,並且,如果存在的話,創建一個基於匹配簡單的事實複雜的類實例i_complex
。Rule2
也尋找簡單的事實和i_complex
,如果存在,使用它們來創建一個更復雜的實例i_really_complex
。Rule3
也查找簡單的事實,i_complex
和i_really_complex
,並且如果全部存在,則在屏幕上打印某些內容。
我目前的做法是複製粘貼大量從Rule1
的LHS到Rule2
和Rule3
的LHS簡單的事實。這顯然不完美。
我已經考慮了以下選擇:
在一個規則將所有內容。這實際上是我最喜歡的解決方案。問題在於不能在規則的LHS中添加事實/實例。這意味着,例如,我無法檢查是否符合
i_complex
的要求,如果符合,則創建並斷言它。然而,這是正確匹配i_really_complex
所必需的。我想到了一個自我修改的規則,它被調用/匹配兩次:第一次它在RHS上創建了
i_complex
。第二次它可以匹配LHS上的i_complex
並創建i_really_complex
等等。
匹配這種模式的首選方法是什麼?
很多好處。特別是使用邏輯的提示 – stackoverflowwww