Variable: semantic-lex-punctuation-type

semantic-lex-punctuation-type is a variable defined in lex.el.gz.

Value

((and (looking-at "\\(\\s.\\|\\s$\\|\\s'\\)+")
      (let*
	  ((key (match-string 0)) (pos (match-beginning 0))
	   (end (match-end 0)) (len (- end pos))
	   (lst (semantic-lex-type-value "punctuation" t))
	   (def (car lst)) (lst (cdr lst)) (elt nil))
	(if lst
	    (while (and (> len 0) (not (setq elt (rassoc key lst))))
	      (setq len (1- len) key (substring key 0 len))))
	(if elt
	    (semantic-lex-push-token
	     (semantic-lex-token (car elt) pos (+ pos len)))
	  (if def
	      (semantic-lex-push-token
	       (semantic-lex-token def pos end)))))))

Documentation

Detect and create a punctuation type token.

Recognized punctuation is defined in the current table of lexical types, as the value of the punctuation token type.

Source Code

;; Defined in /usr/src/emacs/lisp/cedet/semantic/lex.el.gz
(define-lex-analyzer semantic-lex-punctuation-type
  "Detect and create a punctuation type token.
Recognized punctuation is defined in the current table of lexical
types, as the value of the `punctuation' token type."
  (and (looking-at "\\(\\s.\\|\\s$\\|\\s'\\)+")
       (let* ((key (match-string 0))
              (pos (match-beginning 0))
              (end (match-end 0))
              (len (- end pos))
              (lst (semantic-lex-type-value "punctuation" t))
              (def (car lst)) ;; default lexical symbol or nil
              (lst (cdr lst)) ;; alist of (LEX-SYM . PUNCT-STRING)
              (elt nil))
         (if lst
             ;; Starting with the longest one, search if the
             ;; punctuation string is defined for this language.
             (while (and (> len 0) (not (setq elt (rassoc key lst))))
               (setq len (1- len)
                     key (substring key 0 len))))
         (if elt ;; Return the punctuation token found
             (semantic-lex-push-token
	      (semantic-lex-token (car elt) pos (+ pos len)))
           (if def ;; Return a default generic token
               (semantic-lex-push-token
		(semantic-lex-token def pos end))
             ;; Nothing match
             )))))