;ELC ;;; Compiled by cyd@localhost on Mon Apr 23 22:25:00 2007 ;;; from file /home/cyd/emacs/lisp/progmodes/ebnf-iso.el ;;; in Emacs version 22.0.99 ;;; 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 (#$ . 593)) #@55 Used by `ebnf-iso-term' and `ebnf-iso-lex' functions. (defvar ebnf-no-meta-identifier nil (#$ . 679)) #@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 !\211A @\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 (#$ . 787)]) (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=\203A\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\307\203. B\202/ !+B\207" [term seq token nil ebnf-iso-term ebnf-iso-lex catenate ebnf-token-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 \211A\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\210T\211\202\310W\203+ \311I\210T\211\202\312W\203= \307I\210T\211\202,\313W\203O \314I\210T\211\202>\315W\203a \307I\210T\211\202P\316W\203s \314I\210T\211\202b\317W\203\205 \307I\210T\211\202t\320\211\303W\203\231 \314I\210T\211\202\210 \321\322I\210 \323\322I\210 \324\322I\210 \325\322I\210 \305\322I\210 \326\327I\210 \330\314I\210 \331\332I\210 \333\334I\210 \335\336I\210 \337\340I\210 \341\342I\210 \343\344I\210 \345\346I\210 \347\350I\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 95 34 double-terminal 39 single-terminal 63 special 42 repeat 44 catenate 45 except 61 equal 41 end-group] 4) (#$ . 3284)) #@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 (#$ . 4174)]) (byte-code "\301B\302\303\304\305\306#!\207" [current-load-list ebnf-iso-non-terminal-chars (lambda (#1=#:defconst-tmp-var) (defconst ebnf-iso-non-terminal-chars #1#)) ebnf-range-regexp " 0-9A-Za-z_" 160 255] 5) #@105 Lexical analyzer for ISO EBNF. Return a lexical token. See documentation for variable `ebnf-iso-lex'. (defalias 'ebnf-iso-lex #[nil "`Y\203\306\207\307g\310V\203\311\202W\ngH\211\312=\203)\313w\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\202; \311=\203m\311\321!\202; \322=\203{\323\324!\322\202; \325=\203\226 \205\206\326\327\330\331\332# \205\220\326Q\325\202; \333=\203\246\327\334\335\336#\337\202; \340=\203\266\327\341\342\336#\337\202; \343=\203\322\344\345\3233!!!4\203\316\311\346!\210\343\202; \315=\203\371\307u\210g\347U\203\350\307u\210\350\202;g\351U\203\365\307u\210\352\202;\353\202; \354=\203\307u\210g\355U\204\f\356\202;\307u\210\357\202; \360=\203-\307u\210g\355U\204&\361\202;\307u\210\362\202; \314=\2037\353\202;\307u\210 )\207" [ebnf-limit token ebnf-iso-token-table ebnf-action ebnf-iso-lex ebnf-special-show-delimiter end-of-input nil 255 error space " \n " begin-parenthesis left-parenthesis 42 ebnf-iso-skip-comment form-feed "Invalid 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-iso-non-terminal-chars ebnf-no-meta-identifier] 6 (#$ . 5021)]) (byte-code "\301B\302\303\304\305\306#!\207" [current-load-list ebnf-iso-comment-chars (lambda (#1=#:defconst-tmp-var) (defconst ebnf-iso-comment-chars #1#)) ebnf-range-regexp "^*(--" 127 159] 5) (defalias 'ebnf-iso-skip-comment #[nil "\306u\210\203g\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 "(" "Invalid character"] 3]) (defalias 'ebnf-iso-eps-filename #[nil "\304u\210\305`\306P\304 \204P\n w\210` Y\203`\202Kg\307U\2034\310 w\210g\311U\205K\312u\210`\202Kg\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)