[climacs-cvs] CVS update: climacs/prolog-syntax.lisp
Christophe Rhodes
crhodes at common-lisp.net
Tue Nov 1 12:31:55 UTC 2005
Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv17378
Modified Files:
prolog-syntax.lisp
Log Message:
Fix display of -1 and -1.0
Implement FIRST-LEXEME to get -(1,2) and - (1,2) right.
Date: Tue Nov 1 13:31:53 2005
Author: crhodes
Index: climacs/prolog-syntax.lisp
diff -u climacs/prolog-syntax.lisp:1.24 climacs/prolog-syntax.lisp:1.25
--- climacs/prolog-syntax.lisp:1.24 Tue Nov 1 11:45:45 2005
+++ climacs/prolog-syntax.lisp Tue Nov 1 13:31:52 2005
@@ -513,7 +513,12 @@
(defmethod display-parse-tree
((entity constant-term) (syntax prolog-syntax) pane)
- (display-parse-tree (value entity) syntax pane))
+ ;; FIXME: this is so not the right thing.
+ (cond
+ ((consp (value entity))
+ (display-parse-tree (first (value entity)) syntax pane)
+ (display-parse-tree (second (value entity)) syntax pane))
+ (t (display-parse-tree (value entity) syntax pane))))
(defmethod display-parse-tree
((entity variable-term) (syntax prolog-syntax) pane)
(with-drawing-options (pane :ink (make-rgb-color 0.7 0.7 0.0))
@@ -1072,10 +1077,16 @@
'string)))
(defun first-lexeme (thing)
- ;; FIXME: we'll need to implement this.
- (declare (ignore thing))
- nil)
-
+ ;; KLUDGE: it might be "cleaner" to walk the various parsing
+ ;; structures, but this will do.
+ (let* ((syntax *this-syntax*)
+ (lexer (slot-value syntax 'lexer)))
+ (do ((i 0 (+ i 1)))
+ ((= i (nb-lexemes lexer)) (error "foo"))
+ (let ((lexeme (lexeme lexer i)))
+ (when (= (start-offset thing) (start-offset lexeme))
+ (return lexeme))))))
+
;;; update syntax
(defmethod update-syntax-for-display (buffer (syntax prolog-syntax) top bot)
More information about the Climacs-cvs
mailing list