Contents    Page-10    Prev    Next    Page+10    Index   

Expression Trees to English [file expenglish.lsp]


(defun op  (x) (first x))
(defun lhs (x) (second x))
(defun rhs (x) (third x))

(defun op->english (op)
  (list 'the
      (second (assoc op '((+ sum)
                          (- difference)
                          (* product)
                          (/ quotient)
                          (sin sine)
                          (cos cosine)))) 'of))

(defun exp->english (x)
  (if (consp x)                ; operator?
      (append
        (op->english (op x))
        (exp->english (lhs x))
        (if (null (cddr x))      ; unary?
            '()
            (cons 'and
                  (exp->english (rhs x)) ) ) )
      (list x) ) )             ; leaf: operand