;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (require 'ebnf-otz) #@44 Value returned by `ebnf-ebx-lex' function. (defvar ebnf-ebx-lex nil (#$ . 428)) #@15 EBNFX parser. (defalias 'ebnf-ebx-parser #[(start) " ZT S`\306\211\211 b\210\307 \211\310=\203\"\311\312!\210 \313=\203+\307  \310=\204\\\314`Z\315_\245\316\317\"\"\266\320 !\211A @\321\n!\204+\n\fB\202+ b\210\f.\207" [ebnf-limit start rule token rule-list origin 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 bias total ebnf-message-float] 8 (#$ . 514)]) (defalias 'ebnf-ebx-rule #[(token) " \306\306 \307=\204\310\311!\210\300 \211\312=\204\310\313!\210\314 \211@\315>\204-\310\316!\210\nA\317\f!\210\300 \320\f\n #+B\207" [ebnf-ebx-lex ebnf-action elements action name token 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] 6]) (defalias 'ebnf-ebx-expression #[nil "\302\211\303\304 !\211@\305=\203A B\202\306 \"*\207" [concatenation body nil ebnf-ebx-concatenation ebnf-ebx-lex alternative ebnf-token-alternative] 3]) (defalias 'ebnf-ebx-concatenation #[(token) "\303!\304\211@\nA\211\204\305\306!\210\n B\303!\211@\nA\211\203-\n B\202\307 !*B\207" [token seq term ebnf-ebx-exception nil error "Empty element" ebnf-token-sequence] 4]) (defalias 'ebnf-ebx-exception #[(token) "\303!\211@\304=\203\303\305 !\211@\306 A\nA\")B\202 )\207" [token term except ebnf-ebx-term exception ebnf-ebx-lex ebnf-make-except] 5]) (defalias 'ebnf-ebx-term #[(token) "\302!\211\203,\303 \211\304\267\202,\305 !\303 \202,\306 !\303 \202,\307 !\303  )B\207" [token factor 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 27 optional 37)) ebnf-make-zero-or-more ebnf-make-one-or-more ebnf-token-optional] 3]) (defalias 'ebnf-ebx-factor #[(token) "\303\267\202 \304 !\207\305 !\207\306 \211@\307=\204\310\311!\210\nA)\207\312\207" [token ebnf-ebx-lex body #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] 3]) #@51 Vector used to map characters to a lexical token. (defconst ebnf-ebx-token-table (make-vector 256 'error) (#$ . 2853)) #@31 Initialize EBNFX token table. (defalias 'ebnf-ebx-initialize #[nil "\302\211\303W\203 \304I\210T\211\202\305\211\306W\203( \304I\210T\211\202\307\211\310W\203< \304I\210T\211\202+ \311\312I\210 \313\312I\210 \314\315I\210 \316\315I\210 \317\315I\210 \320\321I\210 \322\323I\210 \324\325I\210 \326\327I\210 \330\331I\210 \332\333I\210 \334\335I\210 \336\337I\210 \303\340I\210 \341\342I\210 \343\344I\210 \345\346I\210 \347\350I\210 \351\352I)\207" [char 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 (#$ . 2978)]) (defconst ebnf-ebx-non-terminal-chars (ebnf-range-regexp "-_A-Za-z" 160 255)) (defconst ebnf-ebx-non-terminal-letter-chars (ebnf-range-regexp "A-Za-z" 160 255)) #@102 Lexical analyzer for EBNFX. Return a lexical token. See documentation for variable `ebnf-ebx-lex'. (defalias 'ebnf-ebx-lex #[nil "`Y\203\306\207\307g\310V\203\311\202T\ngH\211\312\267\202<\313w\210`W\202Q\314 \202Q\307u\210\315\211\202Q\316 \202Q \317=\203P\320\321\322!)\203P\323 \202Q\307\204\n`Y\203^\306\202\252 \324\267\202\246\311\325!\202\252\326\202\252\327 \330\202\252\331\332!\330\202\252\331\333!\330\202\252\334 \330\202\252\335#!\336\202\252\321\337!\204\237\311\340!\210\341u\210\342\202\252\307u\210 )\207" [ebnf-limit token ebnf-ebx-token-table ebnf-action case-fold-search ebnf-ebx-lex 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 31 comment 41 form-feed 46 end-of-rule 55)) " " 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 100 end-of-rule 106 hash 110 double-quote 117 single-quote 125 begin-square 133 non-terminal 140 colon 149)) "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 ebnf-ebx-non-terminal-chars] 3 (#$ . 3911)]) (defconst ebnf-ebx-constraint-chars (ebnf-range-regexp "^--]" 127 159)) (defalias 'ebnf-ebx-skip-constraint #[nil " 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 #[nil "\302\303 w\304V\206 \305 w\210g\306U\203\307 \204)?\207" [eor-p ebnf-limit nil " \n" 1 " " 47 ebnf-ebx-skip-comment] 2]) (defconst ebnf-ebx-comment-chars (ebnf-range-regexp "^--\\*" 127 159)) (defconst ebnf-ebx-filename-chars (ebnf-range-regexp "^-\\*" 127 159)) (defalias 'ebnf-ebx-skip-comment #[nil "\305u\210g\306U\204 \307\310!\210\305u\210\203\"g\311U\203\"\312\313 !\210\202\\\2034g\314U\2034\315\313 !\210\202\\\203Fg\316U\203F\317\313 !\210\202\\\203Xg\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 #[nil "\304u\210\304\211 \305\n!P` W\2035\306 w\211\307V\2035` W\2035g\310U\2045 \311\312\"P\304\202\203?\307U\203C \202X` W\203Rg\310U\203RS \311\312\"P*\207" [nchar fname ebnf-ebx-filename-chars ebnf-limit nil ebnf-buffer-substring "*" 0 47 make-string 42] 4]) (defconst ebnf-ebx-double-string-chars (ebnf-range-regexp " -!#-~" 160 255)) (defconst ebnf-ebx-single-string-chars (ebnf-range-regexp " -&(-~" 160 255)) (defalias 'ebnf-ebx-string #[(delim) "\304\305u\210`\306U\203 \202\n w\210gU\204\307\310\"\210`\305u\210\"\207" [delim ebnf-ebx-double-string-chars ebnf-ebx-single-string-chars ebnf-limit buffer-substring-no-properties nil 34 error "Missing string delimiter `%c'"] 5]) (defalias 'ebnf-ebx-character #[nil "\300`\301 \210`\"\207" [buffer-substring-no-properties ebnf-ebx-hex-character] 3]) (defalias 'ebnf-ebx-range #[nil "\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 #[nil "g\211\301U\203\302\303!\202S\304X\203\305X\204J\306X\203&\307X\204J\310X\2032\311X\204J\312X\203>\313X\204J\314X\203O\315X\203O\316u\202S\317\320\")\207" [char 35 ebnf-ebx-hex-character t 32 34 36 44 46 92 94 126 160 255 nil error "Invalid character `%c'"] 4]) (defalias 'ebnf-ebx-hex-character #[(&optional no-error) "\302u\210g\303U\204\206\304\305!\207\302u\210\306 w\307V\206\304\305!\207" [no-error ebnf-limit nil 120 error "Invalid hexadecimal character" "[:xdigit:]" 0] 2]) (provide 'ebnf-ebx)