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

Pascal Fong Kye pfong at common-lisp.net
Fri Apr 29 20:10:33 UTC 2005


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

Modified Files:
	cl-syntax.lisp 
Log Message:
fixed some bugs in balanced comment, fun-expr, vect-expr.line-comment not working as it should be
Date: Fri Apr 29 22:10:32 2005
Author: pfong

Index: climacs/cl-syntax.lisp
diff -u climacs/cl-syntax.lisp:1.11 climacs/cl-syntax.lisp:1.12
--- climacs/cl-syntax.lisp:1.11	Wed Apr 27 16:02:03 2005
+++ climacs/cl-syntax.lisp	Fri Apr 29 22:10:32 2005
@@ -56,7 +56,7 @@
 (defclass double-quote (cl-lexeme) ())
 (defclass hex (cl-lexeme) ())
 (defclass pipe (cl-lexeme) ())
-(defclass semicolon (cl-lexeme) ())
+(defclass line-comment-entry (cl-lexeme) ())
 (defclass backquote (cl-lexeme) ())
 (defclass at (cl-lexeme) ())
 (defclass backslash (cl-lexeme) ())
@@ -88,9 +88,11 @@
 	(#\+ (fo) (make-instance 'plus-symbol))
 	(#\- (fo) (make-instance 'minus-symbol))
 	(#\; (fo) (loop until (end-of-buffer-p scan)
-		     while (eql (object-after scan) #\;)
+		        until (eql (object-after scan) #\Newline)
 		     do (fo))
-	     (make-instance 'semicolon))
+	     (if (end-of-buffer-p scan)
+		 (make-instance 'other-entry) 
+		 (make-instance 'line-comment-entry)))
 	(t (cond ((digit-char-p object) 
 		  (loop until (end-of-buffer-p scan)
 		     while (digit-char-p (object-after scan))
@@ -161,7 +163,6 @@
 
 (defclass empty-item (cl-entry) ())
 
-
 (defmethod display-parse-tree ((entity empty-item) (syntax cl-syntax) pane)
   (declare (ignore pane))
   nil)
@@ -173,11 +174,11 @@
 
 (add-cl-rule (token-char -> (default-item) :item default-item))
 (add-cl-rule (token-char -> (comma) :item comma))
-(add-cl-rule (token-char -> (semicolon) :item semicolon))
 (add-cl-rule (token-char -> (backquote) :item backquote))
 (add-cl-rule (token-char -> (at) :item at))
 (add-cl-rule (token-char -> (plus-symbol) :item plus-symbol))
 (add-cl-rule (token-char -> (minus-symbol) :item minus-symbol))
+(add-cl-rule (token-char -> (pipe) :item pipe))
 
 (defmethod display-parse-tree ((entity token-char) (syntax cl-syntax) pane)
   (with-slots (item) entity
@@ -219,6 +220,7 @@
 (add-cl-rule (string-item -> (backslash) :item backslash))
 (add-cl-rule (string-item -> (slash) :item slash))
 (add-cl-rule (string-item -> (dot) :item dot))
+(add-cl-rule (string-item -> (line-comment-entry) :item line-comment-entry))
 
 
 (define-list string-items empty-string-items
@@ -274,28 +276,47 @@
   (with-slots (item) entity
     (display-parse-tree item syntax pane)))
 
+;;;;;;;;;;;;; line-comment
+
+(defclass line-comment (cl-item) ())
+
+(add-cl-rule (line-comment -> ((item line-comment-entry)) :item item))
+
+(defmethod display-parse-tree ((entity line-comment) (syntax cl-syntax) pane)
+  (with-slots (item) entity
+    (with-drawing-options (pane :ink (make-rgb-color 0.6 0.16 0.3))
+      (display-parse-tree item syntax pane))))
 
 ;;;;;;;;;;;;; balanced-comment
 
 (defclass balanced-comment (cl-entry)
   ((start-hex :initarg :start-hex)
+   (start-pipe :initarg :start-pipe)
    (item :initarg :item)
+   (end-pipe :initarg :end-pipe)
    (end-hex :initarg :end-hex)))
 
 (add-cl-rule (balanced-comment -> ((start-hex hex)
-				   (item identifier-compound (= (end-offset start-hex)
-								(start-offset item)))
-				   (end-hex hex (= (end-offset item)
+				   (start-pipe pipe (= (end-offset
+							start-hex)
+						       (start-offset start-pipe)))
+				   (item identifier-items)
+				   (end-pipe pipe)
+				   (end-hex hex (= (end-offset end-pipe)
 						   (start-offset end-hex))))
 			       :start-hex start-hex
+			       :start-pipe start-pipe
 			       :item item
+			       :end-pipe end-pipe
 			       :end-hex end-hex))
 
 (defmethod display-parse-tree ((entity balanced-comment) (syntax cl-syntax) pane)
-  (with-slots (start-hex item end-hex) entity
+  (with-slots (start-hex start-pipe item end-pipe end-hex) entity
     (with-drawing-options (pane :ink (make-rgb-color 0.6 0.16 0.3))
       (display-parse-tree start-hex syntax pane)
+      (display-parse-tree start-pipe syntax pane)
       (display-parse-tree item syntax pane)
+      (display-parse-tree end-pipe syntax pane)
       (display-parse-tree end-hex syntax pane)))) 
 
 ;;;;;;;;;;;;; string
@@ -697,7 +718,8 @@
    (quoted-expr :initarg :quoted-expr)))
 
 (add-cl-rule (fun-expr -> ((start hex)
-			   (quoted-expr quoted-expr))
+			   (quoted-expr quoted-expr (= (end-offset start)
+						       (start-offset quoted-expr))))
 		       :start start :quoted-expr quoted-expr))
 
 (defmethod display-parse-tree ((entity fun-expr) (syntax cl-syntax) pane)
@@ -714,7 +736,8 @@
    (list-expr :initarg :list-expr)))
 
 (add-cl-rule (vect-expr -> ((start hex)
-			    (list-expr list-expr))
+			    (list-expr list-expr (= (end-offset start)
+						    (start-offset list-expr))))
 			:start start :list-expr list-expr))
 
 (defmethod display-parse-tree ((entity vect-expr) (syntax cl-syntax) pane)
@@ -838,6 +861,7 @@
 (add-cl-rule (cl-terminal -> (read-time-conditional-plus) :item read-time-conditional-plus))
 (add-cl-rule (cl-terminal -> (read-time-conditional-minus) :item read-time-conditional-minus))
 (add-cl-rule (cl-terminal -> (read-time-evaluation) :item read-time-evaluation))
+(add-cl-rule (cl-terminal -> (line-comment) :item line-comment))
 
 (define-list cl-terminals empty-cl-terminals
   nonempty-cl-terminals cl-terminal)




More information about the Climacs-cvs mailing list