;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:50:56 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/progmodes/ebnf2ps.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`ebnf2ps.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


#@273 ebnf2ps.el, v 3.6.1 <2001/09/24 vinicius>

Vinicius's last change version.  When reporting bugs, please also
report the version of Emacs, if any, that ebnf2ps was running with.

Please send all bug fixes and enhancements to
	Vinicius Jose Latorre <vinicius@cpqd.com.br>.

(defconst ebnf-version "3.6.1" (#$ . 627))
(byte-code "\301\302!\210\303\231\203 \304\305!\210\306\307\310\311\312\313\314\315&\210\306\316\310\317\320\321\314\322\314\307&	\210\306\323\310\324\320\321\312\325\314\316&	\210\306\326\310\327\320\321\312\330\314\316&	\210\306\331\310\332\320\321\312\333\314\316&	\210\306\334\310\335\320\321\312\336\314\316&	\210\306\337\310\340\320\321\312\341\314\316&	\210\306\342\310\343\320\321\312\344\314\316&	\210\306\345\310\346\320\321\312\347\314\316&	\210\306\350\310\351\320\321\312\352\314\316&	\210\306\353\310\354\320\321\312\355\314\316&	\210\306\356\310\357\320\321\312\360\314\316&	\207" [ps-print-version require ps-print "5.2.3" error "`ebnf2ps' requires `ps-print' package version 5.2.3 or later" custom-declare-group postscript nil "PostScript Group" :tag "PostScript" :group emacs ebnf2ps "Translate an EBNF to a syntatic chart on PostScript" :prefix "ebnf-" wp ebnf-special "Special customization" "Special" ebnf-except "Except customization" "Except" ebnf-repeat "Repeat customization" "Repeat" ebnf-terminal "Terminal customization" "Terminal" ebnf-non-terminal "Non-Terminal customization" "Non-Terminal" ebnf-production "Production customization" "Production" ebnf-shape "Shapes customization" "Shape" ebnf-displacement "Displacement customization" "Displacement" ebnf-syntatic "Syntatic customization" "Syntatic" ebnf-optimization "Optimization customization" "Optimization"] 10)
#@52 *Non-nil means productions are drawn horizontally.
(custom-declare-variable 'ebnf-horizontal-orientation 'nil '(#$ . -2350) :type 'boolean :group 'ebnf-displacement)
#@140 *Non-nil means to use maximum production height in horizontal orientation.

It is only used when `ebnf-horizontal-orientation' is non-nil.
(custom-declare-variable 'ebnf-horizontal-max-height 'nil '(#$ . -2523) :type 'boolean :group 'ebnf-displacement)
#@133 *Specify horizontal space in points between productions.

Value less or equal to zero forces ebnf2ps to set a proper default value.
(custom-declare-variable 'ebnf-production-horizontal-space '0.0 '(#$ . -2783) :type 'number :group 'ebnf-displacement)
#@131 *Specify vertical space in points between productions.

Value less or equal to zero forces ebnf2ps to set a proper default value.
(custom-declare-variable 'ebnf-production-vertical-space '0.0 '(#$ . -3041) :type 'number :group 'ebnf-displacement)
#@180 *Specify justification of terms in a sequence inside alternatives.

Valid values are:

   `left'		left justification
   `right'		right justification
   any other value	centralize
(custom-declare-variable 'ebnf-justify-sequence ''center '(#$ . -3295) :type '(radio :tag "Sequence Justification" (const left) (const right) (other :tag "center" center)) :group 'ebnf-displacement)
#@71 *Specify special font.

See documentation for `ebnf-production-font'.
(custom-declare-variable 'ebnf-special-font ''(7 Courier "Black" "Gray95" bold italic) '(#$ . -3679) :type '(list :tag "Special Font" (number :tag "Font Size") (symbol :tag "Font Name") (choice :tag "Foreground Color" (string :tag "Name") (other :tag "Default" nil)) (choice :tag "Background Color" (string :tag "Name") (other :tag "Default" nil)) (repeat :tag "Font Attributes" :inline t (choice (const bold) (const italic) (const underline) (const strikeout) (const overline) (const shadow) (const box) (const outline)))) :group 'ebnf-special)
#@79 *Specify special box shape.

See documentation for `ebnf-non-terminal-shape'.
(custom-declare-variable 'ebnf-special-shape ''bevel '(#$ . -4301) :type '(radio :tag "Special Shape" (const miter) (const round) (const bevel)) :group 'ebnf-special)
#@48 *Non-nil means special box will have a shadow.
(custom-declare-variable 'ebnf-special-shadow 'nil '(#$ . -4552) :type 'boolean :group 'ebnf-special)
#@40 *Specify border width for special box.
(custom-declare-variable 'ebnf-special-border-width '0.5 '(#$ . -4707) :type 'number :group 'ebnf-special)
#@40 *Specify border color for special box.
(custom-declare-variable 'ebnf-special-border-color '"Black" '(#$ . -4859) :type 'string :group 'ebnf-special)
#@70 *Specify except font.

See documentation for `ebnf-production-font'.
(custom-declare-variable 'ebnf-except-font ''(7 Courier "Black" "Gray90" bold italic) '(#$ . -5015) :type '(list :tag "Except Font" (number :tag "Font Size") (symbol :tag "Font Name") (choice :tag "Foreground Color" (string :tag "Name") (other :tag "Default" nil)) (choice :tag "Background Color" (string :tag "Name") (other :tag "Default" nil)) (repeat :tag "Font Attributes" :inline t (choice (const bold) (const italic) (const underline) (const strikeout) (const overline) (const shadow) (const box) (const outline)))) :group 'ebnf-except)
#@78 *Specify except box shape.

See documentation for `ebnf-non-terminal-shape'.
(custom-declare-variable 'ebnf-except-shape ''bevel '(#$ . -5633) :type '(radio :tag "Except Shape" (const miter) (const round) (const bevel)) :group 'ebnf-except)
#@47 *Non-nil means except box will have a shadow.
(custom-declare-variable 'ebnf-except-shadow 'nil '(#$ . -5880) :type 'boolean :group 'ebnf-except)
#@39 *Specify border width for except box.
(custom-declare-variable 'ebnf-except-border-width '0.25 '(#$ . -6032) :type 'number :group 'ebnf-except)
#@39 *Specify border color for except box.
(custom-declare-variable 'ebnf-except-border-color '"Black" '(#$ . -6182) :type 'string :group 'ebnf-except)
#@70 *Specify repeat font.

See documentation for `ebnf-production-font'.
(custom-declare-variable 'ebnf-repeat-font ''(7 Courier "Black" "Gray85" bold italic) '(#$ . -6335) :type '(list :tag "Repeat Font" (number :tag "Font Size") (symbol :tag "Font Name") (choice :tag "Foreground Color" (string :tag "Name") (other :tag "Default" nil)) (choice :tag "Background Color" (string :tag "Name") (other :tag "Default" nil)) (repeat :tag "Font Attributes" :inline t (choice (const bold) (const italic) (const underline) (const strikeout) (const overline) (const shadow) (const box) (const outline)))) :group 'ebnf-repeat)
#@78 *Specify repeat box shape.

See documentation for `ebnf-non-terminal-shape'.
(custom-declare-variable 'ebnf-repeat-shape ''bevel '(#$ . -6953) :type '(radio :tag "Repeat Shape" (const miter) (const round) (const bevel)) :group 'ebnf-repeat)
#@47 *Non-nil means repeat box will have a shadow.
(custom-declare-variable 'ebnf-repeat-shadow 'nil '(#$ . -7200) :type 'boolean :group 'ebnf-repeat)
#@39 *Specify border width for repeat box.
(custom-declare-variable 'ebnf-repeat-border-width '0.0 '(#$ . -7352) :type 'number :group 'ebnf-repeat)
#@39 *Specify border color for repeat box.
(custom-declare-variable 'ebnf-repeat-border-color '"Black" '(#$ . -7501) :type 'string :group 'ebnf-repeat)
#@72 *Specify terminal font.

See documentation for `ebnf-production-font'.
(custom-declare-variable 'ebnf-terminal-font ''(7 Courier "Black" "White") '(#$ . -7654) :type '(list :tag "Terminal Font" (number :tag "Font Size") (symbol :tag "Font Name") (choice :tag "Foreground Color" (string :tag "Name") (other :tag "Default" nil)) (choice :tag "Background Color" (string :tag "Name") (other :tag "Default" nil)) (repeat :tag "Font Attributes" :inline t (choice (const bold) (const italic) (const underline) (const strikeout) (const overline) (const shadow) (const box) (const outline)))) :group 'ebnf-terminal)
#@80 *Specify terminal box shape.

See documentation for `ebnf-non-terminal-shape'.
(custom-declare-variable 'ebnf-terminal-shape ''miter '(#$ . -8267) :type '(radio :tag "Terminal Shape" (const miter) (const round) (const bevel)) :group 'ebnf-terminal)
#@49 *Non-nil means terminal box will have a shadow.
(custom-declare-variable 'ebnf-terminal-shadow 'nil '(#$ . -8522) :type 'boolean :group 'ebnf-terminal)
#@41 *Specify border width for terminal box.
(custom-declare-variable 'ebnf-terminal-border-width '1.0 '(#$ . -8680) :type 'number :group 'ebnf-terminal)
#@41 *Specify border color for terminal box.
(custom-declare-variable 'ebnf-terminal-border-color '"Black" '(#$ . -8835) :type 'string :group 'ebnf-terminal)
#@159 *Specify how productions are sorted.

Valid values are:

   nil			don't sort productions.
   `ascending'		ascending sort.
   any other value	descending sort.
(custom-declare-variable 'ebnf-sort-production 'nil '(#$ . -8995) :type '(radio :tag "Production Sort" (const :tag "Ascending" ascending) (const :tag "Descending" descending) (other :tag "No Sort" nil)) :group 'ebnf-production)
#@825 *Specify production header font.

It is a list with the following form:

   (SIZE NAME FOREGROUND BACKGROUND ATTRIBUTE...)

Where:
SIZE is the font size.
NAME is the font name symbol.
ATTRIBUTE is one of the following symbols:
   bold      - use bold font.
   italic    - use italic font.
   underline - put a line under text.
   strikeout - like underline, but the line is in middle of text.
   overline  - like underline, but the line is over the text.
   shadow    - text will have a shadow.
   box       - text will be surrounded by a box.
   outline   - print characters as hollow outlines.
FOREGROUND is a foreground string color name; if it's nil, the default color is
"Black".
BACKGROUND is a background string color name; if it's nil, the default color is
"White".

See `ps-font-info-database' for valid font name.
(custom-declare-variable 'ebnf-production-font ''(10 Helvetica "Black" "White" bold) '(#$ . -9388) :type '(list :tag "Production Font" (number :tag "Font Size") (symbol :tag "Font Name") (choice :tag "Foreground Color" (string :tag "Name") (other :tag "Default" nil)) (choice :tag "Background Color" (string :tag "Name") (other :tag "Default" nil)) (repeat :tag "Font Attributes" :inline t (choice (const bold) (const italic) (const underline) (const strikeout) (const overline) (const shadow) (const box) (const outline)))) :group 'ebnf-production)
#@76 *Specify non-terminal font.

See documentation for `ebnf-production-font'.
(custom-declare-variable 'ebnf-non-terminal-font ''(7 Helvetica "Black" "White") '(#$ . -10768) :type '(list :tag "Non-Terminal Font" (number :tag "Font Size") (symbol :tag "Font Name") (choice :tag "Foreground Color" (string :tag "Name") (other :tag "Default" nil)) (choice :tag "Background Color" (string :tag "Name") (other :tag "Default" nil)) (repeat :tag "Font Attributes" :inline t (choice (const bold) (const italic) (const underline) (const strikeout) (const overline) (const shadow) (const box) (const outline)))) :group 'ebnf-non-terminal)
#@229 *Specify non-terminal box shape.

Valid values are:

   `miter'	+-------+
		|       |
		+-------+

   `round'	 -------
		(       )
		 -------

   `bevel'	/-------\
		|       |
		\-------/

Any other value is treated as `miter'.
(custom-declare-variable 'ebnf-non-terminal-shape ''round '(#$ . -11401) :type '(radio :tag "Non-Terminal Shape" (const miter) (const round) (const bevel)) :group 'ebnf-non-terminal)
#@53 *Non-nil means non-terminal box will have a shadow.
(custom-declare-variable 'ebnf-non-terminal-shadow 'nil '(#$ . -11818) :type 'boolean :group 'ebnf-non-terminal)
#@45 *Specify border width for non-terminal box.
(custom-declare-variable 'ebnf-non-terminal-border-width '1.0 '(#$ . -11989) :type 'number :group 'ebnf-non-terminal)
#@45 *Specify border color for non-terminal box.
(custom-declare-variable 'ebnf-non-terminal-border-color '"Black" '(#$ . -12157) :type 'string :group 'ebnf-non-terminal)
#@529 *Specify the arrow shape.

Valid values are:

   `none'	======

   `semi-up'	   *		   `transparent'  *
		    *				  |*
		=====*				  | *
						==+==*
						  | *
						  |*
						  *

   `semi-down'	=====*		   `hollow'	  *
		    *				  |*
		   *				  | *
						==+  *
						  | *
						  |*
						  *

   `simple'	   *		   `full'	  *
		    *				  |*
		=====*				  |X*
		    *				==+XX*
		   *				  |X*
						  |*
						  *

   `user'	See also documentation for variable `ebnf-user-arrow'.

Any other value is treated as `none'.
(custom-declare-variable 'ebnf-arrow-shape ''hollow '(#$ . -12330) :type '(radio :tag "Arrow Shape" (const none) (const semi-up) (const semi-down) (const simple) (const transparent) (const hollow) (const full) (const user)) :group 'ebnf-shape)
#@78 *Specify chart flow shape.

See documentation for `ebnf-non-terminal-shape'.
(custom-declare-variable 'ebnf-chart-shape ''round '(#$ . -13108) :type '(radio :tag "Chart Flow Shape" (const miter) (const round) (const bevel)) :group 'ebnf-shape)
#@1093 *Specify a sexp for user arrow shape (a PostScript code).

When evaluated, the sexp should return nil or a string containing PostScript
code.  PostScript code should draw a right arrow.

The anatomy of a right arrow is:

   ...... Initial position
   :
   :     *.................
   :     | *       }      }
   :     |   *     } hT4  }
   v     |     *   }      }
   ======+======*...      } hT2
   :     |     *:  }      }
   :     |   *  :  } hT4  }
   :     | *    :  }      }
   :     *.................
   :     :      :
   :     :      :..........
   :     :         } hT2  }
   :     :..........      } hT
   :               } hT2  }
   :.......................

Where `hT', `hT2' and `hT4' are predefined PostScript variable names that can
be used to generate your own arrow.  As these variables are used along
PostScript execution, *DON'T* modify the values of them.  Instead, copy the
values, if you need to modify them.

The relation between these variables is: hT = 2 * hT2 = 4 * hT4.

The variable `ebnf-user-arrow' is only used when `ebnf-arrow-shape' is set to
symbol `user'.
(custom-declare-variable 'ebnf-user-arrow 'nil '(#$ . -13360) :type '(sexp :tag "User Arrow Shape") :group 'ebnf-shape)
#@785 *Specify syntax to be recognized.

Valid values are:

   `ebnf'	ebnf2ps recognizes the syntax described in ebnf2ps
		documentation.
		The following variables *ONLY* have effect with this
		setting:
		`ebnf-terminal-regexp', `ebnf-case-fold-search',
		`ebnf-lex-comment-char' and `ebnf-lex-eop-char'.

   `iso-ebnf'	ebnf2ps recognizes the syntax described in the URL:
		`http://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html'
		("International Standard of the ISO EBNF Notation").
		The following variables *ONLY* have effect with this
		setting:
		`ebnf-iso-alternative-p' and `ebnf-iso-normalize-p'.

   `yacc'	ebnf2ps recognizes the Yacc/Bison syntax.
		The following variable *ONLY* has effect with this
		setting:
		`ebnf-yac-ignore-error-recovery'.

Any other value is treated as `ebnf'.
(custom-declare-variable 'ebnf-syntax ''ebnf '(#$ . -14579) :type '(radio :tag "Syntax" (const ebnf) (const iso-ebnf) (const yacc)) :group 'ebnf-syntatic)
#@84 *Specify the line comment character.

It's used only when `ebnf-syntax' is `ebnf'.
(custom-declare-variable 'ebnf-lex-comment-char '59 '(#$ . -15524) :type 'character :group 'ebnf-syntatic)
#@89 *Specify the end of production character.

It's used only when `ebnf-syntax' is `ebnf'.
(custom-declare-variable 'ebnf-lex-eop-char '46 '(#$ . -15720) :type 'character :group 'ebnf-syntatic)
#@271 *Specify how it's a terminal name.

If it's nil, the terminal name must be enclosed by `"'.
If it's a string, it should be a regexp that it'll be used to determine a
terminal name; terminal name may also be enclosed by `"'.

It's used only when `ebnf-syntax' is `ebnf'.
(custom-declare-variable 'ebnf-terminal-regexp 'nil '(#$ . -15918) :type '(radio :tag "Terminal Name" (const nil) regexp) :group 'ebnf-syntatic)
#@130 *Non-nil means ignore case on matching.

It's only used when `ebnf-terminal-regexp' is non-nil and when `ebnf-syntax' is
`ebnf'.
(custom-declare-variable 'ebnf-case-fold-search 'nil '(#$ . -16340) :type 'boolean :group 'ebnf-syntatic)
#@291 *Non-nil means use alternative ISO EBNF.

It's only used when `ebnf-syntax' is `iso-ebnf'.

This variable affects the following symbol set:

   STANDARD   ALTERNATIVE
      |    ==>   / or !
      [    ==>   (/
      ]    ==>   /)
      {    ==>   (:
      }    ==>   :)
      ;    ==>   .
(custom-declare-variable 'ebnf-iso-alternative-p 'nil '(#$ . -16582) :type 'boolean :group 'ebnf-syntatic)
#@230 *Non-nil means normalize ISO EBNF syntax names.

Normalize a name means that several contiguous spaces inside name become a
single space, so "A  B   C" is normalized to  "A B C".

It's only used when `ebnf-syntax' is `iso-ebnf'.
(custom-declare-variable 'ebnf-iso-normalize-p 'nil '(#$ . -16986) :type 'boolean :group 'ebnf-syntatic)
#@87 *Specify EPS prefix file name.

See `ebnf-eps-buffer' and `ebnf-eps-region' commands.
(custom-declare-variable 'ebnf-eps-prefix '"ebnf--" '(#$ . -17326) :type 'string :group 'ebnf2ps)
#@96 *Specify entry height on alternatives.

It must be a float between 0.0 (top) and 1.0 (bottom).
(custom-declare-variable 'ebnf-entry-percentage '0.5 '(#$ . -17516) :type 'number :group 'ebnf2ps)
#@82 *Specify additional border width over default terminal, non-terminal or
special.
(custom-declare-variable 'ebnf-default-width '0.6 '(#$ . -17716) :type 'number :group 'ebnf2ps)
#@27 *Non-nil means use color.
(custom-declare-variable 'ebnf-color-p '(or (fboundp 'x-color-values) (fboundp 'color-instance-rgb-components)) '(#$ . -17899) :type 'boolean :group 'ebnf2ps)
#@27 *Specify flow line width.
(custom-declare-variable 'ebnf-line-width '1.0 '(#$ . -18090) :type 'number :group 'ebnf2ps)
#@27 *Specify flow line color.
(custom-declare-variable 'ebnf-line-color '"Black" '(#$ . -18215) :type 'string :group 'ebnf2ps)
#@118 *Non-nil means to generate PostScript debug procedures.

It is intended to help PostScript programmers in debugging.
(custom-declare-variable 'ebnf-debug-ps 'nil '(#$ . -18345) :type 'boolean :group 'ebnf2ps)
#@260 *Non-nil means use `%f' float format.

The advantage of using float format is that ebnf2ps generates a little short
PostScript file.

If it occurs the error message:

   Invalid format operation %f

when executing ebnf2ps, set `ebnf-use-float-format' to nil.
(custom-declare-variable 'ebnf-use-float-format 't '(#$ . -18561) :type 'boolean :group 'ebnf2ps)
#@85 *Non-nil means ignore error recovery.

It's only used when `ebnf-syntax' is `yacc'.
(custom-declare-variable 'ebnf-yac-ignore-error-recovery 'nil '(#$ . -18924) :type 'boolean :group 'ebnf-syntatic)
#@135 *Non-nil means ignore empty rules.

It's interesting to set this variable if your Yacc/Bison grammar has a lot of
middle action rule.
(custom-declare-variable 'ebnf-ignore-empty-rule 'nil '(#$ . -19130) :type 'boolean :group 'ebnf-optimization)
#@734 *Non-nil means optimize syntatic chart of rules.

The following optimizations are done:

   left recursion:
   1.  A = B | A C.             ==>   A = B {C}*.
   2.  A = B | A B.             ==>   A = {B}+.
   3.  A =   | A B.             ==>   A = {B}*.
   4.  A = B | A C B.           ==>   A = {B || C}+.
   5.  A = B | D | A C | A E.   ==>   A = ( B | D ) { C | E }*.

   optional:
   6.  A = B | .                ==>   A = [B].
   7.  A =   | B .              ==>   A = [B].

   factoration:
   8.  A = B C | B D.           ==>   A = B (C | D).
   9.  A = C B | D B.           ==>   A = (C | D) B.
   10. A = B C E | B D E.       ==>   A = B (C | D) E.

The above optimizations are specially useful when `ebnf-syntax' is `yacc'.
(custom-declare-variable 'ebnf-optimize 'nil '(#$ . -19382) :type 'boolean :group 'ebnf-optimization)
#@31 Customization for ebnf group.
(defalias 'ebnf-customize #[nil "\300\301!\207" [customize-group ebnf2ps] 2 (#$ . 20223) nil])
#@498 Generate and print a PostScript syntatic chart image of the buffer.

When called with a numeric prefix argument (C-u), prompts the user for
the name of a file to save the PostScript image in, instead of sending
it to the printer.

More specifically, the FILENAME argument is treated as follows: if it
is nil, send the image to the printer.  If FILENAME is a string, save
the PostScript image in a file with that name.  If FILENAME is a
number, prompt the user for the name of the file to save in.
(defalias 'ebnf-print-buffer #[(&optional filename) "\301ed#\207" [filename ebnf-print-region] 4 (#$ . 20355) (list (ps-print-preprint current-prefix-arg))])
#@131 Generate and print a PostScript syntatic chart image of the region.
Like `ebnf-print-buffer', but prints just the current region.
(defalias 'ebnf-print-region #[(from to &optional filename) "\303\304!\210\305	\"\206 \306\n!\207" [from to filename run-hooks ebnf-hook ebnf-spool-region ps-do-despool] 3 (#$ . 21018) (list (point) (mark) (ps-print-preprint current-prefix-arg))])
#@262 Generate and spool a PostScript syntatic chart image of the buffer.
Like `ebnf-print-buffer' except that the PostScript image is saved in a
local buffer to be sent to the printer later.

Use the command `ebnf-despool' to send the spooled images to the printer.
(defalias 'ebnf-spool-buffer #[nil "\300ed\"\207" [ebnf-spool-region] 3 (#$ . 21405) nil])
#@214 Generate a PostScript syntatic chart image of the region and spool locally.
Like `ebnf-spool-buffer', but spools just the current region.

Use the command `ebnf-despool' to send the spooled images to the printer.
(defalias 'ebnf-spool-region #[(from to) "\302	\303#\207" [from to ebnf-generate-region ebnf-generate] 4 (#$ . 21764) "r"])
#@593 Generate a PostScript syntatic chart image of the buffer in a EPS file.

Indeed, for each production is generated a EPS file.
The EPS file name has the following form:

   <PREFIX><PRODUCTION>.eps

<PREFIX>     is given by variable `ebnf-eps-prefix'.
	     The default value is "ebnf--".

<PRODUCTION> is the production name.
	     The production name is mapped to form a valid file name.
	     For example, the production name "A/B + C" is mapped to
	     "A_B_+_C" and the EPS file name used is "ebnf--A_B_+_C.eps".

WARNING: It's *NOT* asked any confirmation to override an existing file.
(defalias 'ebnf-eps-buffer #[nil "\300ed\"\207" [ebnf-eps-region] 3 (#$ . 22109) nil])
#@593 Generate a PostScript syntatic chart image of the region in a EPS file.

Indeed, for each production is generated a EPS file.
The EPS file name has the following form:

   <PREFIX><PRODUCTION>.eps

<PREFIX>     is given by variable `ebnf-eps-prefix'.
	     The default value is "ebnf--".

<PRODUCTION> is the production name.
	     The production name is mapped to form a valid file name.
	     For example, the production name "A/B + C" is mapped to
	     "A_B_+_C" and the EPS file name used is "ebnf--A_B_+_C.eps".

WARNING: It's *NOT* asked any confirmation to override an existing file.
(defalias 'ebnf-eps-region #[(from to) "\303\304	\n\305#)\207" [ebnf-eps-executing from to t ebnf-generate-region ebnf-generate-eps] 4 (#$ . 22795) "r"])
(defalias 'ebnf-despool 'ps-despool)
#@49 Does a syntatic analysis of the current buffer.
(defalias 'ebnf-syntax-buffer #[nil "\300ed\"\207" [ebnf-syntax-region] 3 (#$ . 23585) nil])
#@39 Does a syntatic analysis of a region.
(defalias 'ebnf-syntax-region #[(from to) "\302	\303#\207" [from to ebnf-generate-region nil] 4 (#$ . 23732) "r"])
#@35 Return the current ebnf2ps setup.
(defalias 'ebnf-setup #[nil "\306\307\310	!\310\n!\f\310	!\310\n!\f\310!\310!\310!\310!\310!\310!\310!\310 !\310!!\310\"!\310#!$%&'\310(!)*\310+!,-./01234567&6\207" [ebnf-version ebnf-special-font ebnf-special-shape ebnf-special-shadow ebnf-special-border-width ebnf-special-border-color format "\n;;; ebnf2ps.el version %s\n\n(setq ebnf-special-font                %s\n      ebnf-special-shape               %s\n      ebnf-special-shadow              %S\n      ebnf-special-border-width        %S\n      ebnf-special-border-color        %S\n      ebnf-except-font                 %s\n      ebnf-except-shape                %s\n      ebnf-except-shadow               %S\n      ebnf-except-border-width         %S\n      ebnf-except-border-color         %S\n      ebnf-repeat-font                 %s\n      ebnf-repeat-shape                %s\n      ebnf-repeat-shadow               %S\n      ebnf-repeat-border-width         %S\n      ebnf-repeat-border-color         %S\n      ebnf-terminal-regexp             %S\n      ebnf-case-fold-search            %S\n      ebnf-terminal-font               %s\n      ebnf-terminal-shape              %s\n      ebnf-terminal-shadow             %S\n      ebnf-terminal-border-width       %S\n      ebnf-terminal-border-color       %S\n      ebnf-non-terminal-font           %s\n      ebnf-non-terminal-shape          %s\n      ebnf-non-terminal-shadow         %S\n      ebnf-non-terminal-border-width   %S\n      ebnf-non-terminal-border-color   %S\n      ebnf-sort-production             %s\n      ebnf-production-font             %s\n      ebnf-arrow-shape                 %s\n      ebnf-chart-shape                 %s\n      ebnf-user-arrow                  %s\n      ebnf-horizontal-orientation      %S\n      ebnf-horizontal-max-height       %S\n      ebnf-production-horizontal-space %S\n      ebnf-production-vertical-space   %S\n      ebnf-justify-sequence            %s\n      ebnf-lex-comment-char            ?\\%03o\n      ebnf-lex-eop-char                ?\\%03o\n      ebnf-syntax                      %s\n      ebnf-iso-alternative-p           %S\n      ebnf-iso-normalize-p             %S\n      ebnf-eps-prefix                  %S\n      ebnf-entry-percentage            %S\n      ebnf-color-p                     %S\n      ebnf-line-width                  %S\n      ebnf-line-color                  %S\n      ebnf-debug-ps                    %S\n      ebnf-use-float-format            %S\n      ebnf-yac-ignore-error-recovery   %S\n      ebnf-ignore-empty-rule           %S\n      ebnf-optimize                    %S)\n\n;;; ebnf2ps.el - end of settings\n" ps-print-quote ebnf-except-font ebnf-except-shape ebnf-except-shadow ebnf-except-border-width ebnf-except-border-color ebnf-repeat-font ebnf-repeat-shape ebnf-repeat-shadow ebnf-repeat-border-width ebnf-repeat-border-color ebnf-terminal-regexp ebnf-case-fold-search ebnf-terminal-font ebnf-terminal-shape ebnf-terminal-shadow ebnf-terminal-border-width ebnf-terminal-border-color ebnf-non-terminal-font ebnf-non-terminal-shape ebnf-non-terminal-shadow ebnf-non-terminal-border-width ebnf-non-terminal-border-color ebnf-sort-production ebnf-production-font ebnf-arrow-shape ebnf-chart-shape ebnf-user-arrow ebnf-horizontal-orientation ebnf-horizontal-max-height ebnf-production-horizontal-space ebnf-production-vertical-space ebnf-justify-sequence ebnf-lex-comment-char ebnf-lex-eop-char ebnf-syntax ebnf-iso-alternative-p ebnf-iso-normalize-p ebnf-eps-prefix ebnf-entry-percentage ebnf-color-p ebnf-line-width ebnf-line-color ebnf-debug-ps ebnf-use-float-format ebnf-yac-ignore-error-recovery ebnf-ignore-empty-rule ebnf-optimize] 55 (#$ . 23892)])
#@79 Used in functions `ebnf-reset-style', `ebnf-push-style' and
`ebnf-pop-style'.
(defvar ebnf-stack-style nil (#$ . 27663))
#@61 Used in functions `ebnf-apply-style' and `ebnf-push-style'.
(defvar ebnf-current-style 'default (#$ . 27790))
#@39 List of valid symbol custom variable.
(defconst ebnf-style-custom-list '(ebnf-special-font ebnf-special-shape ebnf-special-shadow ebnf-special-border-width ebnf-special-border-color ebnf-except-font ebnf-except-shape ebnf-except-shadow ebnf-except-border-width ebnf-except-border-color ebnf-repeat-font ebnf-repeat-shape ebnf-repeat-shadow ebnf-repeat-border-width ebnf-repeat-border-color ebnf-terminal-regexp ebnf-case-fold-search ebnf-terminal-font ebnf-terminal-shape ebnf-terminal-shadow ebnf-terminal-border-width ebnf-terminal-border-color ebnf-non-terminal-font ebnf-non-terminal-shape ebnf-non-terminal-shadow ebnf-non-terminal-border-width ebnf-non-terminal-border-color ebnf-sort-production ebnf-production-font ebnf-arrow-shape ebnf-chart-shape ebnf-user-arrow ebnf-horizontal-orientation ebnf-horizontal-max-height ebnf-production-horizontal-space ebnf-production-vertical-space ebnf-justify-sequence ebnf-lex-comment-char ebnf-lex-eop-char ebnf-syntax ebnf-iso-alternative-p ebnf-iso-normalize-p ebnf-eps-prefix ebnf-entry-percentage ebnf-color-p ebnf-line-width ebnf-line-color ebnf-debug-ps ebnf-use-float-format ebnf-yac-ignore-error-recovery ebnf-ignore-empty-rule ebnf-optimize) (#$ . 27906))
#@625 Style database.

Each element has the following form:

   (CUSTOM INHERITS (VAR . VALUE)...)

CUSTOM is a symbol name style.
INHERITS is a symbol name style from which the current style inherits the
context.  If INHERITS is nil, means that there is no inheritance.
VAR is a valid ebnf2ps symbol custom variable.  See `ebnf-style-custom-list'
for valid symbol variable.
VALUE is a sexp which it'll be evaluated to set the value to VAR.  So, don't
forget to quote symbols and constant lists.  See `default' style for an
example.

Don't handle this variable directly.  Use functions `ebnf-insert-style' and
`ebnf-merge-style'.
(defvar ebnf-style-database '((default nil (ebnf-special-font quote (7 Courier "Black" "Gray95" bold italic)) (ebnf-special-shape quote bevel) (ebnf-special-shadow) (ebnf-special-border-width . 0.5) (ebnf-special-border-color . "Black") (ebnf-except-font quote (7 Courier "Black" "Gray90" bold italic)) (ebnf-except-shape quote bevel) (ebnf-except-shadow) (ebnf-except-border-width . 0.25) (ebnf-except-border-color . "Black") (ebnf-repeat-font quote (7 Courier "Black" "Gray85" bold italic)) (ebnf-repeat-shape quote bevel) (ebnf-repeat-shadow) (ebnf-repeat-border-width . 0.0) (ebnf-repeat-border-color . "Black") (ebnf-terminal-regexp) (ebnf-case-fold-search) (ebnf-terminal-font quote (7 Courier "Black" "White")) (ebnf-terminal-shape quote miter) (ebnf-terminal-shadow) (ebnf-terminal-border-width . 1.0) (ebnf-terminal-border-color . "Black") (ebnf-non-terminal-font quote (7 Helvetica "Black" "White")) (ebnf-non-terminal-shape quote round) (ebnf-non-terminal-shadow) (ebnf-non-terminal-border-width . 1.0) (ebnf-non-terminal-border-color . "Black") (ebnf-sort-production) (ebnf-production-font quote (10 Helvetica "Black" "White" bold)) (ebnf-arrow-shape quote hollow) (ebnf-chart-shape quote round) (ebnf-user-arrow) (ebnf-horizontal-orientation) (ebnf-horizontal-max-height) (ebnf-production-horizontal-space . 0.0) (ebnf-production-vertical-space . 0.0) (ebnf-justify-sequence quote center) (ebnf-lex-comment-char . 59) (ebnf-lex-eop-char . 46) (ebnf-syntax quote ebnf) (ebnf-iso-alternative-p) (ebnf-iso-normalize-p) (ebnf-eps-prefix . "ebnf--") (ebnf-entry-percentage . 0.5) (ebnf-color-p or (fboundp 'x-color-values) (fboundp 'color-instance-rgb-components)) (ebnf-line-width . 1.0) (ebnf-line-color . "Black") (ebnf-debug-ps) (ebnf-use-float-format . t) (ebnf-yac-ignore-error-recovery) (ebnf-ignore-empty-rule) (ebnf-optimize)) (happy default (ebnf-justify-sequence quote left) (ebnf-lex-comment-char . 35) (ebnf-lex-eop-char . 59)) (iso-ebnf default (ebnf-syntax quote iso-ebnf)) (yacc default (ebnf-syntax quote yacc))) (#$ . 29125))
#@70 Insert a new style NAME with inheritance INHERITS and values VALUES.
(defalias 'ebnf-insert-style #[(name inherits &rest values) "\304	\"\203\f \305\306\"\210\304\n	\"\204 \305\307\n\"\210\n\310!BB	B\211\207" [name ebnf-style-database inherits values assoc error "Style name already exists: %s" "Style inheritance name does'nt exist: %s" ebnf-check-style-values] 4 (#$ . 31807) nil])
#@47 Merge values of style NAME with style VALUES.
(defalias 'ebnf-merge-style #[(name &rest values) "\306	\"\206 \307\310\"\311\n!\312\211\211\211\f\211AA\f\203H \f@\fA\f\306@\"\211\203A A\241\210\202  \fB\202  \f\237\244.\207" [name ebnf-style-database values check new elt assoc error "Style name does'nt exist: %s" ebnf-check-style-values nil val merge style] 7 (#$ . 32203) nil])
#@63 Set STYLE to current style.

It returns the old style symbol.
(defalias 'ebnf-apply-style #[(style) "\302	!\203	 	\207" [ebnf-current-style style ebnf-apply-style1] 3 (#$ . 32618) nil])
#@56 Reset current style.

It returns the old style symbol.
(defalias 'ebnf-reset-style #[(&optional style) "\302\303	\206 \304!\207" [ebnf-stack-style style nil ebnf-apply-style default] 2 (#$ . 32812) nil])
#@90 Push the current style and set STYLE to current style.

It returns the old style symbol.
(defalias 'ebnf-push-style #[(&optional style) "\211	B\n\203 \303\n!\210\207" [ebnf-current-style ebnf-stack-style style ebnf-apply-style] 3 (#$ . 33024) nil])
#@76 Pop a style and set it to current style.

It returns the old style symbol.
(defalias 'ebnf-pop-style #[nil "\301@!A\207" [ebnf-stack-style ebnf-apply-style] 2 (#$ . 33282) nil])
(defalias 'ebnf-apply-style1 #[(style) "\304	\"A\211\211@\203 \305\n@!\210\nA\211\203+ \n\211@@)\306\n\211@A)!L\210\202 )\207" [style ebnf-style-database value x assoc ebnf-apply-style1 eval] 5])
(defalias 'ebnf-check-style-values #[(values) "\303	\203 	@\n>\203 	@B	A\211\204 \237)\207" [style values ebnf-style-custom-list nil] 3])
(byte-code "\301B\306\301!\204\f \307\302B\306\302!\204 \310\303B\306\303!\204$ \310\304B\306\304!\2040 \311\312\304!\210\305B\306\305!\204@ \313\312\305!\210\314B\306\314!\204Q \315\f\312\314!\210\316B\306\316!\204b \317\312\316!\210\320B\306\320!\204s \321\312\320!\207" [current-load-list ebnf-eps-buffer-name ebnf-parser-func ebnf-eps-executing ebnf-eps-upper-x ebnf-eps-upper-y boundp " *EPS*" nil 0.0 make-variable-buffer-local 0.0 ebnf-eps-prod-width 0.0 ebnf-eps-max-height 0.0 ebnf-eps-max-width 0.0] 2)
#@100 List of EPS file name during parsing.

See section "Actions in Comments" in ebnf2ps documentation.
(defvar ebnf-eps-context nil (#$ . 34359))
#@349 Alist associating production name with EPS file name list.

Each element has the following form:

   (PRODUCTION EPS-FILENAME...)

PRODUCTION is the production name.
EPS-FILENAME is the EPS file name.

It's generated during parsing and used during EPS generation.

See `ebnf-eps-context' and section "Actions in Comments" in ebnf2ps
documentation.
(defvar ebnf-eps-production-list nil (#$ . 34508))
#@93 Alist associating values for `ebnf-arrow-shape'.

See documentation for `ebnf-arrow-shape'.
(defconst ebnf-arrow-shape-alist '((none . 0) (semi-up . 1) (semi-down . 2) (simple . 3) (transparent . 4) (hollow . 5) (full . 6) (user . 7)) (#$ . 34913))
#@166 Alist associating values from `ebnf-terminal-shape' to a bit vector.

See documentation for `ebnf-terminal-shape', `ebnf-non-terminal-shape' and
`ebnf-chart-shape'.
(defconst ebnf-terminal-shape-alist '((miter . 0) (round . 1) (bevel . 2)) (#$ . 35169))
(byte-code "\301B\306\301!\204\f \307\302B\306\302!\204 \307\303B\306\303!\204$ \307\304B\306\304!\2040 \307\305B\306\305!\204< \310\311B\306\311!\204I \310	\312B\306\312!\204V \310\n\313B\306\313!\204c \310\314B\306\314!\204p \310\f\315B\306\315!\204} \310\316B\306\316!\204\212 \310\317B\306\317!\204\227 \310\320B\306\320!\204\244 \310\321B\306\321!\204\261 \310\322B\306\322!\204\276 \310\323B\306\323!\204\313 \310\324B\306\324!\204\330 \310\325B\306\325!\204\345 \310\326B\306\326!\204\362 \310\327B\306\327!\204\377 \310\330B\306\330!\204\f\310\331B\306\331!\204\310\332B\306\332!\204&\310\333B\306\333!\2043\310\334B\306\334!\204@\310\335B\306\335!\204M\307\336B\306\336!\204Z\307\307\207" [current-load-list ebnf-limit ebnf-action ebnf-action-list ebnf-default-p ebnf-font-height-P boundp nil 0 ebnf-font-height-T ebnf-font-height-NT ebnf-font-height-S ebnf-font-height-E ebnf-font-height-R ebnf-font-width-P ebnf-font-width-T ebnf-font-width-NT ebnf-font-width-S ebnf-font-width-E ebnf-font-width-R ebnf-space-T ebnf-space-NT ebnf-space-S ebnf-space-E ebnf-space-R ebnf-basic-width ebnf-basic-height ebnf-vertical-space ebnf-horizontal-space ebnf-settings ebnf-fonts-required] 2)
#@60 This is intended to help debugging PostScript programming.
(defconst ebnf-debug "\n% === begin EBNF procedures to help debugging\n\n% Mark visually current point:  string debug\n/debug\n{/-s- exch def\n currentpoint\n gsave -s- show grestore\n gsave\n 20 20 rlineto\n 0 -40 rlineto\n -40 40 rlineto\n 0 -40 rlineto\n 20 20 rlineto\n stroke\n grestore\n moveto\n}def\n\n% Show number value:  number string debug-number\n/debug-number\n{gsave\n 20 0 rmoveto show ([) show 60 string cvs show (]) show\n grestore\n}def\n\n% === end   EBNF procedures to help debugging\n\n" (#$ . 36728))
#@26 EBNF PostScript prologue
(defconst ebnf-prologue "\n% === begin EBNF engine\n\n% --- Basic Definitions\n\n/fS F\n/SpaceS FontHeight 0.5 mul def\n/HeightS FontHeight FontHeight add def\n\n/fE F\n/SpaceE FontHeight 0.5 mul def\n/HeightE FontHeight FontHeight add def\n\n/fR F\n/SpaceR FontHeight 0.5 mul def\n/HeightR FontHeight FontHeight add def\n\n/fT F\n/SpaceT FontHeight 0.5 mul def\n/HeightT FontHeight FontHeight add def\n\n/fNT F\n/SpaceNT FontHeight 0.5 mul def\n/HeightNT FontHeight FontHeight add def\n\n/T HeightT HeightNT add 0.5 mul def\n/hT T 0.5 mul def\n/hT2 hT 0.5 mul def\n/hT4 hT 0.25 mul def\n\n/Er 0.1 def	% Error factor\n\n\n/c{currentpoint}bind def\n/xyi{/xi c /yi exch def def}bind def\n/xyo{/xo c /yo exch def def}bind def\n/xyp{/xp c /yp exch def def}bind def\n/xyt{/xt c /yt exch def def}bind def\n\n% vertical movement: x y height vm\n/vm{add moveto}bind def\n\n% horizontal movement: x y width hm\n/hm{3 -1 roll exch add exch moveto}bind def\n\n% set color: [R G B] SetRGB\n/SetRGB{aload pop setrgbcolor}bind def\n\n% filling gray area: gray-scale FillGray\n/FillGray{gsave setgray fill grestore}bind def\n\n% filling color area: [R G B] FillRGB\n/FillRGB{gsave SetRGB fill grestore}bind def\n\n/Stroke{LineWidth setlinewidth LineColor SetRGB stroke}bind def\n/StrokeShape{borderwidth setlinewidth bordercolor SetRGB stroke}bind def\n/Gstroke{gsave Stroke grestore}bind def\n\n% Empty Line: width EL\n/EL{0 rlineto Gstroke}bind def\n\n% --- Arrows\n\n/Down{hT2 neg hT4 neg rlineto}bind def\n\n/Arrow\n{hT2 neg hT4 rmoveto\n hT2 hT4 neg rlineto\n Down\n}bind def\n\n/ArrowPath{c newpath moveto Arrow closepath}bind def\n\n%>Right Arrow: RA\n%    \\\n% *---+\n%    /\n/RA-vector\n[{}					% 0 - none\n {hT2 neg hT4 rlineto}			% 1 - semi-up\n {Down}					% 2 - semi-down\n {Arrow}				% 3 - simple\n {Gstroke ArrowPath}			% 4 - transparent\n {Gstroke ArrowPath 1 FillGray}		% 5 - hollow\n {Gstroke ArrowPath LineColor FillRGB}	% 6 - full\n {Gstroke gsave UserArrow grestore}	% 7 - user\n]def\n\n/RA\n{hT 0 rlineto\n c\n RA-vector ArrowShape get exec\n Gstroke\n moveto\n}def\n\n% rotation DrawArrow\n/DrawArrow\n{gsave\n 0 0 translate\n rotate\n RA\n c\n grestore\n rmoveto\n}def\n\n%>Left Arrow: LA\n%  /\n% +---*\n%  \\\n/LA{180 DrawArrow}def\n\n%>Up Arrow: UA\n%  +\n% /|\\\n%  |\n%  *\n/UA{90 DrawArrow}def\n\n%>Down Arrow: DA\n%  *\n%  |\n% \\|/\n%  +\n/DA{270 DrawArrow}def\n\n% --- Corners\n\n%>corner Right Descendent: height arrow corner_RD\n%   _             | arrow\n%  /   height > 0 |  0 - none\n% |               |  1 - right\n% *    ---------- |  2 - left\n% |               |  3 - vertical\n%  \\   height < 0 |\n%   -             |\n/cRD0-vector\n[% 0 - none\n {0 h rlineto\n  hT 0 rlineto}\n % 1 - right\n {0 h rlineto\n  RA}\n % 2 - left\n {hT 0 rmoveto xyi\n  LA\n  0 h neg rlineto\n  xi yi moveto}\n % 3 - vertical\n {hT h rmoveto xyi\n  hT neg 0 rlineto\n  h 0 gt{DA}{UA}ifelse\n  xi yi moveto}\n]def\n\n/cRD-vector\n[{cRD0-vector arrow get exec}	% 0 - miter\n {0 0 0 h hT h rcurveto}	% 1 - rounded\n {hT h rlineto}			% 2 - bevel\n]def\n\n/corner_RD\n{/arrow exch def /h exch def\n cRD-vector ChartShape get exec\n Gstroke\n}def\n\n%>corner Right Ascendent: height arrow corner_RA\n%                 | arrow\n%    | height > 0 |  0 - none\n%   /             |  1 - right\n% *-   ---------- |  2 - left\n%   \\             |  3 - vertical\n%    | height < 0 |\n%                 |\n/cRA0-vector\n[% 0 - none\n {hT 0 rlineto\n  0 h rlineto}\n % 1 - right\n {RA\n  0 h rlineto}\n % 2 - left\n {hT h rmoveto xyi\n  0 h neg rlineto\n  LA\n  xi yi moveto}\n % 3 - vertical\n {hT h rmoveto xyi\n  h 0 gt{DA}{UA}ifelse\n  hT neg 0 rlineto\n  xi yi moveto}\n]def\n\n/cRA-vector\n[{cRA0-vector arrow get exec}	% 0 - miter\n {0 0 hT 0 hT h rcurveto}	% 1 - rounded\n {hT h rlineto}			% 2 - bevel\n]def\n\n/corner_RA\n{/arrow exch def /h exch def\n cRA-vector ChartShape get exec\n Gstroke\n}def\n\n%>corner Left Descendent: height arrow corner_LD\n%  _              | arrow\n%   \\  height > 0 |  0 - none\n%    |            |  1 - right\n%    * ---------- |  2 - left\n%    |            |  3 - vertical\n%   /  height < 0 |\n%  -              |\n/cLD0-vector\n[% 0 - none\n {0 h rlineto\n  hT neg 0 rlineto}\n % 1 - right\n {hT neg h rmoveto xyi\n  RA\n  0 h neg rlineto\n  xi yi moveto}\n % 2 - left\n {0 h rlineto\n  LA}\n % 3 - vertical\n {hT neg h rmoveto xyi\n  hT 0 rlineto\n  h 0 gt{DA}{UA}ifelse\n  xi yi moveto}\n]def\n\n/cLD-vector\n[{cLD0-vector arrow get exec}	% 0 - miter\n {0 0 0 h hT neg h rcurveto}	% 1 - rounded\n {hT neg h rlineto}		% 2 - bevel\n]def\n\n/corner_LD\n{/arrow exch def /h exch def\n cLD-vector ChartShape get exec\n Gstroke\n}def\n\n%>corner Left Ascendent: height arrow corner_LA\n%                 | arrow\n% |    height > 0 |  0 - none\n%  \\              |  1 - right\n%   -* ---------- |  2 - left\n%  /              |  3 - vertical\n% |    height < 0 |\n%                 |\n/cLA0-vector\n[% 0 - none\n {hT neg 0 rlineto\n  0 h rlineto}\n % 1 - right\n {hT neg h rmoveto xyi\n  0 h neg rlineto\n  RA\n  xi yi moveto}\n % 2 - left\n {LA\n  0 h rlineto}\n % 3 - vertical\n {hT neg h rmoveto xyi\n  h 0 gt{DA}{UA}ifelse\n  hT 0 rlineto\n  xi yi moveto}\n]def\n\n/cLA-vector\n[{cLA0-vector arrow get exec}		% 0 - miter\n {0 0 hT neg 0 hT neg h rcurveto}	% 1 - rounded\n {hT neg h rlineto}			% 2 - bevel\n]def\n\n/corner_LA\n{/arrow exch def /h exch def\n cLA-vector ChartShape get exec\n Gstroke\n}def\n\n% --- Flow Stuff\n\n% height prepare_height |- line_height corner_height corner_height\n/prepare_height\n{dup 0 gt\n {T sub hT}\n {T add hT neg}ifelse\n dup\n}def\n\n%>Left Alternative: height LAlt\n%      _\n%     /\n%    |   height > 0\n%    |\n%   /\n% *-     ----------\n%   \\\n%    |\n%    |   height < 0\n%     \\\n%      -\n/LAlt\n{dup 0 eq\n {T exch rlineto}\n {dup abs T lt\n  {0.5 mul dup\n   1 corner_RA\n   0 corner_RD}\n  {prepare_height\n   1 corner_RA\n   exch 0 exch rlineto\n   0 corner_RD\n  }ifelse\n }ifelse\n}def\n\n%>Left Loop: height LLoop\n%   _\n%  /\n% |      height > 0\n% |\n%  \\\n%   -*   ----------\n%  /\n% |\n% |      height < 0\n%  \\\n%   -\n/LLoop\n{prepare_height\n 3 corner_LA\n exch 0 exch rlineto\n 0 corner_RD\n}def\n\n%>Right Alternative: height RAlt\n% _\n%  \\\n%   |    height > 0\n%   |\n%    \\\n%     -* ----------\n%    /\n%   |\n%   |    height < 0\n%  /\n% -\n/RAlt\n{dup 0 eq\n {T neg exch rlineto}\n {dup abs T lt\n  {0.5 mul dup\n   1 corner_LA\n   0 corner_LD}\n  {prepare_height\n   1 corner_LA\n   exch 0 exch rlineto\n   0 corner_LD\n  }ifelse\n }ifelse\n}def\n\n%>Right Loop: height RLoop\n%  _\n%   \\\n%    |   height > 0\n%    |\n%   /\n% *-     ----------\n%   \\\n%    |\n%    |   height < 0\n%   /\n%  -\n/RLoop\n{prepare_height\n 1 corner_RA\n exch 0 exch rlineto\n 0 corner_LD\n}def\n\n% --- Terminal, Non-terminal and Special Basics\n\n% string width prepare-width |- string\n/prepare-width\n{/width exch def\n dup stringwidth pop space add space add width exch sub 0.5 mul\n /w exch def\n}def\n\n% string width begin-right\n/begin-right\n{xyo\n prepare-width\n w hT sub EL\n RA\n}def\n\n% end-right\n/end-right\n{xo width add Er add yo moveto\n w Er add neg EL\n xo yo moveto\n}def\n\n% string width begin-left\n/begin-left\n{xyo\n prepare-width\n w EL\n}def\n\n% end-left\n/end-left\n{xo width add Er add yo moveto\n hT w sub Er add EL\n LA\n xo yo moveto\n}def\n\n/ShapePath-vector\n[% 0 - miter\n {xx yy moveto\n  xx YY lineto\n  XX YY lineto\n  XX yy lineto}\n % 1 - rounded\n {/half YY yy sub 0.5 mul abs def\n  xx half add YY moveto\n  0 0 half neg 0 half neg half neg rcurveto\n  0 0 0 half neg half half neg rcurveto\n  XX xx sub abs half sub half sub 0 rlineto\n  0 0 half 0 half half rcurveto\n  0 0 0 half half neg half rcurveto}\n % 2 - bevel\n {/quarter YY yy sub 0.25 mul abs def\n  xx quarter add YY moveto\n  quarter neg quarter neg rlineto\n  0 quarter quarter add neg rlineto\n  quarter quarter neg rlineto\n  XX xx sub abs quarter sub quarter sub 0 rlineto\n  quarter quarter rlineto\n  0 quarter quarter add rlineto\n  quarter neg quarter rlineto}\n]def\n\n/doShapePath\n{newpath\n ShapePath-vector shape get exec\n closepath\n}def\n\n/doShapeShadow\n{gsave\n Xshadow Xshadow add Xshadow add\n Yshadow Yshadow add Yshadow add translate\n doShapePath\n 0.9 FillGray\n grestore\n}def\n\n/doShape\n{gsave\n doShapePath\n shapecolor FillRGB\n StrokeShape\n grestore\n}def\n\n% string SBound |- string\n/SBound\n{/xx c dup /yy exch def\n FontHeight add /YY exch def def\n dup stringwidth pop xx add /XX exch def\n Effect 8 and 0 ne\n {/yy yy YShadow add def\n  /XX XX XShadow add def\n }if\n}def\n\n% string SBox\n/SBox\n{gsave\n c space sub moveto\n SBound\n /XX XX space add space add def\n /YY YY space add def\n /yy yy space sub def\n shadow{doShapeShadow}if\n doShape\n space Descent abs rmoveto\n foreground SetRGB S\n grestore\n}def\n\n% --- Terminal\n\n% TeRminal: string TR\n/TR\n{/Effect EffectT def\n /shape ShapeT def\n /shapecolor BackgroundT def\n /borderwidth BorderWidthT def\n /bordercolor BorderColorT def\n /foreground ForegroundT def\n /shadow ShadowT def\n SBox\n}def\n\n%>Right Terminal: string width RT |- x y\n/RT\n{xyt\n /fT F\n /space SpaceT def\n begin-right\n TR\n end-right\n xt yt\n}def\n\n%>Left Terminal: string width LT |- x y\n/LT\n{xyt\n /fT F\n /space SpaceT def\n begin-left\n TR\n end-left\n xt yt\n}def\n\n%>Right Terminal Default: string width RTD |- x y\n/RTD\n{/-save- BorderWidthT def\n /BorderWidthT BorderWidthT DefaultWidth add def\n RT\n /BorderWidthT -save- def\n}def\n\n%>Left Terminal Default: string width LTD |- x y\n/LTD\n{/-save- BorderWidthT def\n /BorderWidthT BorderWidthT DefaultWidth add def\n LT\n /BorderWidthT -save- def\n}def\n\n% --- Non-Terminal\n\n% Non-Terminal: string NT\n/NT\n{/Effect EffectNT def\n /shape ShapeNT def\n /shapecolor BackgroundNT def\n /borderwidth BorderWidthNT def\n /bordercolor BorderColorNT def\n /foreground ForegroundNT def\n /shadow ShadowNT def\n SBox\n}def\n\n%>Right Non-Terminal: string width RNT |- x y\n/RNT\n{xyt\n /fNT F\n /space SpaceNT def\n begin-right\n NT\n end-right\n xt yt\n}def\n\n%>Left Non-Terminal: string width LNT |- x y\n/LNT\n{xyt\n /fNT F\n /space SpaceNT def\n begin-left\n NT\n end-left\n xt yt\n}def\n\n%>Right Non-Terminal Default: string width RNTD |- x y\n/RNTD\n{/-save- BorderWidthNT def\n /BorderWidthNT BorderWidthNT DefaultWidth add def\n RNT\n /BorderWidthNT -save- def\n}def\n\n%>Left Non-Terminal Default: string width LNTD |- x y\n/LNTD\n{/-save- BorderWidthNT def\n /BorderWidthNT BorderWidthNT DefaultWidth add def\n LNT\n /BorderWidthNT -save- def\n}def\n\n% --- Special\n\n% SPecial: string SP\n/SP\n{/Effect EffectS def\n /shape ShapeS def\n /shapecolor BackgroundS def\n /borderwidth BorderWidthS def\n /bordercolor BorderColorS def\n /foreground ForegroundS def\n /shadow ShadowS def\n SBox\n}def\n\n%>Right SPecial: string width RSP |- x y\n/RSP\n{xyt\n /fS F\n /space SpaceS def\n begin-right\n SP\n end-right\n xt yt\n}def\n\n%>Left SPecial: string width LSP |- x y\n/LSP\n{xyt\n /fS F\n /space SpaceS def\n begin-left\n SP\n end-left\n xt yt\n}def\n\n%>Right SPecial Default: string width RSPD |- x y\n/RSPD\n{/-save- BorderWidthS def\n /BorderWidthS BorderWidthS DefaultWidth add def\n RSP\n /BorderWidthS -save- def\n}def\n\n%>Left SPecial Default: string width LSPD |- x y\n/LSPD\n{/-save- BorderWidthS def\n /BorderWidthS BorderWidthS DefaultWidth add def\n LSP\n /BorderWidthS -save- def\n}def\n\n% --- Repeat and Except basics\n\n/begin-direction\n{/w width rwidth sub 0.5 mul def\n width 0 rmoveto}def\n\n/end-direction\n{gsave\n /xx c entry add /YY exch def def\n /yy YY height sub def\n /XX xx rwidth add def\n shadow{doShapeShadow}if\n doShape\n grestore\n}def\n\n/right-direction\n{begin-direction\n w neg EL\n xt yt moveto\n w hT sub EL RA\n end-direction\n}def\n\n/left-direction\n{begin-direction\n hT w sub EL LA\n xt yt moveto\n w EL\n end-direction\n}def\n\n% --- Repeat\n\n% entry height width rwidth begin-repeat\n/begin-repeat\n{/rwidth exch def\n /width exch def\n /height exch def\n /entry exch def\n /fR F\n /space SpaceR def\n /Effect EffectR def\n /shape ShapeR def\n /shapecolor BackgroundR def\n /borderwidth BorderWidthR def\n /bordercolor BorderColorR def\n /foreground ForegroundR def\n /shadow ShadowR def\n xyt\n}def\n\n% string end-repeat |- x y\n/end-repeat\n{gsave\n space Descent rmoveto\n foreground SetRGB S\n c Descent sub\n grestore\n exch space add exch moveto\n xt yt\n}def\n\n%>Right RePeat: string entry height width rwidth RRP |- x y\n/RRP{begin-repeat right-direction end-repeat}def\n\n%>Left RePeat: string entry height width rwidth LRP |- x y\n/LRP{begin-repeat left-direction end-repeat}def\n\n% --- Except\n\n% entry height width rwidth begin-except\n/begin-except\n{/rwidth exch def\n /width exch def\n /height exch def\n /entry exch def\n /fE F\n /space SpaceE def\n /Effect EffectE def\n /shape ShapeE def\n /shapecolor BackgroundE def\n /borderwidth BorderWidthE def\n /bordercolor BorderColorE def\n /foreground ForegroundE def\n /shadow ShadowE def\n xyt\n}def\n\n% x-width end-except |- x y\n/end-except\n{gsave\n space space add add Descent rmoveto\n (-) foreground SetRGB S\n grestore\n space 0 rmoveto\n xt yt\n}def\n\n%>Right EXcept: x-width entry height width rwidth REX |- x y\n/REX{begin-except right-direction end-except}def\n\n%>Left EXcept: x-width entry height width rwidth LEX |- x y\n/LEX{begin-except left-direction end-except}def\n\n% --- Sequence\n\n%>Beginning Of Sequence: BOS |- x y\n/BOS{currentpoint}bind def\n\n%>End Of Sequence: x y x1 y1 EOS |- x y\n/EOS{pop pop}bind def\n\n% --- Production\n\n%>Beginning Of Production: string width height BOP |- y x\n/BOP\n{xyp\n neg yp add /yw exch def\n xp add T sub /xw exch def\n /Effect EffectP def\n /fP F ForegroundP SetRGB BackgroundP aload pop true BG S\n /Effect 0 def\n ( :) S false BG\n xw yw moveto\n hT EL RA\n xp yw moveto\n T EL\n yp xp\n}def\n\n%>End Of Production: y x delta EOP\n/EOPH{add exch moveto}bind def			% horizontal\n/EOPV{exch pop sub 0 exch moveto}bind def	% vertical\n\n% --- Empty Alternative\n\n%>Empty Alternative: width EA |- x y\n/EA\n{gsave\n Er add 0 rlineto\n Stroke\n grestore\n c\n}def\n\n% --- Alternative\n\n%>AlTernative: h1 h2 ... hn n width AT |- x y\n/AT\n{xyo xo add /xw exch def\n xw yo moveto\n Er EL\n {xw yo moveto\n  dup RAlt\n  xo yo moveto\n  LAlt}repeat\n xo yo\n}def\n\n% --- Optional\n\n%>OPtional: height width OP |- x y\n/OP\n{xyo\n T sub /ow exch def\n ow Er sub 0 rmoveto\n T Er add EL\n neg dup RAlt\n ow T sub neg EL\n xo yo moveto\n LAlt\n xo yo moveto\n T EL\n xo yo\n}def\n\n% --- List Flow\n\n%>One or More: height width OM |- x y\n/OM\n{xyo\n /ow exch def\n ow Er add 0 rmoveto\n T Er add neg EL\n dup RLoop\n xo T add yo moveto\n LLoop\n xo yo moveto\n T EL\n xo yo\n}def\n\n%>Zero or More: h2 h1 width ZM |- x y\n/ZM\n{xyo\n Er add EL\n Er neg 0 rmoveto\n dup RAlt\n exch dup RLoop\n xo yo moveto\n exch dup LAlt\n exch LLoop\n yo add xo T add exch moveto\n xo yo\n}def\n\n% === end EBNF engine\n\n" (#$ . 37317))
#@19 EBNF EPS prologue
(defconst ebnf-eps-prologue "\n/#ebnf2ps#dict 230 dict def\n#ebnf2ps#dict begin\n\n% Initiliaze variables to avoid name-conflicting with document variables.\n% This is the case when using `bind' operator.\n/-fillp-		0 def		/h		0 def\n/-ox-			0 def		/half		0 def\n/-oy-			0 def		/height		0 def\n/-save-			0 def		/ow		0 def\n/Ascent			0 def		/quarter	0 def\n/Descent		0 def		/rXX		0 def\n/Effect			0 def		/rYY		0 def\n/FontHeight		0 def		/rwidth		0 def\n/LineThickness		0 def		/rxx		0 def\n/OverlinePosition	0 def		/ryy		0 def\n/SpaceBackground	0 def		/shadow		0 def\n/StrikeoutPosition	0 def		/shape		0 def\n/UnderlinePosition	0 def		/shapecolor	0 def\n/XBox			0 def		/space		0 def\n/XX			0 def		/st		1 string def\n/Xshadow		0 def		/w		0 def\n/YBox			0 def		/width		0 def\n/YY			0 def		/xi		0 def\n/Yshadow		0 def		/xo		0 def\n/arrow			0 def		/xp		0 def\n/bg			false def	/xt		0 def\n/bgcolor		0 def		/xw		0 def\n/bordercolor		0 def		/xx		0 def\n/borderwidth		0 def		/yi		0 def\n/dd			0 def		/yo		0 def\n/entry			0 def		/yp		0 def\n/foreground		0 def		/yt		0 def\n					/yy		0 def\n\n\n% ISOLatin1Encoding stolen from ps_init.ps in GhostScript 2.6.1.4:\n/ISOLatin1Encoding where\n{pop}\n{% -- The ISO Latin-1 encoding vector isn't known, so define it.\n % -- The first half is the same as the standard encoding,\n % -- except for minus instead of hyphen at code 055.\n /ISOLatin1Encoding\n  StandardEncoding 0  45 getinterval aload pop\n  /minus\n  StandardEncoding 46 82 getinterval aload pop\n %*** NOTE: the following are missing in the Adobe documentation,\n %*** but appear in the displayed table:\n %*** macron at 0225, dieresis at 0230, cedilla at 0233, space at 0240.\n % 0200 (128)\n  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef\n  /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent\n  /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron\n % 0240 (160)\n  /space /exclamdown /cent /sterling\n	/currency /yen /brokenbar /section\n  /dieresis /copyright /ordfeminine /guillemotleft\n	/logicalnot /hyphen /registered /macron\n  /degree /plusminus /twosuperior /threesuperior\n	/acute /mu /paragraph /periodcentered\n  /cedilla /onesuperior /ordmasculine /guillemotright\n	/onequarter /onehalf /threequarters /questiondown\n % 0300 (192)\n  /Agrave /Aacute /Acircumflex /Atilde\n	/Adieresis /Aring /AE /Ccedilla\n  /Egrave /Eacute /Ecircumflex /Edieresis\n	/Igrave /Iacute /Icircumflex /Idieresis\n  /Eth /Ntilde /Ograve /Oacute\n	/Ocircumflex /Otilde /Odieresis /multiply\n  /Oslash /Ugrave /Uacute /Ucircumflex\n	/Udieresis /Yacute /Thorn /germandbls\n % 0340 (224)\n  /agrave /aacute /acircumflex /atilde\n	/adieresis /aring /ae /ccedilla\n  /egrave /eacute /ecircumflex /edieresis\n	/igrave /iacute /icircumflex /idieresis\n  /eth /ntilde /ograve /oacute\n	/ocircumflex /otilde /odieresis /divide\n  /oslash /ugrave /uacute /ucircumflex\n	/udieresis /yacute /thorn /ydieresis\n 256 packedarray def\n}ifelse\n\n/reencodeFontISO	%def\n{dup\n length 12 add dict	% Make a new font (a new dict the same size\n			% as the old one) with room for our new symbols.\n\n begin			% Make the new font the current dictionary.\n  {1 index /FID ne\n   {def}{pop pop}ifelse\n  }forall		% Copy each of the symbols from the old dictionary\n			% to the new one except for the font ID.\n\n  currentdict /FontType get 0 ne\n  {/Encoding ISOLatin1Encoding def}if	% Override the encoding with\n					% the ISOLatin1 encoding.\n\n  % Use the font's bounding box to determine the ascent, descent,\n  % and overall height; don't forget that these values have to be\n  % transformed using the font's matrix.\n\n  %          ^    (x2 y2)\n  %          |       |\n  %          |       v\n  %          |  +----+ - -\n  %          |  |    |   ^\n  %          |  |    |   | Ascent (usually > 0)\n  %          |  |    |   |\n  % (0 0) -> +--+----+-------->\n  %             |    |   |\n  %             |    |   v Descent (usually < 0)\n  % (x1 y1) --> +----+ - -\n\n  currentdict /FontType get 0 ne\n  {/FontBBox load aload pop		% -- x1 y1 x2 y2\n   FontMatrix transform /Ascent  exch def pop\n   FontMatrix transform /Descent exch def pop}\n  {/PrimaryFont FDepVector 0 get def\n   PrimaryFont /FontBBox get aload pop\n   PrimaryFont /FontMatrix get transform /Ascent exch def pop\n   PrimaryFont /FontMatrix get transform /Descent exch def pop\n  }ifelse\n\n  /FontHeight Ascent Descent sub def	% use `sub' because descent < 0\n\n  % Define these in case they're not in the FontInfo\n  % (also, here they're easier to get to).\n  /UnderlinePosition  Descent 0.70 mul def\n  /OverlinePosition   Descent UnderlinePosition sub Ascent add def\n  /StrikeoutPosition  Ascent 0.30 mul def\n  /LineThickness      FontHeight 0.05 mul def\n  /Xshadow            FontHeight  0.08 mul def\n  /Yshadow            FontHeight -0.09 mul def\n  /SpaceBackground    Descent neg UnderlinePosition add def\n  /XBox               Descent neg def\n  /YBox               LineThickness 0.7 mul def\n\n  currentdict	% Leave the new font on the stack\n end		% Stop using the font as the current dictionary\n definefont	% Put the font into the font dictionary\n pop		% Discard the returned font\n}bind def\n\n% Font definition\n/DefFont{findfont exch scalefont reencodeFontISO}def\n\n% Font selection\n/F\n{findfont\n dup /Ascent            get /Ascent            exch def\n dup /Descent           get /Descent           exch def\n dup /FontHeight        get /FontHeight        exch def\n dup /UnderlinePosition get /UnderlinePosition exch def\n dup /OverlinePosition  get /OverlinePosition  exch def\n dup /StrikeoutPosition get /StrikeoutPosition exch def\n dup /LineThickness     get /LineThickness     exch def\n dup /Xshadow           get /Xshadow           exch def\n dup /Yshadow           get /Yshadow           exch def\n dup /SpaceBackground   get /SpaceBackground   exch def\n dup /XBox              get /XBox              exch def\n dup /YBox              get /YBox              exch def\n setfont\n}def\n\n/BG\n{dup /bg exch def\n {mark 4 1 roll ]}\n {[ 1.0 1.0 1.0 ]}\n ifelse\n /bgcolor exch def\n}def\n\n% stack:  --\n/FillBgColor{bgcolor aload pop setrgbcolor fill}bind def\n\n% stack:  fill-or-not lower-x lower-y upper-x upper-y  |-  --\n/doRect\n{/rYY exch def\n /rXX exch def\n /ryy exch def\n /rxx exch def\n gsave\n newpath\n rXX rYY moveto\n rxx rYY lineto\n rxx ryy lineto\n rXX ryy lineto\n closepath\n % top of stack: fill-or-not\n {FillBgColor}\n {LineThickness setlinewidth stroke}\n ifelse\n grestore\n}bind def\n\n% stack:  string fill-or-not  |-  --\n/doOutline\n{/-fillp- exch def\n /-ox- currentpoint /-oy- exch def def\n gsave\n LineThickness setlinewidth\n {st 0 3 -1 roll put\n  st dup true charpath\n  -fillp- {gsave FillBgColor grestore}if\n  stroke stringwidth\n  -oy- add /-oy- exch def\n  -ox- add /-ox- exch def\n  -ox- -oy- moveto\n }forall\n grestore\n -ox- -oy- moveto\n}bind def\n\n% stack:  fill-or-not delta  |-  --\n/doBox\n{/dd exch def\n xx XBox sub dd sub yy YBox sub dd sub\n XX XBox add dd add YY YBox add dd add\n doRect\n}bind def\n\n% stack:  string  |-  --\n/doShadow\n{gsave\n Xshadow Yshadow rmoveto\n false doOutline\n grestore\n}bind def\n\n% stack:  position  |-  --\n/Hline\n{currentpoint exch pop add dup\n gsave\n newpath\n xx exch moveto\n XX exch lineto\n closepath\n LineThickness setlinewidth stroke\n grestore\n}bind def\n\n% stack:  string  |-  --\n% effect: 1  - underline  2   - strikeout  4  - overline\n%         8  - shadow     16  - box        32 - outline\n/S\n{/xx currentpoint dup Descent add /yy exch def\n Ascent add /YY exch def def\n dup stringwidth pop xx add /XX exch def\n Effect 8 and 0 ne\n {/yy yy Yshadow add def\n  /XX XX Xshadow add def\n }if\n bg\n {true\n  Effect 16 and 0 ne\n  {SpaceBackground doBox}\n  {xx yy XX YY doRect}\n  ifelse\n }if						% background\n Effect 16 and 0 ne{false 0 doBox}if		% box\n Effect 8  and 0 ne{dup doShadow}if		% shadow\n Effect 32 and 0 ne\n {true doOutline}				% outline\n {show}						% normal text\n ifelse\n Effect 1  and 0 ne{UnderlinePosition Hline}if	% underline\n Effect 2  and 0 ne{StrikeoutPosition Hline}if	% strikeout\n Effect 4  and 0 ne{OverlinePosition  Hline}if	% overline\n}bind def\n\n" (#$ . 52429))
#@16 EBNF EPS begin
(defconst ebnf-eps-begin "\nend\n\n% x y #ebnf2ps#begin\n/#ebnf2ps#begin\n{#ebnf2ps#dict begin /#ebnf2ps#save save def\n moveto false BG 0.0 0.0 0.0 setrgbcolor}def\n\n/#ebnf2ps#end{showpage #ebnf2ps#save restore end}def\n\n%%EndProlog\n" (#$ . 60789))
#@14 EBNF EPS end
(defconst ebnf-eps-end "#ebnf2ps#end\n%%EOF\n" (#$ . 61063))
(byte-code "\301B\302\301!\204\f \303\301\207" [current-load-list ebnf-format-float boundp "%1.3f"] 2)
(defalias 'ebnf-format-float #[(&rest floats) "\301\302\303#\207" [floats mapconcat #[(float) "\302	\"\207" [ebnf-format-float float format] 3] " "] 4])
(defalias 'ebnf-format-color #[(format-str color default) "\206 	\305\n!\306\f\307\310@A@\3118#\312Q\n#*\207" [color default the-color rgb format-str ps-color-scale format "[" ebnf-format-float 2 "]"] 8])
(byte-code "\301B\302\301!\204\f \303\301\207" [current-load-list ebnf-message-float boundp "%3.2f"] 2)
(defalias 'ebnf-message-float #[(format-str value) "\303\304	\n\"\"\207" [format-str ebnf-message-float value message format] 5])
(put 'ebnf-message-float 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-message-info #[(messag) "\303\304\305	T\211\306_\n\245!#\207" [messag ebnf-nprod ebnf-total message "%s...%3d%%" round 100.0] 6])
(put 'ebnf-message-info 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-node-kind '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 0 aref (0)] 4]))
(defalias 'ebnf-node-width-func '(macro . #[(node width) "\302\303\304BB	F\207" [node width funcall aref (1)] 4]))
(defalias 'ebnf-node-dimension-func '(macro . #[(node &optional value) "\203\n \302	\303F\207\304\305	\306BB	E\207" [value node aset 2 funcall aref (2)] 4]))
(defalias 'ebnf-node-entry '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 3 aref (3)] 4]))
(defalias 'ebnf-node-height '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 4 aref (4)] 4]))
(defalias 'ebnf-node-width '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 5 aref (5)] 4]))
(defalias 'ebnf-node-name '(macro . #[(vec) "\301\302BB\207" [vec aref (6)] 3]))
(defalias 'ebnf-node-list '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 6 aref (6)] 4]))
(defalias 'ebnf-node-default '(macro . #[(vec) "\301\302BB\207" [vec aref (7)] 3]))
(defalias 'ebnf-node-production '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 7 aref (7)] 4]))
(defalias 'ebnf-node-separator '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 7 aref (7)] 4]))
(defalias 'ebnf-node-action '(macro . #[(vec &optional value) "\203\n \302	\303F\207\304	\305BB\207" [value vec aset 8 aref (8)] 4]))
(defalias 'ebnf-node-generation '(macro . #[(node) "\301\302DE\207" [node funcall ebnf-node-kind] 3]))
(defalias 'ebnf-max-width '(macro . #[(prod) "\301\302D\303\304\305\306DD\307BB\310BBE\207" [prod max ebnf-node-width + * length ebnf-node-name (ebnf-font-width-P) (ebnf-production-horizontal-space)] 7]))
(defalias 'ebnf-generate-eps #[(ebnf-tree) "\205 \306 \211\203 \307\310\311!@!\202 \312G\313\314K\315K\316!\317\317 \317!\317\"\317#\317$\317%\317&\317'\320\314\321\"\210\320\315\322\"\210\212\323\324\325\217\210)\320\314\"\210\320\315\"\210\326!\210\327'\317\"\210 \203v \330 !\210\331\332!.\207" [ebnf-color-p ps-color-p ps-print-color-scale ebnf-tree ebnf-total ebnf-nprod ps-color-device float ps-color-values "white" 1.0 0 ps-output ps-output-string get-buffer-create nil defalias ebnf-eps-output ps-output-string-prim data (byte-code "\203q @\211\306H	\307H	\306HG_\f\\]	\310H	\311H>\212q\210\312\313\314	!\210)\315\n\"A\211\203Y \316\317&\210\202a \320\321\n!\"\210\212q\210\322 \210)A\211\204 \323\324\"\210\325\325\207" [ebnf-tree prod prod-name ebnf-font-width-P ebnf-production-horizontal-space prod-width 6 5 4 8 0.0 0.0 ebnf-generate-production assoc ebnf-eps-production-list file-list ebnf-eps-finish-and-write ebnf-eps-filename erase-buffer ebnf-eps-write-kill-temp t nil prod-height ebnf-action-list horizontal eps-buffer ebnf-eps-upper-x ebnf-eps-upper-y ebnf-eps-max-width ebnf-eps-max-height prod-list] 8) (((quit error) (byte-code "\302!\302\207" [data error-msg error-message-string] 2))) kill-buffer ebnf-eps-write-kill-temp error message " " old-ps-output old-ps-output-string ebnf-eps-buffer-name eps-buffer ebnf-debug-ps error-msg horizontal prod prod-name prod-width prod-height prod-list file-list] 4])
(defalias 'ebnf-eps-write-kill-temp #[(file-list write-p) "\205' \303\304@\305Q!\211\203 \n\203 \306	@\"\210\307	!\210)A\211\204 \310\207" [file-list buffer write-p get-buffer " *" "*" ebnf-eps-finish-and-write kill-buffer nil] 5])
(defalias 'ebnf-eps-production-list #[(prod-list file-list-sym horizontal prod-width prod-height eps-buffer) "\205y \306	@\"\210\212\307\310@\311Q!q\210db\210\312\313 !\203+ \314\315\f\202h \203F \316!\210\\\f\\]\202h \317!\210\n]\312!\203Z \202a \\\\\f\f\320!\210)A\211\204 \321\207" [prod-list file-list-sym ebnf-eps-upper-x ebnf-eps-upper-y prod-width ebnf-eps-max-width add-to-list get-buffer-create " *" "*" zerop buffer-size 0.0 0.0 ebnf-eop-horizontal ebnf-eop-vertical insert-buffer nil prod-height ebnf-eps-max-height horizontal ebnf-eps-prod-width ebnf-production-horizontal-space ebnf-production-vertical-space eps-buffer] 5])
(defalias 'ebnf-generate #[(ebnf-tree) "\205 \306 \211\203 \307\310\311!@!\202 \312\313\313\313\313\313\313\313\314ped\315$.	\207" [ebnf-color-p ps-color-p ps-print-color-scale ps-zebra-stripes ps-line-number ps-razzle-dazzle ps-color-device float ps-color-values "white" 1.0 nil ps-generate ebnf-generate-postscript ps-print-hook ps-print-begin-sheet-hook ps-print-begin-page-hook ps-print-begin-column-hook] 6])
(byte-code "\301B\305\301!\204\f \306\302B\305\302!\204 \307\303B\305\303!\204$ \310\304B\305\304!\2040 \310\306\207" [current-load-list ebnf-tree ebnf-direction ebnf-total ebnf-nprod boundp nil "R" 0] 2)
(defalias 'ebnf-generate-postscript #[(from to) "\301 \210\203 \302 \210\202 \303 \210\304\305!\207" [ebnf-horizontal-max-height ebnf-begin-file ebnf-generate-with-max-height ebnf-generate-without-max-height message " "] 2])
(defalias 'ebnf-generate-with-max-height #[nil "G\306\307\211\211\211\205\246 @\211\310H\311\n\211\312H\n\313HG_\\]\"\210\fA\211\203p \f@\211\203p \n\314H>\203p \n\312H\n\313HG_\\]\211\203p 	X\203p \n\310H]	\\Z\202- \315!\210@\316\n!\210A\211\f=\204\237 \317\n\312H\n\313HG_\\]!\210@\316\n!\210\202{ \320!\210\202 .\207" [ebnf-tree the-width prod max-height next-line ebnf-nprod 0 nil 4 ebnf-begin-line 5 6 8 ebnf-newline ebnf-generate-production ebnf-eop-horizontal ebnf-eop-vertical ebnf-total ebnf-font-width-P ebnf-production-horizontal-space ebnf-action-list ps-width-remaining] 7])
(defalias 'ebnf-generate-without-max-height #[nil "G\306\307\211\211\211\205\222 @\211\310H\311H\312HG_\\]\313\n\"\210\314!\210A\211\203\207 @\211\203\207 \315H>\203\207 \311H\312HG_\\]\211\203\207 	X\203\207 \310HX\203\207 \316\n!\210\314!\210	\f\310H]	\\Z\2021 \317\f!\210\320\f!\210\202 .\207" [ebnf-tree cur-width bef-width prod max-height ebnf-nprod 0 nil 4 5 6 ebnf-begin-line ebnf-generate-production 8 ebnf-eop-horizontal ebnf-eop-vertical ebnf-newline ebnf-total ebnf-font-width-P ebnf-production-horizontal-space ebnf-action-list ps-width-remaining ps-height-remaining] 7])
(defalias 'ebnf-begin-line #[(prod width) "\305H\306=\204 \307H	V\203 \310 \210\n\f\\Z\211\207" [prod ps-height-remaining ps-width-remaining width ebnf-production-horizontal-space 8 form-feed 4 ebnf-new-page] 3])
(defalias 'ebnf-newline #[(height) "	V\203	 \305 \210\n	\f\\Z\211\207" [height ps-height-remaining ps-print-width ps-width-remaining ebnf-production-vertical-space ebnf-new-page] 3])
(defalias 'ebnf-generate-production #[(production) "\305\306\307\310	T\211\311_\n\245!#\210)\312\313!\210\314\315H!\210\316\317\320\321H\f\322H\323H\\\"\324#\210\322H\325H\322H!\210\316\326!\207" [messag ebnf-nprod ebnf-total production ebnf-basic-height "Generating" message "%s...%3d%%" round 100.0 run-hooks ebnf-production-hook ps-output-string 6 ps-output " " ebnf-format-float 5 7 3 " BOP\n" 0 "EOS\n"] 7])
(defalias 'ebnf-generate-alternative #[(alternative) "\306H\307H\310\311\211\211\2032 \312\313\f@\307HZ!\314\"\210\f@\315HZZTA\211\204 \312\316\317\"\313\320H!\321#\210\306H\211\203Y @\310H@!\210@\315H@\307HZA\211\203\201 @\307H\322\n\\	\\[!\210@\310H@!\210@\315H	Z\202Y -\312\323!\207" [alternative alt-entry alt-height nlist entry alt 6 3 0 nil ps-output ebnf-format-float " " 4 format "%d " 5 " AT\n" ebnf-vertical-movement "EOS\n" ebnf-vertical-space] 6])
(defalias 'ebnf-generate-sequence #[(sequence) "\303\304!\210\305H\306\211\203 \n@\307H\n@!\210\n@\310H\nA\211\2036 \311	!\210\n@\307H\n@!\210\n@\310H\202 *\303\312!\207" [sequence seq-width seq ps-output "BOS\n" 6 nil 0 5 ebnf-horizontal-movement "EOS\n"] 3])
(defalias 'ebnf-generate-terminal #[(terminal) "\301\302\"\207" [terminal ebnf-gen-terminal "T"] 3])
(defalias 'ebnf-generate-non-terminal #[(non-terminal) "\301\302\"\207" [non-terminal ebnf-gen-terminal "NT"] 3])
(defalias 'ebnf-generate-empty #[(empty) "\301\302H!\207" [empty ebnf-empty-alternative 5] 3])
(defalias 'ebnf-generate-optional #[(optional) "\303H\304\305	\306H\307HZ\n\\\310H\"\311\"\210	\312H	!\210\304\313!)\207" [optional the-optional ebnf-vertical-space 6 ps-output ebnf-format-float 4 3 5 " OP\n" 0 "EOS\n"] 5])
(defalias 'ebnf-generate-one-or-more #[(one-or-more) "\306H\307H\310H\n\203 \n\310H\202 \311Z\312\313	\"\314\"\210\315H\311H\315H!\210\316!\210\n\203> \317\n\311H\n!\210)\202D \320	Z!\210+\312\321!\207" [one-or-more width sep entry ebnf-direction ebnf-horizontal-space 5 7 3 0 ps-output ebnf-format-float " OM\n" 6 ebnf-vertical-movement "L" ebnf-empty-alternative "EOS\n"] 4])
(defalias 'ebnf-generate-zero-or-more #[(zero-or-more) "\306H\307H\211\310H\311H\\\f\203! \f\312H\f\310HZ\202\" \313\\\314\315\n\312HZ\\	#\316\"\210\307H\313H\307H!\210\317!\210\311H\203[ \320\311H\313H\311H!\210)\202b \321	Z!\210-\314\322!\207" [zero-or-more width node-list list-entry node-sep ebnf-vertical-space 5 6 3 7 4 0 ps-output ebnf-format-float " ZM\n" ebnf-vertical-movement "L" ebnf-empty-alternative "EOS\n" entry ebnf-direction ebnf-horizontal-space] 6])
(defalias 'ebnf-generate-special #[(special) "\301\302\"\207" [special ebnf-gen-terminal "SP"] 3])
(defalias 'ebnf-generate-repeat #[(repeat) "\306H\307H\310\n!\210\311\312\313\314H\315H\316H	\203- 	\316H\\\\\\\nG\f_\\\202. \317$\312\320%\210	\203> 	\321H	!\210*\311\322!\207" [repeat element times ebnf-space-R ebnf-font-width-R ebnf-direction 6 7 ps-output-string ps-output " " ebnf-format-float 3 4 5 0.0 "RP\n" 0 "EOS\n"] 9])
(defalias 'ebnf-generate-except #[(except) "\306H\307H	\310H\311\312\313H\314H\310H\f\\\f\\\f\\\\\n\203- \n\310H\f\\\202. \315\\%\316\317$\210\306H\320H\306H!\210\n\203T \321\f\\\\\f\\!\210\n\320H\n!\210+\311\322!\207" [except element exception width ebnf-space-E ebnf-font-width-E 6 7 5 ps-output ebnf-format-float 3 4 0.0 " " "EX\n" 0 ebnf-horizontal-movement "EOS\n" ebnf-direction] 9])
(defalias 'ebnf-gen-terminal #[(node code) "\303\304H!\210\305\306\307\310H!\306	\n\311H\203 \312\202 \313&\207" [node ebnf-direction code ps-output-string 6 ps-output " " ebnf-format-float 5 7 "D\n" "\n"] 8])
(defalias 'ebnf-range-regexp #[(prefix from to) "\304	\nX\203 \305	!P	T\211\202 P)\207" [str from to prefix nil char-to-string] 4])
(byte-code "\302B\303\302!\204 \304\305\306\"\307\310\311\"\210	)\302\207" [current-load-list map ebnf-map-name boundp make-vector 256 95 mapcar #[(char) "	\211I\207" [map char] 3] "#$%&+-.0123456789=?@~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"] 3)
(defalias 'ebnf-eps-filename #[(str) "G\306\307	\310\"\n	W\203  \n\f\nHHI\210\nT\211\202 \311Q+\207" [str len stri new ebnf-map-name ebnf-eps-prefix 0 make-string 32 ".eps"] 6])
(defalias 'ebnf-eps-output #[(&rest args) "\205 @c\210A\211\204 \301\207" [args nil] 2])
(defalias 'ebnf-generate-region #[(from to gen-func) "\306\307!\210	]\310\212\214\311 \312\216\313\314\315\217\210,\n\203  \nb\202+ \203( \310\202+ \316\317!*\207" [from to the-point ebnf-limit save-match-data-internal gen-func run-hooks ebnf-hook nil match-data ((set-match-data save-match-data-internal)) data (byte-code "\304	^!\203 \305\306\307\n!!!!\210)\304\207" [from to tree gen-func ebnf-parse-and-sort ebnf-dimensions ebnf-optimize ebnf-eliminate-empty-rules] 5) (((quit error) (byte-code "\302 \210`Se]\303\304	!!\207" [the-point data ding message error-message-string] 3))) message "EBNF syntatic analysis: NO ERRORS."] 3])
(defalias 'ebnf-parse-and-sort #[(start) "\304 \210	!\203  \305\306!\210\307\n\310=\203 \311\202 \312\"\202\" \n\237)\207" [ebnf-parser-func start tree ebnf-sort-production ebnf-begin-job message "Sorting..." sort ascending ebnf-sorter-ascending ebnf-sorter-descending] 4])
(defalias 'ebnf-sorter-ascending #[(first second) "\302H	\302H\231\207" [first second 6] 3])
(defalias 'ebnf-sorter-descending #[(first second) "\302H	\302H\231\207" [second first 6] 3])
(defalias 'ebnf-empty-alternative #[(width) "\301\302!\303\"\207" [width ps-output ebnf-format-float " EA\n"] 3])
(defalias 'ebnf-vertical-movement #[(height) "\301\302!\303\"\207" [height ps-output ebnf-format-float " vm\n"] 3])
(defalias 'ebnf-horizontal-movement #[(width) "\301\302!\303\"\207" [width ps-output ebnf-format-float " hm\n"] 3])
(defalias 'ebnf-entry #[(height) "	_\207" [height ebnf-entry-percentage] 2])
(defalias 'ebnf-eop-vertical #[(height) "\302\303	\\!\304\"\207" [height ebnf-production-vertical-space ps-output ebnf-format-float " EOPV\n\n"] 4])
(defalias 'ebnf-eop-horizontal #[(width) "\302\303	\\!\304\"\207" [width ebnf-production-horizontal-space ps-output ebnf-format-float " EOPH\n\n"] 4])
(defalias 'ebnf-new-page #[nil "	W\205 \302\303!\210\304 \210\305 \210\306 \210\307\310!\207" [ps-height-remaining ps-print-height run-hooks ebnf-page-hook ps-end-page ps-flush-output ps-begin-page ps-output "\n"] 2])
(defalias 'ebnf-font-size #[(font) "@\207" [font] 1])
(put 'ebnf-font-size 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-font-name #[(font) "A@\207" [font] 1])
(put 'ebnf-font-name 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-font-foreground #[(font) "\3018\207" [font 2] 2])
(put 'ebnf-font-foreground 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-font-background #[(font) "\3018\207" [font 3] 2])
(put 'ebnf-font-background 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-font-list #[(font) "\301\233\207" [font 4] 2])
(put 'ebnf-font-list 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-font-attributes #[(font) "\301\302A!\303\"\207" [font lsh ps-extension-bit -2] 3])
(byte-code "\302\303\304\305#\210\301B\306\307\310\311\312$\302\207" [current-load-list ebnf-font-name-select put ebnf-font-attributes byte-optimizer byte-compile-inline-expand vector normal bold italic bold-italic] 5)
(defalias 'ebnf-font-name-select #[(font) "\306\233)\307	>\203 \310\202 \311\312	>\203 \313\202 \311\\\211A@)\314\f\"A\314\315\"A\2068 \316\317\"\314\nH\"A\206J \316\320\"-\207" [font font-list font-index name ps-font-info-database database 4 bold 1 0 italic 2 assoc fonts error "Invalid font: %s" "Invalid attributes for font %s" info-list ebnf-font-name-select] 4])
(defalias 'ebnf-font-select #[(font select) "\211A@)\306	\n\"A\306\304\"A\306\"A	\f\2030 	\2030 \211@)	_\f\245\2024 \307\310	\",\207" [font name ps-font-info-database database size select assoc error "Invalid font: %s" base] 4])
(defalias 'ebnf-font-width #[(font) "\301\302\"\207" [font ebnf-font-select avg-char-width] 3])
(put 'ebnf-font-width 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-font-height #[(font) "\301\302\"\207" [font ebnf-font-select line-height] 3])
(put 'ebnf-font-height 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-begin-job #[nil "\306\307\211\"\210\203 \310\311\202 \312\312\313 \210\314=\203# \315\316\2022 \317=\203/ \320\321\2022 \322\323 \210\203? ;\204? \307&\203J &;\204M \324&'\325]\326^'(\203^ \327\202_ \330)\307*\307+\307,\307-\307.\307/\3310\332123\3333\334\")453\3333\334\")673\3333\334\")893\3333\334\"):;3\3333\334\")<=3\3333\334\")>23\3333\335\")?53\3333\335\")@73\3333\335\")A93\3333\335\")B;3\3333\335\")C=3\3333\335\")D6\336_E8\337_F:\340_G<\341_H>\342_I68\\\211J\343_KJ\211\\LKMKNO\247\203NO\344V\204RJOP\247\203_P\345V\206dJ\211P)\207" [ebnf-use-float-format ebnf-format-float ebnf-message-float ebnf-syntax ebnf-parser-func ebnf-terminal-regexp ps-printing-region nil "%1.3f" "%3.2f" "%s" ebnf-otz-initialize iso-ebnf ebnf-iso-parser ebnf-iso-initialize yacc ebnf-yac-parser ebnf-yac-initialize ebnf-bnf-parser ebnf-bnf-initialize "ebnf--" 0.0 1.0 (nil keep-line) (keep-line) 0.0 0.0 ebnf-font-select line-height avg-char-width 0.5 0.5 0.5 0.5 0.5 0.5 0.0 0.0 ebnf-eps-prefix ebnf-entry-percentage ebnf-horizontal-orientation ebnf-action-list ebnf-settings ebnf-fonts-required ebnf-action ebnf-default-p ebnf-eps-context ebnf-eps-production-list ebnf-eps-upper-x ebnf-eps-upper-y ebnf-production-font font ebnf-font-height-P ebnf-terminal-font ebnf-font-height-T ebnf-non-terminal-font ebnf-font-height-NT ebnf-special-font ebnf-font-height-S ebnf-except-font ebnf-font-height-E ebnf-repeat-font ebnf-font-height-R ebnf-font-width-P ebnf-font-width-T ebnf-font-width-NT ebnf-font-width-S ebnf-font-width-E ebnf-font-width-R ebnf-space-T ebnf-space-NT ebnf-space-S ebnf-space-E ebnf-space-R basic ebnf-basic-width ebnf-horizontal-space ebnf-basic-height ebnf-vertical-space ebnf-production-horizontal-space ebnf-production-vertical-space] 4])
(defalias 'ebnf-shape-value #[(sym alist) "	\236A\206 \302\207" [sym alist 0] 2])
(put 'ebnf-shape-value 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-boolean #[(value) "\203 \301\207\302\207" [value "true" "false"] 1])
(put 'ebnf-boolean 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'ebnf-begin-file #[nil "\302 \210\212q\210eb\210\303\304\305\306#\2058 \303\307\212\305\210`)\306#?\2058 \305\210\310u\210\311	\261\210db\210\312\313!\210\314 \210\315\316!)\207" [ps-spool-buffer ebnf-version ps-flush-output search-forward "%%Creator: " nil t "& ebnf2ps v" -1 " & ebnf2ps v" search-backward "\n%%EndProlog\n" ebnf-insert-ebnf-prologue ps-output "\n"] 4])
(defalias 'ebnf-eps-finish-and-write #[(buffer filename) "\212q\210	\n]\306!\203 \f\202 \\\f\\eb\210\307\310\311\312	TT#\313&\314\315\316!\317\320 \321'\322\323(\206R \324\325\326\327\330)*+,-.\257\"!\331#\211(\332/\261\210\333 \2100\334\3351\336_Z!\337\261\210db\2102c\210\340\341!\210\342&!&\3433\344ed&#\210)\340\345&\")\207" [buffer ebnf-eps-upper-x ebnf-eps-max-width ebnf-eps-upper-y ebnf-eps-max-height ebnf-production-vertical-space zerop "%!PS-Adobe-3.0 EPSF-3.0" "\n%%BoundingBox: 0 0 " format "%d %d" "\n%%Title: " "\n%%CreationDate: " format-time-string "%T %b %d %Y" "\n%%Creator: " user-full-name " (using ebnf2ps v" ")" "\n%%DocumentNeededResources: font " mapconcat identity ps-remove-duplicates mapcar ebnf-font-name-select "\n%%+ font " "\n%%Pages: 0\n%%EndComments\n\n%%BeginProlog\n" ebnf-insert-ebnf-prologue "\n0 " ebnf-format-float 0.7 " #ebnf2ps#begin\n" message "Saving..." expand-file-name raw-text-unix write-region "Wrote %s" filename ebnf-version ebnf-fonts-required ebnf-production-font ebnf-terminal-font ebnf-non-terminal-font ebnf-special-font ebnf-except-font ebnf-repeat-font ebnf-eps-prologue ebnf-eps-begin ebnf-font-height-P ebnf-eps-end coding-system-for-write] 24])
(defalias 'ebnf-insert-ebnf-prologue #[nil "\206\243\306\307\310\311	\211@)!\312	!#\313\314	\315\n8)\316#\313\317	\320\n8)\321#\307\322	\323\324\nA!\325\")\"\307\326\311\211@)!\312!#\313\327\315\n8)\316#\313\330\320\n8)\321#\307\331\323\324\nA!\325\")\"\307\332\311\f!\"\313\333\316#\307\334@AB\211CB\236A\206 \335*\"\307\336D\211E\203\217 \337\202\220 \340)\"\307\341\311F\211@)!\312F!#\313\342F\315\n8)\316#\313\343F\320\n8)\321#\307\344F\323\324\nA!\325\")\"\307\345\311G!\"\313\346H\316#\307\347IAB\211CB\236A\206\345 \335*\"\307\350J\211E\203\365 \337\202\366 \340)\"\307\351\311K\211@)!\312K!#\313\352K\315\n8)\316#\313\353K\320\n8)\354#\307\355K\323\324\nA!\325\")\"\307\356\311L!\"\313\357M\316#\307\360NAB\211CB\236A\206K\335*\"\307\361O\211E\203[\337\202\\\340)\"\307\362\311P\211@)!\312P!#\313\363P\315\n8)\316#\313\364P\320\n8)\365#\307\366P\323\324\nA!\325\")\"\307\367\311Q!\"\313\370R\316#\307\371SAB\211CB\236A\206\261\335*\"\307\372T\211E\203\301\337\202\302\340)\"\307\373\311U\211@)!\312U!#\313\374U\315\n8)\316#\313\375U\320\n8)\376#\307\377U\323\324\nA!\325\")\"\307\201e \311V!\"\313\201f W\316#\307\201g XAB\211CB\236A\206\335*\"\307\201h Y\211E\203/\337\2020\340)\"\307\201i \311Z!\"\307\201j \311[!\"\313\201k \\\316#\307\201l ]^B\211CB\236A\206a\335*\"\307\201m _AB\211CB\236A\206x\335*\"\307\201n \201o `!\211a;\203\220a\202\223\201p )\"\201q b\205\237c\2605\211d\261\207" [ebnf-settings ebnf-production-font font ebnf-terminal-font ebnf-terminal-border-width ebnf-terminal-border-color "\n\n% === begin EBNF settings\n\n" format "/fP            %s /%s DefFont\n" ebnf-format-float ebnf-font-name-select ebnf-format-color "/ForegroundP   %s def %% %s\n" 2 "Black" "/BackgroundP   %s def %% %s\n" 3 "White" "/EffectP       %d def\n" lsh ps-extension-bit -2 "/fT            %s /%s DefFont\n" "/ForegroundT   %s def %% %s\n" "/BackgroundT   %s def %% %s\n" "/EffectT       %d def\n" "/BorderWidthT  %s def\n" "/BorderColorT  %s def %% %s\n" "/ShapeT        %d def\n" 0 "/ShadowT       %s def\n" "true" "false" "/fNT           %s /%s DefFont\n" "/ForegroundNT  %s def %% %s\n" "/BackgroundNT  %s def %% %s\n" "/EffectNT      %d def\n" "/BorderWidthNT %s def\n" "/BorderColorNT %s def %% %s\n" "/ShapeNT       %d def\n" "/ShadowNT      %s def\n" "/fS            %s /%s DefFont\n" "/ForegroundS   %s def %% %s\n" "/BackgroundS   %s def %% %s\n" "Gray95" "/EffectS       %d def\n" "/BorderWidthS  %s def\n" "/BorderColorS  %s def %% %s\n" "/ShapeS        %d def\n" "/ShadowS       %s def\n" "/fE            %s /%s DefFont\n" "/ForegroundE   %s def %% %s\n" "/BackgroundE   %s def %% %s\n" "Gray90" "/EffectE       %d def\n" "/BorderWidthE  %s def\n" "/BorderColorE  %s def %% %s\n" "/ShapeE        %d def\n" "/ShadowE       %s def\n" "/fR            %s /%s DefFont\n" "/ForegroundR   %s def %% %s\n" "/BackgroundR   %s def %% %s\n" "Gray85" "/EffectR       %d def\n" ebnf-terminal-shape ebnf-terminal-shape-alist alist sym ebnf-terminal-shadow value ebnf-non-terminal-font ebnf-non-terminal-border-width ebnf-non-terminal-border-color ebnf-non-terminal-shape ebnf-non-terminal-shadow ebnf-special-font ebnf-special-border-width ebnf-special-border-color ebnf-special-shape ebnf-special-shadow ebnf-except-font ebnf-except-border-width ebnf-except-border-color ebnf-except-shape ebnf-except-shadow ebnf-repeat-font ebnf-repeat-border-width ebnf-repeat-border-color ebnf-repeat-shape ebnf-repeat-shadow ebnf-default-width ebnf-line-width ebnf-line-color ebnf-arrow-shape ebnf-arrow-shape-alist ebnf-chart-shape ebnf-user-arrow arrow ebnf-debug-ps ebnf-debug ebnf-prologue "/BorderWidthR  %s def\n" "/BorderColorR  %s def %% %s\n" "/ShapeR        %d def\n" "/ShadowR       %s def\n" "/DefaultWidth  %s def\n" "/LineWidth     %s def\n" "/LineColor     %s def %% %s\n" "/ArrowShape    %d def\n" "/ChartShape    %d def\n" "/UserArrow{%s}def\n" eval "" "\n% === end   EBNF settings\n\n"] 55])
(defalias 'ebnf-dimensions #[(tree) "G\303\304\305\"\210*\207" [tree ebnf-nprod ebnf-total 0 mapcar ebnf-production-dimension] 3])
(defalias 'ebnf-production-dimension #[(production) "\306\307\310\311	T\211\312_\n\245!#\210)\313H\314H\313H!\210\313H\\\f\315H\\\316I\210\315I\210\317\f\317H\\I*\207" [messag ebnf-nprod ebnf-total production prod ebnf-font-height-P "Calculating dimensions" message "%s...%3d%%" round 100.0 7 2 4 3 5 ebnf-basic-height height ebnf-horizontal-space] 6])
(defalias 'ebnf-terminal-dimension #[(terminal) "\304	\n$\207" [terminal ebnf-font-height-T ebnf-font-width-T ebnf-space-T ebnf-terminal-dimension1] 5])
(defalias 'ebnf-non-terminal-dimension #[(non-terminal) "\304	\n$\207" [non-terminal ebnf-font-height-NT ebnf-font-width-NT ebnf-space-NT ebnf-terminal-dimension1] 5])
(defalias 'ebnf-special-dimension #[(special) "\304	\n$\207" [special ebnf-font-height-S ebnf-font-width-S ebnf-space-S ebnf-terminal-dimension1] 5])
(defalias 'ebnf-terminal-dimension1 #[(node font-height font-width space) "	\\\\\n\306HG\n\307\f\310_I\210\n\311\fI\210\n\312\\_\\\\\\I*\207" [space font-height node len height ebnf-basic-width 6 3 0.5 4 5 font-width] 5])
(byte-code "\301B\302\303\211\211\304\305\306&\301\207" [current-load-list ebnf-null-vector vector t 0.0 0.0 0.0] 7)
(defalias 'ebnf-repeat-dimension #[(repeat) "\306H\307H	\203 	\310H	!\210\202 \311	\311H\f\\I\210\312	\312H]\f\\\f\\I\210\313	\313H\f\\\f\\\f\\\f\\\nG_\\I*\207" [repeat element times ebnf-null-vector ebnf-space-R ebnf-font-height-S 6 7 2 3 4 5 ebnf-horizontal-space ebnf-font-width-R] 5])
(defalias 'ebnf-except-dimension #[(except) "\306H\307H\211\310H\n!\210	\203 	\310H	!\210\202 \311\n\311H	\311H]\f\\I\210\312\n\312H	\312H]\f\\\f\\I\210\313\n\313H	\313H\\\f\\\f\\\f\\\f\\\\\f\\I*\207" [except element factor ebnf-null-vector ebnf-space-E ebnf-font-width-E 6 7 2 3 4 5 ebnf-horizontal-space] 6])
(defalias 'ebnf-alternative-dimension #[(alternative) "\306H\306H	\203 	@\307H	@!\210	A\211\204\f \310\311\n\312\n!@\n@\313H\314\203Q @A\315H\\\316H]\2020 \317\n\"\210\nGS_\\\313\f\320\fZ\315H\313HZZ!\\I\210\315I\210\316\\I\210\306\nI.\207" [alternative lis body node entry tail 6 2 0.0 0.0 last 3 nil 4 5 ebnf-adjust-width ebnf-entry alt width height ebnf-vertical-space ebnf-horizontal-space] 9])
(defalias 'ebnf-optional-dimension #[(optional) "\304H\211\305H	!\210\306	\306HI\210\307	\307H\n\\I\210\310	\310H\\I)\207" [optional body ebnf-vertical-space ebnf-horizontal-space 6 2 3 4 5] 5])
(defalias 'ebnf-one-or-more-dimension #[(or-more) "\306H\307H\211\310H\n!\210	\203 	\310H	!\210	\203\" 	\311H\202# \312\\\n\311H\\	\2033 	\313H\2024 \314\n\313H]	\203H \315\n\f\"\210\315	\f\"\210\316\n\311HZ\n\316H\\I\210\311I\210\313\f\\I,\207" [or-more sep-part list-part ebnf-vertical-space width height 6 7 2 4 0.0 5 0.0 ebnf-adjust-width 3 ebnf-horizontal-space] 6])
(defalias 'ebnf-zero-or-more-dimension #[(or-more) "\306H\307H\211\310H\n!\210	\203 	\310H	!\210	\203\" 	\311H\202# \312\\\n\311H\\\\	\2035 	\313H\2026 \314\n\313H]	\203J \315\n\f\"\210\315	\f\"\210\316I\210\311I\210\313\f\\I,\207" [or-more sep-part list-part ebnf-vertical-space width height 6 7 2 4 0.0 5 0.0 ebnf-adjust-width 3 ebnf-horizontal-space] 5])
(defalias 'ebnf-sequence-dimension #[(sequence) "\306\307\310\311H\312\211\203: @A	\313H	!\210	\314H\n]	\315H\nZ]\f	\316H\\\202 \314I\210\315\\I\210\316\fI.\207" [sequence node entry lis width below 0.0 0.0 0.0 6 nil 2 3 4 5 above] 6])
(defalias 'ebnf-adjust-width #[(node width) "<\203 \211\203P \303@	\"\240\210A\211\202 \304!\203O 	\305HU\203) \207\n\306=\2035 \307	\310#\207\n\311=\203A \307	\312#\207\313H	\"\210\305	I\210\207\207" [node width ebnf-justify-sequence ebnf-adjust-width vectorp 5 left ebnf-adjust-empty nil right t 1] 6])
(defalias 'ebnf-adjust-empty #[(node width last-p) "\304H\305=\203 \306	I\210\207\307	\306HZ!\310\203# \nD\202& \nD\")\207" [node width empty last-p 0 ebnf-generate-empty 5 ebnf-make-empty ebnf-make-dup-sequence] 4])
(defalias 'ebnf-alternative-width #[(alternative width) "\303\304H	\nZ\"\207" [alternative width ebnf-horizontal-space ebnf-adjust-width 6] 4])
(defalias 'ebnf-list-width #[(or-more width) "	Z\n\303\304\n\211\303H#I\210\n\305\304\n\211\305H#I\207" [width ebnf-horizontal-space or-more 6 ebnf-justify-list 7] 6])
(defalias 'ebnf-sequence-width #[(sequence width) "\302\303\211\302H	#I\207" [sequence width 6 ebnf-justify-list] 6])
(defalias 'ebnf-justify-list #[(node seq width) "\306H\n	U\203 \202Q \f\307=\203 \310	\n\311%\202Q \f\312=\203. \310	\n\313%\202Q \n	ZG\245\203O \314@@\306H\\\"\210A\211\204< *)\207" [node seq-width width seq ebnf-justify-sequence lis 5 left ebnf-justify t right nil ebnf-adjust-width the-width] 7])
(defalias 'ebnf-justify #[(node seq seq-width width last-p) "\203\n \305	!\202 	@\211\306H\307=\203$ \n\310\fZ\n\310H\\I\210	\202: \2033 	\311\fZ!C\244\202: \311\fZ!	B)\207" [last-p seq term width seq-width last 0 ebnf-generate-empty 5 ebnf-make-empty] 6])
(defalias 'ebnf-eps-add-context #[(name) "\303!\211\n\235\203 \304\305	\"\202 	\nB\211)\207" [name filename ebnf-eps-context ebnf-eps-filename error "Try to open an already opened EPS file: %s"] 4])
(defalias 'ebnf-eps-remove-context #[(name) "\303!\211\n\235\203 \304	\n\"\211\202 \305\306	\")\207" [name filename ebnf-eps-context ebnf-eps-filename delete error "Try to close a not opened EPS file: %s"] 4])
(defalias 'ebnf-eps-add-production #[(header) "\205% 	\205% \305\n\"\211\203 \f\306	\fA\"\241\202$ \n\307	!BB\211)\207" [ebnf-eps-executing ebnf-eps-context header ebnf-eps-production-list prod assoc append ebnf-dup-list] 5])
(defalias 'ebnf-dup-list #[(old) "\302	\203 	@B	A\211\204 \237)\207" [new old nil] 3])
(defalias 'ebnf-buffer-substring #[(chars) "\302`	w\210`\"\207" [chars ebnf-limit buffer-substring-no-properties] 4])
(byte-code "\301B\302\303\304\305#\301\207" [current-load-list ebnf-8-bit-chars ebnf-range-regexp "" 160 255] 4)
(defalias 'ebnf-string #[(chars eos-char kind) "\305u\210\306`	P\nw\210m\204 gU\204 \307\310\f#\202\" \305u\210`S\"\207" [chars ebnf-8-bit-chars ebnf-limit eos-char kind nil buffer-substring-no-properties error "Illegal %s: missing `%c'"] 6])
(defalias 'ebnf-get-string #[nil "\300u\210\301`\302 \"\207" [nil buffer-substring-no-properties ebnf-end-of-string] 3])
(defalias 'ebnf-end-of-string #[nil "\302\303\302\"\304V\203 \305	w\210\306\307x[`\\\302\\b\210\202 )h\310U\203( `S\207\311\312!\207" [n ebnf-limit 1 logand 0 "^\"" "\\\\" nil 34 error "Missing `\"'"] 3])
(defalias 'ebnf-trim-right #[(str) "GS\211\211\303V\203 \nH\304U\203 \nS\211\202 \n	U\203% \202* \303\nTO*\207" [str len index 0 32] 4])
(defalias 'ebnf-make-empty #[(&optional width) "\302\303\304\211\305\306\206 	&\207" [width ebnf-horizontal-space vector ebnf-generate-empty ignore 0.0 0.0] 7])
(defalias 'ebnf-make-terminal #[(name) "\301\302\303#\207" [name ebnf-make-terminal1 ebnf-generate-terminal ebnf-terminal-dimension] 4])
(defalias 'ebnf-make-non-terminal #[(name) "\301\302\303#\207" [name ebnf-make-terminal1 ebnf-generate-non-terminal ebnf-non-terminal-dimension] 4])
(defalias 'ebnf-make-special #[(name) "\301\302\303#\207" [name ebnf-make-terminal1 ebnf-generate-special ebnf-special-dimension] 4])
(defalias 'ebnf-make-terminal1 #[(name gen-func dim-func) "\305\306	\307\310\311\nG\211\312V\203 \n\202. \312U\203  \313\nP\202. \314U\203- \313\n\313Q\202. \315)\f&\207" [gen-func dim-func name len ebnf-default-p vector ignore 0.0 0.0 0.0 2 " " 1 "   "] 11])
(defalias 'ebnf-make-one-or-more #[(list-part &optional sep-part) "\302\303\304	$\207" [list-part sep-part ebnf-make-or-more1 ebnf-generate-one-or-more ebnf-one-or-more-dimension] 5])
(defalias 'ebnf-make-zero-or-more #[(list-part &optional sep-part) "\302\303\304	$\207" [list-part sep-part ebnf-make-or-more1 ebnf-generate-zero-or-more ebnf-zero-or-more-dimension] 5])
(defalias 'ebnf-make-or-more1 #[(gen-func dim-func list-part sep-part) "\304\305	\306\307\310\n<\203 \311\n!\202 \n\203\" <\203\" \311!\202# &\207" [gen-func dim-func list-part sep-part vector ebnf-list-width 0.0 0.0 0.0 ebnf-make-sequence] 10])
(defalias 'ebnf-make-production #[(name prod action) "\303\304\305\306\307\310\311	\n&	\207" [name prod action vector ebnf-generate-production ignore ebnf-production-dimension 0.0 0.0 0.0] 10])
(defalias 'ebnf-make-alternative #[(body) "\301\302\303\304\305\306\307&\207" [body vector ebnf-generate-alternative ebnf-alternative-width ebnf-alternative-dimension 0.0 0.0 0.0] 8])
(defalias 'ebnf-make-optional #[(body) "\301\302\303\304\305\306\307&\207" [body vector ebnf-generate-optional ebnf-alternative-width ebnf-optional-dimension 0.0 0.0 0.0] 8])
(defalias 'ebnf-make-except #[(factor exception) "\302\303\304\305\306\307\310	&\207" [factor exception vector ebnf-generate-except ignore ebnf-except-dimension 0.0 0.0 0.0] 9])
(defalias 'ebnf-make-repeat #[(times primary) "\302\303\304\305\306\307\310\311P	&\207" [times primary vector ebnf-generate-repeat ignore ebnf-repeat-dimension 0.0 0.0 0.0 " *"] 9])
(defalias 'ebnf-make-sequence #[(seq) "\301\302\303\304\305\306\307&\207" [seq vector ebnf-generate-sequence ebnf-sequence-width ebnf-sequence-dimension 0.0 0.0 0.0] 8])
(defalias 'ebnf-make-dup-sequence #[(node seq) "\302\303\304\305\306H\307H\310H	&\207" [node seq vector ebnf-generate-sequence ebnf-sequence-width ebnf-sequence-dimension 3 4 5] 8])
(defalias 'ebnf-token-except #[(element exception) "@A	\205\211 	\305H\204 \n\306=\203 	\307H\202\210 \2045 \n\310=\2035 	\305\311I\210	\312\313I\210	\202\210 \204\204 \n\314=\203\204 \315	\307H!@\305H\316=\203\204 	\307H\317\211A\203` \f\fA\211\202S \204m \320	\321H!\202 \317\241\210	\307H\211G\322U\203 \f@	*\202\210 \323	\")B\207" [exception element kind bef elt 0 ebnf-generate-optional 6 ebnf-generate-zero-or-more ebnf-generate-one-or-more 2 ebnf-one-or-more-dimension ebnf-generate-alternative last ebnf-generate-empty nil ebnf-make-empty 5 1 ebnf-make-except] 5])
(defalias 'ebnf-token-repeat #[(times repeat) "A\204 \207@\302	A\"B\207" [repeat times ebnf-make-repeat] 4])
(defalias 'ebnf-token-optional #[(body) "\302H\211\303=\203 \304\202? 	\305=\203 \202? 	\306=\203' \302\305I\210\202? 	\307=\203< \310\310H\311 C\244I\210\202? \312!)\207" [body kind 0 ebnf-generate-empty nil ebnf-generate-zero-or-more ebnf-generate-one-or-more ebnf-generate-alternative 6 ebnf-make-empty ebnf-make-optional] 5])
(defalias 'ebnf-token-alternative #[(body sequence) "\204 	A\203 	\207	@\303 B\207	@	AG\304U\203& \n\204& @\2024 \305\n\2031 \nB\2022 \237!)B\207" [body sequence seq ebnf-make-empty 1 ebnf-make-alternative] 4])
#@59 Vector used to map characters to a special comment token.
(defconst ebnf-comment-table (byte-code "\301\302\303\"\211\304\305I\210\306\307I\210)\207" [table make-vector 256 nil 60 newline 62 keep-line] 4) (#$ . 96162))
#@14 EBNF parser.
(autoload 'ebnf-bnf-parser "ebnf-bnf" '(#$ . 96390))
#@30 Initialize EBNF token table.
(autoload 'ebnf-bnf-initialize "ebnf-bnf" '(#$ . 96462))
#@18 ISO EBNF parser.
(autoload 'ebnf-iso-parser "ebnf-iso" '(#$ . 96554))
#@34 Initialize ISO EBNF token table.
(autoload 'ebnf-iso-initialize "ebnf-iso" '(#$ . 96630))
#@20 Yacc/Bison parser.
(autoload 'ebnf-yac-parser "ebnf-yac" '(#$ . 96726))
#@40 Initializations for Yacc/Bison parser.
(autoload 'ebnf-yac-initialize "ebnf-yac" '(#$ . 96804))
#@24 Eliminate empty rules.
(autoload 'ebnf-eliminate-empty-rules "ebnf-otz" '(#$ . 96906))
#@27 Syntatic chart optimizer.
(autoload 'ebnf-optimize "ebnf-otz" '(#$ . 96999))
#@23 Initialize optimizer.
(autoload 'ebnf-otz-initialize "ebnf-otz" '(#$ . 97082))
(provide 'ebnf2ps)
