Function: semantic-grammar-mode
semantic-grammar-mode is an interactive and byte-compiled function
defined in grammar.el.gz.
Signature
(semantic-grammar-mode)
Documentation
Initialize a buffer for editing Semantic grammars.
% semantic-grammar-electric-punctuation
( semantic-grammar-electric-punctuation
) semantic-grammar-electric-punctuation
: semantic-grammar-electric-punctuation
; semantic-grammar-electric-punctuation
C-M-i semantic-grammar-complete
C-c C-c semantic-grammar-create-package
C-c i k semantic-grammar-insert-keyword
C-c m semantic-grammar-find-macro-expander
TAB semantic-grammar-indent
| semantic-grammar-electric-punctuation
This mode runs the hook semantic-grammar-mode-hook, as the final or
penultimate step during initialization.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/grammar.el.gz
(define-derived-mode semantic-grammar-mode
fundamental-mode "Semantic Grammar Framework"
"Initialize a buffer for editing Semantic grammars.
\\{semantic-grammar-mode-map}"
(setq-local parse-sexp-ignore-comments t)
(setq-local comment-start ";;")
;; Look within the line for a ; following an even number of backslashes
;; after either a non-backslash or the line beginning.
(setq-local comment-start-skip
"\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
(setq-local indent-line-function #'semantic-grammar-indent)
(setq-local fill-paragraph-function #'lisp-fill-paragraph)
(setq-local font-lock-multiline 'undecided)
(setq-local font-lock-defaults
'((semantic-grammar-mode-keywords
semantic-grammar-mode-keywords-1
semantic-grammar-mode-keywords-2
semantic-grammar-mode-keywords-3)
nil ;; perform string/comment fontification
nil ;; keywords are case sensitive.
;; This puts _ & - as a word constituent,
;; simplifying our keywords significantly
((?_ . "w") (?- . "w"))))
;; Setup Semantic to parse grammar
(semantic-grammar-wy--install-parser)
(setq semantic-lex-comment-regex ";;"
semantic-lex-analyzer #'semantic-grammar-lexer
semantic-type-relation-separator-character '(":")
semantic-symbol->name-assoc-list
'(
(code . "Setup Code")
(keyword . "Keyword")
(token . "Token")
(nonterminal . "Nonterminal")
(rule . "Rule")
))
(setq-local semantic-format-face-alist
'((code . default)
(keyword . font-lock-keyword-face)
(token . font-lock-type-face)
(nonterminal . font-lock-function-name-face)
(rule . default)))
(setq-local semantic-stickyfunc-sticky-classes
'(nonterminal))
;; Before each change, clear the cached regexp used to highlight
;; macros local in this grammar.
(add-hook 'before-change-functions
#'semantic--grammar-clear-macros-regexp-2 nil t)
;; Handle safe re-parse of grammar rules.
(add-hook 'semantic-edits-new-change-functions
#'semantic-grammar-edits-new-change-hook-fcn
nil t))