Function: wisent--make-parser-1

wisent--make-parser-1 is a byte-compiled function defined in grammar.el.gz.

Signature

(wisent--make-parser-1 INFILE &optional OUTDIR)

Source Code

;; Defined in /usr/src/emacs/lisp/cedet/semantic/wisent/grammar.el.gz
;; Cf bovine--make-parser-1.
(defun wisent--make-parser-1 (infile &optional outdir)
  (if outdir (setq outdir (file-name-directory (expand-file-name outdir))))
  (let ((packagename
	 ;; This is with-demoted-errors.
	 (condition-case err
	     (with-current-buffer (find-file-noselect infile)
	       (if outdir (setq default-directory outdir))
	       (semantic-grammar-create-package t t))
	   (error (message "%s" (error-message-string err)) nil)))
	output-data)
    (when (setq output-data (assoc packagename wisent-make-parsers--parser-file-name))
      (let ((additional-copyright (nth 1 output-data))
	    (additional-license   (nth 2 output-data))
	    (filename (expand-file-name
		       (progn (string-match ".*/\\(.*\\)" packagename)
			      (match-string 1 packagename))
		       outdir))
	    copyright-end)
	;; Touch up the generated parsers for Emacs integration.
	(with-temp-file filename
	  (insert-file-contents filename)
	  ;; Fix copyright header:
	  (goto-char (point-min))
	  (when additional-copyright
	    (re-search-forward "Copyright (C).*$")
	    (insert "\n;; " additional-copyright))
	  (re-search-forward "^;; Author:")
	  (setq copyright-end (match-beginning 0))
	  (re-search-forward "^;;; Code:\n")
	  (delete-region copyright-end (match-end 0))
	  (goto-char copyright-end)
	  (insert wisent-make-parsers--emacs-license)
	  (insert "\n\n;;; Commentary:
;;
;; This file was generated from admin/grammars/"
		  (file-name-nondirectory infile) ".")
	  (when additional-license
	    (insert "\n" additional-license))
	  (insert "\n\n;;; Code:\n")
	  (goto-char (point-min))
	  (delete-region (point-min) (line-end-position))
	  (insert ";;; " packagename
		  " --- Generated parser support file  "
		  "-*- lexical-binding:t -*-")
	  (re-search-forward ";;; \\(.*\\) ends here")
	  (replace-match packagename nil nil nil 1)
	  (delete-trailing-whitespace))))))