From 97b3912ec112912749705a2f4375566eacff8ab6 Mon Sep 17 00:00:00 2001 From: Utz-Uwe Haus Date: Wed, 1 Oct 2008 19:05:27 +0200 Subject: [PATCH] Clean up parser output. Signed-off-by: Utz-Uwe Haus --- pegutils.lisp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pegutils.lisp b/pegutils.lisp index 5a06305..3e8a53f 100644 --- a/pegutils.lisp +++ b/pegutils.lisp @@ -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) -- 2.11.4.GIT