brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · e53ffe8 Raw
71 lines · plain
1;;; llvm-mir-mode.el --- Major mode for LLVM Machine IR2 3;; Maintainer:  The LLVM team, http://llvm.org/4;; Version: 1.05 6;;; Commentary:7 8;; Major mode for editing LLVM MIR files.9 10;;; Code:11 12(require 'llvm-mode)13 14(defvar llvm-mir-mode-map15  (let ((map (make-sparse-keymap)))16    map)17  "Keymap for `llvm-mir-mode'.")18 19(defvar llvm-mir-mode-syntax-table20  (let ((st (make-syntax-table)))21    (modify-syntax-entry ?% "_" st)22    (modify-syntax-entry ?$ "_" st)23    (modify-syntax-entry ?. "_" st)24    (modify-syntax-entry ?# "< " st)25    (modify-syntax-entry ?\; "< " st)26    (modify-syntax-entry ?\n "> " st)27    st)28  "Syntax table for `llvm-mir-mode'.")29 30(defvar llvm-mir-font-lock-keywords31  (append32   (list33    ; YAML Attributes34    '("^name: +\\([a-zA-Z._][-a-zA-Z._0-9]*\\)"35      1 font-lock-function-name-face)36    '("^body: +|" . font-lock-keyword-face)37    '("^[a-zA-Z_.][-a-zA-Z._0-9]*:" . font-lock-keyword-face)38    `(,(regexp-opt '("true" "false")) . font-lock-constant-face)39    ; YAML separators40    '("^\\(---\\( |\\)?\\|\\.\\.\\.\\)$" . font-lock-comment-face)41    ; Registers42    '("%[a-zA-Z_.][-a-zA-Z._0-9]*" . font-lock-variable-name-face)43    '("%[0-9]+\\(\\.[a-zA-Z._0-9]+\\)?" . font-lock-variable-name-face)44    '("$[a-zA-Z_.][-a-zA-Z._0-9]*" . font-lock-constant-face)45    ; Register classes46    `(,(concat47        "%\\([a-zA-Z_.][-a-zA-Z._0-9]*\\|[0-9]+\\(\\.[a-zA-Z._0-9]+\\)?\\)"48        "\\(:[a-zA-Z_.][-a-zA-Z._0-9]*\\)")49      3 font-lock-type-face)50    '("class: \\([a-zA-Z_.][-a-zA-Z._0-9]*\\)" 1 font-lock-type-face)51    ; MO Register flags52    `(,(regexp-opt '("dead" "debug-use" "def" "early-clobber" "implicit"53                     "implicit-def" "internal" "killed" "renamable" "undef")54                   'symbols)55      . font-lock-keyword-face))56   llvm-font-lock-keywords)57  "Keyword highlighting specification for `llvm-mir-mode'.")58 59;;;###autoload60(define-derived-mode llvm-mir-mode prog-mode "LLVM MIR"61  "A major mode for editing LLVM MIR files."62  (setq-local comment-start "; ")63  (setq-local font-lock-defaults `(llvm-mir-font-lock-keywords)))64 65;;;###autoload66(add-to-list 'auto-mode-alist (cons "\\.mir\\'" 'llvm-mir-mode))67 68(provide 'llvm-mir-mode)69 70;;; llvm-mir-mode.el ends here71