;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(require 'ebnf-otz)
#@44 Value returned by `ebnf-ebx-lex' function.
(defvar ebnf-ebx-lex nil (#$ . 104))
#@27 EBNFX parser.

(fn START)
(defalias 'ebnf-ebx-parser #[257 "ZTS`\302\211\211b\210\303 \262\304=\203 \305\306!\210\307=\203& \303 \262\304=\204Z \310`Z\311_\245\312\313	\"\"\266\314!\262A\262@\262\315!\204& \211B\262\202& b\210\207" [ebnf-limit ebnf-message-float nil ebnf-ebx-lex end-of-input error "Invalid EBNFX file format" end-of-rule "Parsing...%s%%" 100.0 message format ebnf-ebx-rule ebnf-add-empty-rule-list] 14 (#$ . 190)])
#@14 

(fn TOKEN)
(defalias 'ebnf-ebx-rule #[257 "	\302\211\303=\204 \304\305!\210\300 \262\306=\204 \304\307!\210\310 \262\211@\311>\204, \304\312!\210\211A\262\313!\210\300 \314#B\207" [ebnf-ebx-lex ebnf-action nil non-terminal error "Invalid rule name" production "Invalid rule: missing `::='" ebnf-ebx-expression (end-of-rule end-of-input) "Invalid rule: there is no end of rule" ebnf-eps-add-production ebnf-make-production] 9 (#$ . 658)])
(defalias 'ebnf-ebx-expression #[0 "\300\211\301\302 !\211\262@\303=\203 \211AB\262\202 \304\"\207" [nil ebnf-ebx-concatenation ebnf-ebx-lex alternative ebnf-token-alternative] 5])
#@14 

(fn TOKEN)
(defalias 'ebnf-ebx-concatenation #[257 "\300!\301@\262A\211\262\204 \302\303!\210C\262\300!\262@\262A\211\262\2031 B\262\202 \304!B\207" [ebnf-ebx-exception nil error "Empty element" ebnf-token-sequence] 6 (#$ . 1305)])
#@14 

(fn TOKEN)
(defalias 'ebnf-ebx-exception #[257 "\300!\211@\301=\203 \300\302 !\211@\303AA\"B\207\207" [ebnf-ebx-term exception ebnf-ebx-lex ebnf-make-except] 7 (#$ . 1565)])
#@14 

(fn TOKEN)
(defalias 'ebnf-ebx-term #[257 "\300!\211\2032 \301 \262\302\267\2022 \303!\262\301 \262\2022 \304!\262\301 \262\2022 \305!\262\301 \262B\207" [ebnf-ebx-factor ebnf-ebx-lex #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (zero-or-more 17 one-or-more 29 optional 41)) ebnf-make-zero-or-more ebnf-make-one-or-more ebnf-token-optional] 4 (#$ . 1751)])
#@14 

(fn TOKEN)
(defalias 'ebnf-ebx-factor #[257 "\211\301\267\202 \302!\207\303!\207\304 \211@\305=\204 \306\307!\210\211A\207\310\207" [ebnf-ebx-lex #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (terminal 6 non-terminal 10 begin-group 14)) ebnf-make-terminal ebnf-make-non-terminal ebnf-ebx-expression end-group error "Missing `)'" nil] 4 (#$ . 2170)])
#@51 Vector used to map characters to a lexical token.
(defconst ebnf-ebx-token-table (make-vector 256 'error) (#$ . 2571))
#@31 Initialize EBNFX token table.
(defalias 'ebnf-ebx-initialize #[0 "\301\211\302W\203 \303I\210\211T\262\202 \304\262\211\305W\203( \303I\210\211T\262\202 \306\262\211\307W\203= \303I\210\211T\262\202+ \310\311I\210\312\311I\210\313\314I\210\315\314I\210\316\314I\210\317\320I\210\321\322I\210\323\324I\210\325\326I\210\327\330I\210\331\332I\210\333\334I\210\335\336I\210\302\337I\210\340\341I\210\342\343I\210\344\345I\210\346\347I\210\350\351I\207" [ebnf-ebx-token-table 65 91 non-terminal 97 123 160 256 10 end-of-rule 13 11 space 9 32 12 form-feed 35 hash 34 double-quote 39 single-quote 40 begin-group 41 end-group 45 exception 58 colon begin-square 124 alternative 42 zero-or-more 43 one-or-more 63 optional 47 comment] 4 (#$ . 2696)])
(defconst ebnf-ebx-non-terminal-chars "-_A-Za-z -ÿ")
(defconst ebnf-ebx-non-terminal-letter-chars "A-Za-z -ÿ")
#@102 Lexical analyzer for EBNFX.

Return a lexical token.

See documentation for variable `ebnf-ebx-lex'.
(defalias 'ebnf-ebx-lex #[0 "`Y\203 \306\207\307g\310V\203 \311\262\202U 	gH\262\211\312\267\202= \313w\210`W\202R \314 \202R \307u\210\315\211\202R \316 \202R \211\317=\203Q \320\321\322!)\203Q \323 \202R \307\204	 `Y\203] \306\207\211\324\267\202\224 \311\325!\207\326\207\327 \330\207\331\332!\330\207\331\333!\330\207\334 \330\207\335!\336\207\321\337!\204\217 \311\340!\210\341u\210\342\207\307u\210\207" [ebnf-limit ebnf-ebx-token-table ebnf-action case-fold-search ebnf-ebx-lex ebnf-ebx-non-terminal-chars end-of-input nil 255 error #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (space 32 comment 42 form-feed 47 end-of-rule 56)) " 	" ebnf-ebx-skip-comment form-feed ebnf-ebx-skip-end-of-rule begin-square t looking-at "\\[\\(wfc\\|vc\\):" ebnf-ebx-skip-constraint #s(hash-table size 8 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (error 99 end-of-rule 103 hash 105 double-quote 110 single-quote 116 begin-square 122 non-terminal 127 colon 133)) "Invalid character" end-of-rule ebnf-ebx-character terminal ebnf-ebx-string 34 39 ebnf-ebx-range ebnf-buffer-substring non-terminal "::=" "Missing `::=' token" 3 production] 3 (#$ . 3591)])
(defconst ebnf-ebx-constraint-chars "^ --]-")
(defalias 'ebnf-ebx-skip-constraint #[0 "	w\302V\204\f \303\304!\210g\305U\204 \303\306!\210\307u\210\310\207" [ebnf-ebx-constraint-chars ebnf-limit 0 error "Invalid character" 93 "Missing end of constraint `]'" nil t] 2])
(defalias 'ebnf-ebx-skip-end-of-rule #[0 "\301\302w\303V\206\n \211\262\304w\210g\305U\203 \306 \204 \211?\207" [ebnf-limit nil "\n" 1 " 	" 47 ebnf-ebx-skip-comment] 3])
(defconst ebnf-ebx-comment-chars "^ --*-")
(defconst ebnf-ebx-filename-chars "^ -*-")
(defalias 'ebnf-ebx-skip-comment #[0 "\305u\210g\306U\204 \307\310!\210\305u\210\203\" g\311U\203\" \312\313 !\210\202\\ \2034 g\314U\2034 \315\313 !\210\202\\ \203F g\316U\203F \317\313 !\210\202\\ \203X g\320U\203X \321\313 !\210\202\\ 	gH\fw\210g\306U\204j \307\322!\210\305u\210g\323U\204y `\fW\204\\ `\fY\203\203 \307\322!\210\305u\210\324\207" [ebnf-eps-executing ebnf-comment-table ebnf-action ebnf-ebx-comment-chars ebnf-limit nil 42 error "Invalid beginning of comment" 91 ebnf-eps-add-context ebnf-ebx-eps-filename 93 ebnf-eps-remove-context 72 ebnf-eps-header-comment 70 ebnf-eps-footer-comment "Missing end of comment" 47 t] 2])
(defalias 'ebnf-ebx-eps-filename #[0 "\302u\210\302\211\303!P\262`	W\2037 \304	w\211\262\305V\2037 `	W\2037 g\306U\2047 \307\310\"P\262\302\262\202 \211\203A \211\305U\203C \207`	W\203S g\306U\203S \211S\262\307\310\"P\207" [ebnf-ebx-filename-chars ebnf-limit nil ebnf-buffer-substring "*" 0 47 make-string 42] 6])
(defconst ebnf-ebx-double-string-chars "	 -!#-~ -ÿ")
(defconst ebnf-ebx-single-string-chars "	 -&(-~ -ÿ")
#@14 

(fn DELIM)
(defalias 'ebnf-ebx-string #[257 "\303\304u\210`\305U\203 \202 	\nw\210gU\204 \306\307\"\210`\304u\210\"\207" [ebnf-ebx-double-string-chars ebnf-ebx-single-string-chars ebnf-limit buffer-substring-no-properties nil 34 error "Missing string delimiter `%c'"] 6 (#$ . 6558)])
(defalias 'ebnf-ebx-character #[0 "\300`\301 \210`\"\207" [buffer-substring-no-properties ebnf-ebx-hex-character] 3])
(defalias 'ebnf-ebx-range #[0 "\301`\302u\210g\303U\203 \302u\210g\304U\203 \302u\210\305 \210g\304U\203& \302u\210\305 \210g\306U\2042 `W\204 `Y\203< \307\310!\210\302u\210`\"\207" [ebnf-limit buffer-substring-no-properties nil 94 45 ebnf-ebx-any-character 93 error "Missing end of character range `]'"] 4])
(defalias 'ebnf-ebx-any-character #[0 "g\211\300U\203 \301\302!\207\303X\203 \211\304X\204G \305X\203# \211\306X\204G \307X\203/ \211\310X\204G \311X\203; \211\312X\204G \313X\203J \211\314X\203J \315u\207\316\317\"\207" [35 ebnf-ebx-hex-character t 32 34 36 44 46 92 94 126 160 255 nil error "Invalid character `%c'"] 4])
#@27 

(fn &optional NO-ERROR)
(defalias 'ebnf-ebx-hex-character #[256 "\301u\210g\302U\204 \211\206 \303\304!\207\301u\210\305w\306V\206 \303\304!\207" [ebnf-limit nil 120 error "Invalid hexadecimal character" "[:xdigit:]" 0] 3 (#$ . 7620)])
(provide 'ebnf-ebx)
