(defpackage #:parse (:use #:openlisp #:lex #:abs-syn) (:export #:parse)) (in-package #:parse) (defclass () () (:abstractp t)) (defclass () ((expr :accessor expr))) (defclass () ((bin-op :accessor bin-op))) (defclass () ((unr-op :accessor unr-op))) (defclass (") 'great))) (defun parse (str) (let* ((cl (init-lex str)) (tok (lexer cl))) (cond ((instancep tok (class )) (make-instance (class ) 'n n 'c (parse-cmd cl))) ((instancep tok (class )) (cond ((string= (ident tok) "LIST") (create (class ))) ((string= (ident tok) "RUN") (create (class ))) ((string= (ident tok) "END") (create (class ))) (t (error "Parse error")))) (t (error "Parse error"))))) (provide "parse")