Function: semantic-grammar--lex-block-specs
semantic-grammar--lex-block-specs is a byte-compiled function defined
in grammar.el.gz.
Signature
(semantic-grammar--lex-block-specs)
Documentation
Compute lexical block specifications for the current buffer.
Block definitions are read from the current table of lexical types.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/grammar.el.gz
(defun semantic-grammar--lex-block-specs ()
"Compute lexical block specifications for the current buffer.
Block definitions are read from the current table of lexical types."
(cond
;; Block specifications have been parsed and are invalid.
((eq semantic-grammar--lex-block-specs 'error)
nil
)
;; Parse block specifications.
((null semantic-grammar--lex-block-specs)
(condition-case err
(let* ((blocks (cdr (semantic-lex-type-value "block" t)))
(open-delims (cdr (semantic-lex-type-value "open-paren" t)))
(close-delims (cdr (semantic-lex-type-value "close-paren" t)))
olist clist delim-spec open-spec close-spec)
(dolist (block-spec blocks)
(setq delim-spec (semantic-grammar--lex-delim-spec block-spec)
open-spec (assq (car delim-spec) open-delims)
close-spec (assq (cadr delim-spec) close-delims))
(or open-spec
(error "Missing open-paren token %s required by block %s"
(car delim-spec) (car block-spec)))
(or close-spec
(error "Missing close-paren token %s required by block %s"
(cdr delim-spec) (car block-spec)))
;; build alist ((OPEN-DELIM OPEN-SYM BLOCK-SYM) ...)
(push (list (cdr open-spec) (car open-spec) (car block-spec))
olist)
;; build alist ((CLOSE-DELIM CLOSE-SYM) ...)
(push (list (cdr close-spec) (car close-spec))
clist))
(setq semantic-grammar--lex-block-specs (cons olist clist)))
(error
(setq semantic-grammar--lex-block-specs 'error)
(message "%s" (error-message-string err))
nil))
)
;; Block specifications already parsed.
(t
semantic-grammar--lex-block-specs)))