[climacs-cvs] CVS update: climacs/lisp-syntax.lisp

Robert Strandh rstrandh at common-lisp.net
Mon May 30 09:00:36 UTC 2005


Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv18572

Modified Files:
	lisp-syntax.lisp 
Log Message:
Add parsing rules for `#:' so that prolog-syntax.lisp parses OK.

Date: Mon May 30 11:00:35 2005
Author: rstrandh

Index: climacs/lisp-syntax.lisp
diff -u climacs/lisp-syntax.lisp:1.1 climacs/lisp-syntax.lisp:1.2
--- climacs/lisp-syntax.lisp:1.1	Mon May 30 09:25:13 2005
+++ climacs/lisp-syntax.lisp	Mon May 30 11:00:35 2005
@@ -179,6 +179,7 @@
 (defclass text-lexeme (lisp-lexeme) ())
 (defclass reader-conditional-positive-lexeme (lisp-lexeme) ())
 (defclass reader-conditional-negative-lexeme (lisp-lexeme) ())
+(defclass uninterned-symbol-lexeme (lisp-lexeme) ())
 
 (defmethod skip-inter ((syntax lisp-syntax) state scan)
   (macrolet ((fo () `(forward-object scan)))
@@ -236,6 +237,8 @@
 			 (make-instance 'reader-conditional-positive-lexeme))
 		    (#\- (fo)
 			 (make-instance 'reader-conditional-negative-lexeme))
+		    (#\: (fo)
+			 (make-instance 'uninterned-symbol-lexeme))
 		    (t (fo) (make-instance 'error-lexeme)))))
 	(t (cond ((constituentp object)
 		  (loop until (end-of-buffer-p scan)
@@ -605,6 +608,22 @@
 
 (define-lisp-action (|#- form form | t)
   (reduce-rule reader-conditional-negative-form 3))
+
+;;;;;;;;;;;;;;;; uninterned symbol
+
+;;; parse trees
+(defclass uninterned-symbol-form (form) ())
+
+(define-parser-state |#: | (form-may-follow) ())
+(define-parser-state |#: form | (lexer-toplevel-state parser-state) ())
+
+(define-new-lisp-state (form-may-follow uninterned-symbol-lexeme) |' |)
+(define-new-lisp-state (|#: | form) |#: form |)
+
+;;; reduce according to the rule form -> #: form
+(define-lisp-action (|#: form | t)
+  (reduce-rule uninterned-symbol-form 2))
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;




More information about the Climacs-cvs mailing list