;;; ebnf2ps.el --- translate an EBNF to a syntactic chart on PostScript
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-;; Free Software Foundation, Inc.
+;; Copyright (C) 1999-2012 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
(defconst ebnf-version "4.4"
"ebnf2ps.el, v 4.4 <2007/02/12 vinicius>
"*Specify extra width for arrow shape drawing.
The extra width is used to avoid that the arrowhead and the terminal border
-overlap. It depens on `ebnf-arrow-shape' and `ebnf-line-width'."
+overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'."
:type 'number
:version "22"
:group 'ebnf-shape)
See also `ebnf-print-buffer'."
(interactive
- (list (read-file-name "Directory containing EBNF files (print): "
- nil default-directory)))
+ (list (read-directory-name "Directory containing EBNF files (print): "
+ nil default-directory)))
(ebnf-log-header "(ebnf-print-directory %S)" directory)
(ebnf-directory 'ebnf-print-buffer directory))
See also `ebnf-spool-buffer'."
(interactive
- (list (read-file-name "Directory containing EBNF files (spool): "
- nil default-directory)))
+ (list (read-directory-name "Directory containing EBNF files (spool): "
+ nil default-directory)))
(ebnf-log-header "(ebnf-spool-directory %S)" directory)
(ebnf-directory 'ebnf-spool-buffer directory))
See also `ebnf-eps-buffer'."
(interactive
- (list (read-file-name "Directory containing EBNF files (EPS): "
- nil default-directory)))
+ (list (read-directory-name "Directory containing EBNF files (EPS): "
+ nil default-directory)))
(ebnf-log-header "(ebnf-eps-directory %S)" directory)
(ebnf-directory 'ebnf-eps-buffer directory))
See also `ebnf-syntax-buffer'."
(interactive
- (list (read-file-name "Directory containing EBNF files (syntax): "
- nil default-directory)))
+ (list (read-directory-name "Directory containing EBNF files (syntax): "
+ nil default-directory)))
(ebnf-log-header "(ebnf-syntax-directory %S)" directory)
(ebnf-directory 'ebnf-syntax-buffer directory))
% --- Corners
-%>corner Right Descendent: height arrow corner_RD
+%>corner Right Descendant: height arrow corner_RD
% _ | arrow
% / height > 0 | 0 - none
% | | 1 - right
Gstroke
}def
-%>corner Right Ascendent: height arrow corner_RA
+%>corner Right Ascendant: height arrow corner_RA
% | arrow
% | height > 0 | 0 - none
% / | 1 - right
Gstroke
}def
-%>corner Left Descendent: height arrow corner_LD
+%>corner Left Descendant: height arrow corner_LD
% _ | arrow
% \\ height > 0 | 0 - none
% | | 1 - right
Gstroke
}def
-%>corner Left Ascendent: height arrow corner_LA
+%>corner Left Ascendant: height arrow corner_LA
% | arrow
% | height > 0 | 0 - none
% \\ | 1 - right
/#ebnf2ps#dict 230 dict def
#ebnf2ps#dict begin
-% Initiliaze variables to avoid name-conflicting with document variables.
+% Initialize variables to avoid name-conflicting with document variables.
% This is the case when using `bind' operator.
/-fillp- 0 def /h 0 def
/-ox- 0 def /half 0 def
horizontal (memq (ebnf-node-action prod)
ebnf-action-list))
;; generate production in EPS buffer
- (save-excursion
- (set-buffer eps-buffer)
+ (with-current-buffer eps-buffer
(setq ebnf-eps-upper-x 0.0
ebnf-eps-upper-y 0.0
ebnf-eps-max-width prod-width
(ebnf-eps-finish-and-write eps-buffer
(ebnf-eps-filename prod-name)))
;; prepare for next loop
- (save-excursion
- (set-buffer eps-buffer)
+ (with-current-buffer eps-buffer
(erase-buffer))
(setq ebnf-tree (cdr ebnf-tree)))
;; write and kill temporary buffers
prod-width prod-height eps-buffer)
(while prod-list
(add-to-list file-list-sym (car prod-list))
- (save-excursion
- (set-buffer (get-buffer-create (concat " *" (car prod-list) "*")))
+ (with-current-buffer (get-buffer-create (concat " *" (car prod-list) "*"))
(goto-char (point-max))
(cond
;; first production
(when gen-func
(setq error-msg "EMPTY RULES"
tree (ebnf-eliminate-empty-rules tree))
- (setq error-msg "OPTMIZE"
+ (setq error-msg "OPTIMIZE"
tree (ebnf-optimize tree))
(setq error-msg "DIMENSIONS"
tree (ebnf-dimensions tree))
(defun ebnf-begin-file ()
(ps-flush-output)
- (save-excursion
- (set-buffer ps-spool-buffer)
+ (with-current-buffer ps-spool-buffer
(goto-char (point-min))
(and (search-forward "%%Creator: " nil t)
(not (search-forward "& ebnf2ps v"
- (save-excursion (end-of-line) (point))
+ (line-end-position)
t))
(progn
;; adjust creator comment
(defun ebnf-eps-finish-and-write (buffer filename)
(when (buffer-modified-p buffer)
- (save-excursion
- (set-buffer buffer)
+ (with-current-buffer buffer
(ebnf-eps-header-footer-set filename)
(setq ebnf-eps-upper-x (max ebnf-eps-upper-x ebnf-eps-max-width)
ebnf-eps-upper-y (if (zerop ebnf-eps-upper-y)
(defun ebnf-make-terminal1 (name gen-func dim-func)
- (vector gen-func ; 0 generatore
+ (vector gen-func ; 0 generator
'ignore ; 1 width fun
dim-func ; 2 dimension fun
0.0 ; 3 entry
(defun ebnf-log (format-str &rest args)
(when ebnf-log
- (save-excursion
- (set-buffer (get-buffer-create "*Ebnf2ps Log*"))
+ (with-current-buffer (get-buffer-create "*Ebnf2ps Log*")
(goto-char (point-max))
(insert (apply 'format format-str args) "\n"))))
(provide 'ebnf2ps)
-;;; arch-tag: 148bc8af-5398-468b-b922-eeb7afef3e4f
;;; ebnf2ps.el ends here