;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:50:51 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/progmodes/ebnf-iso.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 "`ebnf-iso.el' was compiled for Emacs 19.29 or later"))

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


(require 'ebnf-otz)
#@44 Value returned by `ebnf-iso-lex' function.
(defvar ebnf-iso-lex nil (#$ . 648))
(byte-code "\301B\302\302\207" [current-load-list ebnf-no-meta-identifier nil] 2)
#@18 ISO EBNF parser.
(defalias 'ebnf-iso-parser #[(start) "	ZT	S`\306\211\211	b\210\307 \211\310=\203\" \311\312!\210\310=\204Y \313`Z\314_\245\315\316\"\"\210*\317!\211A@\320\n!\204\" \n\fB\202\" b\210\f.\207" [ebnf-limit start rule token syntax-list origin nil ebnf-iso-lex end-of-input error "Invalid ISO EBNF file format" "Parsing...%s%%" 100.0 message format ebnf-iso-syntax-rule ebnf-add-empty-rule-list bias total value format-str ebnf-message-float] 7 (#$ . 819)])
(defalias 'ebnf-iso-syntax-rule #[(token) "	\306\306\307=\204 \310\311!\210\300 \312=\204 \310\313!\210\314 \211@\315=\204+ \310\316!\210\nA\317\f!\210\300 \320\f\n#+B\207" [ebnf-iso-lex ebnf-action body action header token nil non-terminal error "Invalid meta identifier syntax rule" equal "Invalid syntax rule: missing `='" ebnf-iso-definition-list period "Invalid syntax rule: missing `;' or `.'" ebnf-eps-add-production ebnf-make-production] 6])
(defalias 'ebnf-iso-definition-list #[nil "\302\211\303 \211@\304=\203 A\211	B\202 \305	\"*\207" [sequence body nil ebnf-iso-single-definition alternative ebnf-token-alternative] 4])
(defalias 'ebnf-iso-single-definition #[nil "\303\211\211\304\305 !\211@A\211\203\" \n\306=\203\" 	B\202 \n	\204+ \202A \204; 	G\307U\203; 	@\202A \310	B\237!+B\207" [term seq token nil ebnf-iso-term ebnf-iso-lex catenate 1 ebnf-make-sequence] 5])
(defalias 'ebnf-iso-term #[(token) "\303!\211@\304=\204 	\202 \305\306	A\303\307 !\"))\207" [token factor ebnf-no-meta-identifier ebnf-iso-factor except t ebnf-token-except ebnf-iso-lex] 5])
(defalias 'ebnf-iso-factor #[(token) "\303=\203 	\301 \304=\204 \305\306!\210\307\n\310\301 !\")\207\310!\207" [token ebnf-iso-lex times integer repeat error "Missing `*'" ebnf-token-repeat ebnf-iso-primary] 4])
(defalias 'ebnf-iso-primary #[(token) "\305=\203\f \306	!\202y \307=\203 \310	!\202y \311=\203$ \312	!\202y \313=\203> \314 \211@\315=\2048 \316\317!\210\nA)\202y \320=\203Z \314 \211@\321=\204R \316\322!\210\323\nA!)\202y \324=\203x \314 \211A\n@\325=\204q \316\326!\210\327!*\202y \330\211\203\203 \301 \202\204 \f)B\207" [token ebnf-iso-lex body repeat primary terminal ebnf-make-terminal non-terminal ebnf-make-non-terminal special ebnf-make-special begin-group ebnf-iso-definition-list end-group error "Missing `)'" begin-optional end-optional "Missing `]' or `/)'" ebnf-token-optional begin-zero-or-more end-zero-or-more "Missing `}' or `:)'" ebnf-make-zero-or-more nil] 3])
#@51 Vector used to map characters to a lexical token.
(defconst ebnf-iso-token-table (byte-code "\302\303\304\"\305\306W\203 	\307I\210T\211\202 \310W\203+ 	\311I\210T\211\202 \312W\203= 	\307I\210T\211\202, \313W\203O 	\314I\210T\211\202> \315W\203a 	\307I\210T\211\202P \316W\203s 	\314I\210T\211\202b \317W\203\205 	\307I\210T\211\202t \320\320\303W\203\231 	\314I\210T\211\202\210 	\321\322I\210	\323\322I\210	\324\322I\210	\325\322I\210	\305\322I\210	\326\327I\210	\330\331I\210	\332\333I\210	\334\335I\210	\336\337I\210	\340\341I\210	\342\343I\210	\344\345I\210	\346\347I\210	*\207" [char table make-vector 256 error 32 48 character 58 integer 65 91 non-terminal 97 123 127 160 11 space 10 13 9 12 form-feed 34 double-terminal 39 single-terminal 63 special 42 repeat 44 catenate 45 except 61 equal 41 end-group] 4) (#$ . 3349))
#@34 Initialize ISO EBNF token table.
(defalias 'ebnf-iso-initialize #[nil "\203; 	\302\303I\210	\304\305I\210	\306\305I\210	\307\305I\210	\310\305I\210	\311\305I\210	\312\305I\210	\313\314I\210	\315\316I\210	\317\320I\210	\321\322I\207	\302\323I\210	\304\324I\210	\306\325I\210	\307\326I\210	\310\327I\210	\311\316I\210	\312\322I\210	\313\305I\210	\315\305I\210	\317\305I\210	\321\305I\207" [ebnf-iso-alternative-p ebnf-iso-token-table 40 left-parenthesis 91 character 93 123 125 124 59 47 slash 33 alternative 58 colon 46 period begin-parenthesis begin-optional end-optional begin-zero-or-more end-zero-or-more] 3 (#$ . 4222)])
(byte-code "\301B\302\303\304\305#\301\207" [current-load-list ebnf-iso-non-terminal-chars ebnf-range-regexp " 0-9A-Za-z" 160 255] 4)
#@105 Lexical analyser for ISO EBNF.

Return a lexical token.

See documentation for variable `ebnf-iso-lex'.
(defalias 'ebnf-iso-lex #[nil "`Y\203 \306\207\307g\310V\203 \311\202W \ngH\211\312=\203) \313w\210`W\202T 	\314=\2045 	\315=\203D \307u\210g\316U\203W \317 \210\202\n 	\320=\203S \307u\210\320\211\202T \307\204\n `Y\203a \306\2022	\311=\203m \311\321!\2022	\322=\203{ \323\324!\322\2022	\325=\203\216 \326\327\330\331\332#\326Q\325\2022	\333=\203\236 \327\334\335\336#\337\2022	\340=\203\256 \327\341\342\336#\337\2022	\343=\203\311 \344\345\323!!!3\203\305 \311\346!\210\343\2022	\315=\203\360 \307u\210g\347U\203\337 \307u\210\350\2022g\351U\203\354 \307u\210\352\2022\353\2022	\354=\203\n\307u\210g\355U\204\356\2022\307u\210\357\2022	\360=\203$\307u\210g\355U\204\361\2022\307u\210\362\2022	\314=\203.\353\2022\307u\210	)\207" [ebnf-limit token ebnf-iso-token-table ebnf-action ebnf-iso-lex ebnf-iso-non-terminal-chars end-of-input nil 255 error space " \n	" begin-parenthesis left-parenthesis 42 ebnf-iso-skip-comment form-feed "Illegal character" integer ebnf-buffer-substring "0-9" special "?" ebnf-string " ->@-~" 63 "special" double-terminal " !#-~" 34 "terminal" terminal single-terminal " -&(-~" 39 non-terminal ebnf-iso-normalize ebnf-trim-right "Exception sequence should not contain a meta identifier" 47 begin-optional 58 begin-zero-or-more begin-group slash 41 alternative end-optional colon character end-zero-or-more ebnf-no-meta-identifier] 6 (#$ . 4992)])
(byte-code "\301B\302\303\304\305#\301\207" [current-load-list ebnf-iso-comment-chars ebnf-range-regexp "^*( --" 127 159] 4)
(defalias 'ebnf-iso-skip-comment #[nil "\306u\210\203 g\307U\203 \310\311 !\210\202+ \203' g\312U\203' \313\311 !\210\202+ 	gH\314\315V\205 \fw\210`Y\203D \316\317!\210\202- g\320U\203^ \321w\210g\322U\203- \306u\210S\211\202. g\323U\203x \324w\210g\320U\203- \306u\210T\211\202. \316\325!\210\202- )\207" [ebnf-eps-executing ebnf-comment-table ebnf-action pair ebnf-iso-comment-chars ebnf-limit nil 91 ebnf-eps-add-context ebnf-iso-eps-filename 93 ebnf-eps-remove-context 1 0 error "Missing end of comment: `*)'" 42 "*" 41 40 "(" "Illegal character"] 3])
(defalias 'ebnf-iso-eps-filename #[nil "\304u\210\305`\306P\304	\204P \nw\210`Y\203 `\202K g\307U\2034 \310w\210g\311U\205K \312u\210`\202K g\313U\203J \304u\210g\307U\205K \312u\210`\202K `\211\203 	*\"\207" [ebnf-iso-comment-chars found chars ebnf-limit nil buffer-substring-no-properties "\n" 42 "*" 41 -1 40] 5])
(defalias 'ebnf-iso-normalize #[(str) "\204 	\207	G\306\211\fW\203< 	H\307U\204\" T\211\202 T\fW\203 	H\307U\203 T\nT\202% \310\n!\203F 	\202\261 \311\f\nZ\307\"\306\n\306\n\306V\203\227 	H\307U\204q \n	HI\210TT\202R \n	HI\210TT\n\306V\203R 	H\307U\203R T\nS\211\202\200 \fW\203\256 \n	HI\210TT\202\227 \n*+\207" [ebnf-iso-normalize-p str spaces stri len newi 0 32 zerop make-string new] 5])
(provide 'ebnf-iso)
