;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 'ebnf2ps) #@26 List of empty rule name. (defvar ebnf-empty-rule-list nil (#$ . 427)) #@43 Add empty RULE in `ebnf-empty-rule-list'. (defalias 'ebnf-add-empty-rule-list #[(rule) "\205 \303H\304H\305=\205 \306H\nB\211\207" [ebnf-ignore-empty-rule rule ebnf-empty-rule-list 7 0 ebnf-generate-empty 6] 2 (#$ . 503)]) #@23 Initialize optimizer. (defalias 'ebnf-otz-initialize #[nil "\301\211\207" [ebnf-empty-rule-list nil] 2 (#$ . 738)]) #@24 Eliminate empty rules. (defalias 'ebnf-eliminate-empty-rules #[(syntax-list) "\203Z G\306 \307\211\f\203T\310\311\312\313 T\211\314_\245!#\266\f@\315!\2036\f\202L\316H B\n\203I\n\fA\241\210\202L A)\fA\211\204 -\202 \207" [ebnf-empty-rule-list syntax-list before new-list prod-list ebnf-nprod 0 nil "Eliminating empty rules" message "%s...%3d%%" round 100.0 ebnf-eliminate-empty 6 ebnf-total rule] 8 (#$ . 861)]) (defalias 'ebnf-eliminate-empty #[(rule) "\306H\211\307\267\202\311\310H\n\235?\205\312\202\312\310H\310H\311\211\211 \203Q @\312 !\2038 \202H\f\203E\f A\241\210\202H A A\211 \204( \205[\310 I\210,\202\312\310H\310H\311\211\211 \203\231 @\312 !\203\200 \202\220\f\203\215\f A\241\210\202\220 A A\211 \204p \205\257 G\313U\203\251 @\202\257\310 I\210,\202\312\312\314H!\211\205\305\314I\210)\202\312)\207" [rule kind ebnf-empty-rule-list elt before header 0 #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (ebnf-generate-non-terminal 10 ebnf-generate-sequence 23 ebnf-generate-alternative 95 ebnf-generate-production 179)) 6 nil ebnf-eliminate-empty 1 7 seq prod] 5]) #@28 Syntactic chart optimizer. (defalias 'ebnf-optimize #[(syntax-list) "\204 \207 G\305\306 \203\307 @!\nB A\211\204\n\237+\207" [ebnf-optimize syntax-list new ebnf-nprod ebnf-total 0 nil ebnf-optimize1] 4 (#$ . 2083)]) (defalias 'ebnf-optimize1 #[(prod) "\306\307\310\311T\211\312_ \245!#\266\n\313H\211\314H\315=\203\340\316 \317H\n\317H\"\211@\fA\320 \"\n\313\203}\321=\203E\322\323!\206N\324 !\323A!\206b\325A! @\203s\326 \"\202y\327 \"*\202\335\203\320\324!A!\326\323!!\206\225\325!!!\"\330 !\211#\203\245#C \203\271 G\331U\203\276 @\314H\332=\203\276\"\202\314\333\323 !\206\310\325 !\"D!+\202\335\334 !\206\335\323 !\206\335 I\210,\n)\207" [ebnf-nprod ebnf-total prod production hlist nlist "Optimizing syntactic chart" message "%s...%3d%%" round 100.0 7 0 ebnf-generate-alternative ebnf-split-header-prefix 6 ebnf-split-header-suffix t nil ebnf-prefix-suffix ebnf-extract-empty ebnf-create-alternative ebnf-make-zero-or-more ebnf-make-one-or-more ebnf-map-list-to-optional 1 ebnf-generate-empty ebnf-make-sequence ebnf-map-node-to-optional zlist elist nl el xlist znode nnode] 8]) (defalias 'ebnf-split-header-prefix #[(node-list header) "\306 \"\211@\307\211\nA\211\203I\n@\211\310H\311=\203C\312HA\211G\313U\2033@\202<\312I\210)\fB\202E\314)\202\f \203R\315 \fB \f\237,B\207" [node-list header hlist nlist zlist empty-p ebnf-split-header-prefix1 nil 0 ebnf-generate-sequence 6 1 t ebnf-make-empty elt seq] 4]) (defalias 'ebnf-split-header-prefix1 #[(node-list header) "\304\211\n\203$\305\n@ \"\203\n@ B\202\n@B\nA\211\204\237 \237*B\207" [nlist hlist node-list header nil ebnf-node-equal-header] 4]) (defalias 'ebnf-node-equal-header #[(node header) "\303H\211\304\267\202\305\306H@\n\"\202\306H\n\230\202\307)\207" [node kind header 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (ebnf-generate-sequence 10 ebnf-generate-non-terminal 20)) ebnf-node-equal-header 6 nil] 4]) (defalias 'ebnf-map-node-to-optional #[(node) "\301H\302=\205 \303\304H!\207" [node 0 ebnf-generate-alternative ebnf-map-list-to-optional 6] 3]) (defalias 'ebnf-map-list-to-optional #[(nlist) "G\303U\205,@A@\211\304H\305=\203\306 !\202+ \304H\305=\203*\306\n!\202+\307*\207" [nlist second first 2 0 ebnf-generate-empty ebnf-make-optional nil] 3]) (defalias 'ebnf-extract-empty #[(elist) "\304\211\211\2030 @\305H\306=\204 \202)\307\n\203&\n A\241\210\202)A A\211\204\n +B\207" [elist empty-p before now nil 0 ebnf-generate-empty t] 4]) (defalias 'ebnf-split-header-suffix #[(nlist zlist) "\306\211\nG\307U\2038\310\n@\f\2033 \2033\311 @\" A\f\310=\203,\310\202\f B\202\f*\202o\nG GU\203n\310\f\203i \203i\311\n@ @\"\nA A\f\310=\203b\310\202B\f B\202B\f)\202o\306\205\262\312 !\211G\211\313U\203\205\310\202\261\307U\203\241@\203\234\314!\202\261\202\261\203\254\315 B\316\237!**\207" [empty-p new nlist elt ok zlist nil 1 t ebnf-split-header-suffix1 ebnf-unique-list 0 ebnf-make-optional ebnf-make-empty ebnf-create-alternative lis len] 4]) (defalias 'ebnf-split-header-suffix1 #[(ne ze) "\306H\307=\203e \306H\307=\205\243\310H \310H\311\211\fG GY\205c\312\fG GZ\211\f\233\203K\n\203K\313\n@ @\"\nA A\2021)\205c \306U\203[\312\202c S\f\233\311\241\210 ,\207 \306H\307=\203\237 \310H\211G\313 S\f\233@\"\205\235 \314U\203\211\312\202\235 \315U\203\224\f@\202\235 \315Z\f\233\311\241\210 *\207\313 \"\207" [ne ze z len zl nl 0 ebnf-generate-sequence 6 nil t ebnf-node-equal 1 2 ok] 5]) (defalias 'ebnf-prefix-suffix #[(lis) "\2058<\2058\304!\305 A!\211A @\n@ \204#\n\2057\306 \2053\307 !\2062\310 !C\244\n\244!+\207" [lis prefix suffix middle ebnf-split-prefix ebnf-split-suffix ebnf-make-sequence ebnf-map-list-to-optional ebnf-create-alternative] 5]) (defalias 'ebnf-split-prefix #[(lis) "G@\306H\307=\203@\310H\202@C T\f\306V\203p\nA\211\203p \n@\306H\307=\203:\n@\310H\202=\n@C\306\203h\203h\311@@\"\203hAA T\202C\f ^+\202\f\306U\204|\f V\203\202\312B\2026\f \233\211\203\221\fS \233\312\241\210 \312\211@\306H\307=\203\247\n\204\262A\211\313\202\312\nG\314U\203\301\n@\240\210\202\307@\310\nI\210A\n\203\"\n@\312\211\306H\307=\203\f\310H\233\211\203G\314U\203\372\n@\240\210\202\310I\210\n\202\313\203\nA\241\210\202A\nA*\202\312\315\2032\316 C\244\2023!,B,\207" [lis len tail head ipre i 0 ebnf-generate-sequence 6 ebnf-node-equal nil t 1 ebnf-unique-list ebnf-make-empty this cur prefix empty-p before rest elt] 5]) (defalias 'ebnf-split-suffix #[(lis) "G@\306H\307=\203@\310H\202@C\237 T\f\306V\203x\nA\211\203x \n@\306H\307=\203<\n@\310H\202?\n@C\237\211\306 \203k\203k\311 @@\"\203k AAT\202H\237\210\f^,\202 \237\f\306U\204\207\f V\203\215\312B\202^ G\fZ\211 \233\306V\205\250S \233\312\241\210 \312\211@\306H\307=\203\274\n\204\307A\211\313\202\337\nG\314U\203\326\n@\240\210\202\334@\310\nI\210A\n\203J\n@\312\211\306H\307=\203/\310H\211G\fZ\211\203/\306V\203/\314U\203\n@\240\210\202)S\233\312\241\210\310I\210\n\202C\313\203@\nA\241\210\202CA\nA*\202\337\315\203Z\316 C\244\202[!-B,\207" [lis len tail head isuf cur 0 ebnf-generate-sequence 6 ebnf-node-equal nil t 1 ebnf-unique-list ebnf-make-empty tlis this i n suffix before empty-p rest elt] 5]) (defalias 'ebnf-unique-list #[(nlist) "\306\n\203F\nA\n@\306 \2039\307\f @\"\204# A\211\202\310\306 \2033 \nA\241\210\202A\202 \204?\n\nA+\202*\207" [nlist before current remove-p head tail nil ebnf-node-equal t] 4]) (defalias 'ebnf-node-equal #[(A B) "\306H \306H\211\n=\205l \307\267\202k\310\202l\311H \311H\230\202l\311H \311H\211G\fGU\205R\310  \203O \203O\312 @\f@\" A\fA\2025 )*\202l\311H \311H\230\205l\312\313H \313H\"\202l\314*\207" [A B kindB kindA listB listA 0 #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (ebnf-generate-empty 20 ebnf-generate-non-terminal 24 ebnf-generate-terminal 24 ebnf-generate-special 24 ebnf-generate-alternative 34 ebnf-generate-sequence 34 ebnf-generate-production 86)) t 6 ebnf-node-equal 7 nil ok] 5]) (defalias 'ebnf-create-alternative #[(alt) "G\301V\203 \302!\207@\207" [alt 1 ebnf-make-alternative] 2]) (provide 'ebnf-otz)