Function: antlr-insert-makefile-rules
antlr-insert-makefile-rules is a byte-compiled function defined in
antlr-mode.el.gz.
Signature
(antlr-insert-makefile-rules &optional IN-MAKEFILE)
Documentation
Insert Makefile rules in the current buffer at point.
This function is for ANTLR v2 grammars only.
IN-MAKEFILE is non-nil, if the current buffer is the Makefile. See
command antlr-show-makefile-rules for detail.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/antlr-mode.el.gz
(defun antlr-insert-makefile-rules (&optional in-makefile)
"Insert Makefile rules in the current buffer at point.
This function is for ANTLR v2 grammars only.
IN-MAKEFILE is non-nil, if the current buffer is the Makefile. See
command `antlr-show-makefile-rules' for detail."
(let* ((dirname default-directory)
(deps0 (antlr-directory-dependencies dirname))
(classes (car deps0)) ; CLASS -> (FILE . EVOCAB) ...
(deps (cdr deps0)) ; FILE -> (c . s) (ev . iv) . LANGUAGE
(with-error nil)
(gen-sep (or (cl-caddr (cadr antlr-makefile-specification)) " "))
(n (and (cdr deps) (cadr antlr-makefile-specification) 0)))
(or in-makefile (set-buffer standard-output))
(dolist (dep deps)
(let ((supers (cl-cdadr dep))
(lang (cdr (assoc (cl-cdddr dep) antlr-file-formats-alist))))
(if n (cl-incf n))
(antlr-makefile-insert-variable n "" " =")
(if supers
(insert " "
(format (cadr antlr-special-file-formats)
(file-name-sans-extension (car dep)))))
(dolist (class-def (cl-caadr dep))
(let ((sep gen-sep))
(dolist (class-file (cadr lang))
(insert sep (format class-file (car class-def)))
(setq sep " "))))
(dolist (evocab (cl-caaddr dep))
(let ((sep gen-sep))
(dolist (vocab-file (cons (car antlr-special-file-formats)
(car lang)))
(insert sep (format vocab-file evocab))
(setq sep " "))))
(antlr-makefile-insert-variable n "\n$(" ")")
(insert ": " (car dep))
(dolist (ivocab (cl-cdaddr dep))
(insert " " (format (car antlr-special-file-formats) ivocab)))
(let ((glibs (antlr-superclasses-glibs supers classes)))
(if (cadr glibs) (setq with-error t))
(dolist (super (cddr glibs))
(insert " " (car super))
(if (cdr super)
(insert " " (format (car antlr-special-file-formats)
(cdr super)))))
(insert "\n\t"
(cl-caddr antlr-makefile-specification)
(car glibs)
" $<\n"
(car antlr-makefile-specification)))))
(if n
(let ((i 0))
(antlr-makefile-insert-variable nil "" " =")
(while (<= (cl-incf i) n)
(antlr-makefile-insert-variable i " $(" ")"))
(insert "\n" (car antlr-makefile-specification))))
(if (bobp)
(setq with-error t)
(if (string-equal (car antlr-makefile-specification) "\n")
(delete-char -1)))
(when with-error
(goto-char (point-min))
(insert antlr-help-unknown-file-text))
(unless in-makefile
(copy-region-as-kill (point-min) (point-max))
(goto-char (point-min))
(insert (format (substitute-command-keys antlr-help-rules-intro)
dirname)))))