<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -45,10 +45,9 @@
 
 ;;; Watch parameters
 (defparameter *activations* nil)
-(defparameter *compilations* nil) ; TBD
+(defparameter *compilations* nil)
 (defparameter *facts* nil)
 (defparameter *rules* nil)
-(defparameter *statistics* nil) ; TBD
 
 ;;; Debug parameters
 (defparameter *code* nil) ; Print all generated code
@@ -60,6 +59,7 @@
 (defparameter *ce-bindings* (make-hash-table))
 (defparameter *nodes* (make-hash-table))
 (defparameter *salience* 0)
+(defparameter *compilation-string* '())
 
 ;;; Helper methods
 (defun make-sym (&amp;rest parts)
@@ -336,6 +336,7 @@
               *fact-bindings* (make-hash-table)
               *ce-bindings* (make-hash-table)
               *variable-bindings* (make-hash-table)
+              *compilation-string* '()
               *salience* 0)
         (let ((rhs (if (cdr (member '=&gt; body))
                        (cdr (member '=&gt; body))
@@ -345,6 +346,7 @@
              (compile-lhs ,name 0 ,@lhs)
              (compile-rhs ,name ,@rhs)
              (make-production-node ',name)
+             (format *compilations* &quot;~&amp;DEFRULE ~A: ~{~A~}~%&quot; ',name *compilation-string*)
              ',name)))))
 
 (defmacro compile-lhs (rule-name position &amp;rest conditional-elements)
@@ -434,6 +436,7 @@
       (let ((*print-pretty* t))
         (format *code* &quot;~&amp;~S~%&quot; alpha-node))
       (eval alpha-node)
+      (push &quot;+A&quot; *compilation-string*)
       (if prev-node
           (connect-nodes prev-node alpha-node-name)
           (add-to-root defstruct-name alpha-node-name))
@@ -503,6 +506,7 @@
     (let ((*print-pretty* t))
       (format *code* &quot;~&amp;~S~%&quot; beta-node))
     (eval beta-node)
+    (push &quot;+B&quot; *compilation-string*)
     (unless (eq position 0)
       (connect-nodes left-node left-activate))
     (setf (gethash position *nodes*) beta-node-name)))
@@ -558,6 +562,7 @@
     (let ((*print-pretty* t))
       (format *code* &quot;~&amp;~S~%&quot; not-node))
     (eval not-node)
+    (push &quot;+N&quot; *compilation-string*)
     (connect-nodes left-node left-activate)
     (setf (gethash position *nodes*) not-node-name)))
 
@@ -584,7 +589,8 @@
       
       (let ((*print-pretty* t))
         (format *code* &quot;~&amp;~S~%&quot; test-node))
-      (eval test-node))
+      (eval test-node)
+      (push &quot;+T&quot; *compilation-string*))
     test-node-name))
 
 (defun make-binding-test (position)
@@ -623,6 +629,7 @@
     (let ((*print-pretty* t))
       (format *code* &quot;~&amp;~S~%&quot; production-node))
     (eval production-node)
+    (push &quot;+P&quot; *compilation-string*)
     (connect-nodes (gethash (- (hash-table-count *nodes*) 1) *nodes*) production-node-name)
     (add-to-production-nodes production-node-name)))
 </diff>
      <filename>mps.lisp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>32f1d841a00ed634a769f722e64c6437bddee50f</id>
    </parent>
  </parents>
  <author>
    <name>Johan Lindberg</name>
    <email>johan@pulp.se</email>
  </author>
  <url>http://github.com/johanlindberg/minimal-production-system/commit/44ce7759a697218cc97fe682f82687752df07723</url>
  <id>44ce7759a697218cc97fe682f82687752df07723</id>
  <committed-date>2009-10-21T07:13:46-07:00</committed-date>
  <authored-date>2009-10-21T07:13:46-07:00</authored-date>
  <message>Implemented watch item for compilations (and removed statistics).</message>
  <tree>a4c303030bd23f6e1f20fcd74937738cc479e9c7</tree>
  <committer>
    <name>Johan Lindberg</name>
    <email>johan@pulp.se</email>
  </committer>
</commit>
