Clean up parser output.
authorUtz-Uwe Haus <haus@uuhaus.de>
Wed, 1 Oct 2008 17:05:27 +0000 (1 19:05 +0200)
committerUtz-Uwe Haus <haus@uuhaus.de>
Wed, 1 Oct 2008 17:05:27 +0000 (1 19:05 +0200)
Signed-off-by: Utz-Uwe Haus <haus@uuhaus.de>
pegutils.lisp

index 5a06305..3e8a53f 100644 (file)
@@ -427,14 +427,20 @@ DST-PACKAGE will contain the 3 functions PARSE-STRING, PARSE-FILE and PARSE-STRE
          (with-open-file (s dst-file :direction :output :if-exists :supersede)
            (let ((*print-readably* T)
                  (*print-pretty* T)
-                 (*print-circle* NIL))
+                 (*print-circle* NIL)
+                 (dpkg (intern (package-name dst-package) :keyword)))
              (format s ";; This is a Common Lisp peg parser automatically generated by OPOSSUM -*- mode:lisp -*-~%")
              (format s ";; generated from ~A on ~A~%" grammarfile (get-iso-time))
-             (format s "(eval-when (:load-toplevel :compile-toplevel :execute) (declaim (optimize (speed 0) (safety 3) (debug 3))))~%~%")
-             (format s "(defpackage #:~A~%" (package-name dst-package))
-             (format s " (:use #:cl #:opossum)~%")
-             (format s " (:export #:parse-string #:parse-file #:parse-stream))~%")
-             (format s "~%(in-package #:~A)~%" (package-name dst-package))
+             (prin1
+              `(eval-when (:load-toplevel :compile-toplevel :execute)
+                (declaim (optimize (speed 0) (safety 3) (debug 3))))
+              s) (terpri s) 
+             (prin1
+              `(defpackage ,dpkg
+                (:use :cl :opossum)
+                (:export :parse-string :parse-file :parse-stream))
+              s) (terpri s)
+             (prin1 `(in-package ,dpkg) s) (terpri s)
              ;; First form is taken to be the start rule
              (let ((entryrule (or (and start-rule (make-name start-rule))
                                   (and forms (cadr (first forms))))))
@@ -448,7 +454,7 @@ DST-PACKAGE will contain the 3 functions PARSE-STRING, PARSE-FILE and PARSE-STRE
                      (prin1 `(defun parse-string (,(intern :s dst-package))
                               ,(format nil "Parse S using grammar ~A starting at ~A" grammarfile entryrule)
                               (let ((*context* (make-instance 'opossum:context
-                                                              :dstpkg ,(package-name dst-package)
+                                                              :dstpkg ,dpkg
                                                               :input ,(intern :s dst-package))))
                                 (funcall (,entryrule) 0)))
                             s)