;ELC
;;; Compiled
;;; in Emacs version 26.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 'semantic/wisent)
#@36 Return the context name from NAME.
(defalias 'wisent-context-name '(macro . #[(name) "\301\302\303DE\304\305\306ED\307\310EF\207" [name if and symbolp intern format "wisent-context-%s" error "Invalid context name: %S"] 6 (#$ . 435)]))
#@39 Return the variables in context NAME.
(defalias 'wisent-context-bindings '(macro . #[(name) "\301\302DD\207" [name symbol-value wisent-context-name] 3 (#$ . 680)]))
#@54 Define a context NAME that will bind variables VARS.
(defalias 'wisent-defcontext '(macro . #[(name &rest vars) "\203 9\203 \304\305\306\"!\202 \307\310\"\311\312\n\"\313\314\315\316 \317\nDEDC\"*B\207" [name context vars declarations intern format "wisent-context-%s" error "Invalid context name: %S" mapcar #[(v) "\301D\207" [v defvar] 2] progn append eval-when-compile defvar quote] 8 (#$ . 852)]))
(byte-code "\300\301\302\303#\300\207" [function-put wisent-defcontext lisp-indent-function 1] 4)
#@48 Bind variables in context NAME then eval BODY.
(defalias 'wisent-with-context '(macro . #[(name &rest body) "\203 9\203 \303\304\305\"!\202 \306\307\"J\310\311\312\313 \"\314 \nBBC\")B\207" [name bindings body intern format "wisent-context-%s" error "Invalid context name: %S" progn append mapcar #[(binding) "\301\242\206 D\207" [binding defvar] 2] let*] 6 (#$ . 1369)]))
(byte-code "\300\301\302\303#\300\207" [function-put wisent-with-context lisp-indent-function 1] 4)
#@406 Define a simple data structure called NAME.
Which contains data stored in FIELDS. FIELDS is a list of symbols
which are field names or pairs (FIELD INITIAL-VALUE) where
INITIAL-VALUE is a constant used as the initial value of FIELD when
the data structure is created. INITIAL-VALUE defaults to nil.
This defines a `make-NAME' constructor, get-able `NAME-FIELD' and
set-able `set-NAME-FIELD' accessors.
(defalias 'wisent-struct '(macro . #[(name &rest fields) "G\306\307\211\211\211\211W\203p @A\f:\2030 \fA@ B\f@\2024 \307 B\310\311\f#\312\310\313\"!\314\n\315\316\317\320FF
B\312\310\321\"!\314\n\322\316\323\320\324BBBBF
BT\211\202 \325\314\312\310\326\"!\307\327\330\331 \237DEF
.BB\207" [fields ivals fun sufx field accors 0 nil format "%s-%s" intern "%s" defmacro (s) list 'aref s "set-%s" (s v) 'aset (v) progn "make-%s" cons 'vector quote i size name] 9 (#$ . 1860)]))
(put 'wisent-struct 'lisp-indent-function 1)
#@150 Fill string S with spaces.
Return a new string of at least N characters. Insert spaces on right.
If optional LEFT is non-nil insert spaces on left.
(defalias 'wisent-pad-string #[(s n &optional left) "G\211\nW\203# \203 \304\n Z\305\"P\202$ \304\n Z\305\"P\202$ )\207" [s i n left make-string 32] 5 (#$ . 2833)])
(put 'wisent-pad-string 'byte-optimizer 'byte-compile-inline-expand)
(defconst wisent-BITS-PER-WORD (byte-code "\302\303\304!\203 \305\202\f \306 !\307U\204 T\202 *\207" [do-shift i 1 boundp most-positive-fixnum #[(i) "\302 [\"\207" [most-positive-fixnum i lsh] 3] #[(i) "\301\302\"\207" [i lsh 1] 3] 0] 3))
#@42 (N + BITS-PER-WORD - 1) / BITS-PER-WORD.
(defalias 'wisent-WORDSIZE #[(n) " \\S \245\207" [n wisent-BITS-PER-WORD] 2 (#$ . 3479)])
(put 'wisent-WORDSIZE 'byte-optimizer 'byte-compile-inline-expand)
#@49 X[I/BITS-PER-WORD] |= 1 << (I % BITS-PER-WORD).
(defalias 'wisent-SETBIT #[(x i) " \245\n\304\nH\305\306 \246\"\"I)\207" [i wisent-BITS-PER-WORD k x logior lsh 1] 8 (#$ . 3684)])
(put 'wisent-SETBIT 'byte-optimizer 'byte-compile-inline-expand)
#@52 X[I/BITS-PER-WORD] &= ~(1 << (I % BITS-PER-WORD)).
(defalias 'wisent-RESETBIT #[(x i) " \245\n\304\nH\305\306\307 \246\"!\"I)\207" [i wisent-BITS-PER-WORD k x logand lognot lsh 1] 9 (#$ . 3939)])
(put 'wisent-RESETBIT 'byte-optimizer 'byte-compile-inline-expand)
#@57 (X[I/BITS-PER-WORD] & (1 << (I % BITS-PER-WORD))) != 0.
(defalias 'wisent-BITISSET #[(x i) "\303 \n\245H\304\305 \n\246\"\"\306U?\207" [x i wisent-BITS-PER-WORD logand lsh 1 0] 6 (#$ . 4213)])
(put 'wisent-BITISSET 'byte-optimizer 'byte-compile-inline-expand)
#@57 Return non-nil if running without interactive terminal.
(defalias 'wisent-noninteractive #[nil "\207" [noninteractive] 1 (#$ . 4480)])
(put 'wisent-noninteractive 'byte-optimizer 'byte-compile-inline-expand)
#@40 Non-nil means enable some debug stuff.
(defvar wisent-debug-flag nil (#$ . 4695))
#@25 Name of the log buffer.
(defconst wisent-log-buffer-name "*wisent-log*" (#$ . 4783))
#@38 Non-nil means to start a new report.
(defvar wisent-new-log-flag nil (#$ . 4874))
#@66 Non-nil means to report verbose information on generated parser.
(custom-declare-variable 'wisent-verbose-flag nil '(#$ . 4962) :group 'wisent :type 'boolean)
#@67 Toggle whether to report verbose information on generated parser.
(defalias 'wisent-toggle-verbose-flag #[nil "?\301\302!\205 \303\304\203 \305\202 \306\"\207" [wisent-verbose-flag called-interactively-p interactive message "Verbose report %sabled" "en" "dis"] 3 (#$ . 5127) nil])
#@82 Return the log buffer.
Its name is defined in constant `wisent-log-buffer-name'.
(defalias 'wisent-log-buffer '(macro . #[nil "\300\207" [(get-buffer-create wisent-log-buffer-name)] 1 (#$ . 5420)]))
#@47 Delete the entire contents of the log buffer.
(defalias 'wisent-clear-log '(macro . #[nil "\300\207" [(with-current-buffer (wisent-log-buffer) (erase-buffer))] 1 (#$ . 5625)]))
#@45 Return the current source file name or nil.
(defalias 'wisent-source #[nil "\303\300!\203\n \206 \206 \304 \211\205 \305\n!)\207" [byte-compile-current-file load-file-name source boundp buffer-file-name file-relative-name] 3 (#$ . 5808)])
#@40 Start a new entry into the log buffer.
(defalias 'wisent-new-log #[nil "\303\304\305\306 \206 \307 \310\311!#r\312\n!q\210db\210 c*\207" [wisent-new-log-flag text wisent-log-buffer-name nil format "\n\n*** Wisent %s - %s\n\n" wisent-source buffer-name format-time-string "%Y-%m-%d %R" get-buffer-create] 5 (#$ . 6059)])
#@170 Insert text into the log buffer.
`format-message' is applied to ARGS and the result string is inserted into the
log buffer returned by the function `wisent-log-buffer'.
(defalias 'wisent-log #[(&rest args) "\203 \303 \210r\304 !q\210\305\306\n\"c)\207" [wisent-new-log-flag wisent-log-buffer-name args wisent-new-log get-buffer-create apply format-message] 3 (#$ . 6389)])
(put 'wisent-log 'byte-optimizer 'byte-compile-inline-expand)
#@63 The log file.
Used when running without interactive terminal.
(defconst wisent-log-file "wisent.output" (#$ . 6832))
#@57 Append contents of logging buffer to `wisent-log-file'.
(defalias 'wisent-append-to-log-file #[nil "\303!\205) \3041! r\305!q\210~\210deV\205 \306ed \307$)0\207\310\311\312\n!\")\207" [wisent-log-buffer-name wisent-log-file err get-buffer (error) get-buffer-create write-region t message "*** %s" error-message-string] 5 (#$ . 6955)])
#@30 The size of the state table.
(custom-declare-variable 'wisent-state-table-size 1009 '(#$ . 7300) :type 'integer :group 'wisent)
#@87 Return non-nil if item number S defines a token (terminal).
That is if S < `ntokens'.
(defalias 'wisent-ISTOKEN '(macro . #[(s) "\301\302BB\207" [s < (ntokens)] 3 (#$ . 7434)]))
#@83 Return non-nil if item number S defines a nonterminal.
That is if S >= `ntokens'.
(defalias 'wisent-ISVAR '(macro . #[(s) "\301\302BB\207" [s >= (ntokens)] 3 (#$ . 7619)]))
#@41 Return printable form of item number S.
(defalias 'wisent-tag #[(s) " H\304\n!\203 \n\236A\206 \305\306\n\"\202 \307\n!)\207" [tags s item wisent-escape-sequence-strings wisent-char-p format "'%c'" symbol-name] 3 (#$ . 7799)])
(put 'wisent-tag 'byte-optimizer 'byte-compile-inline-expand)
#@79 Store OBJECT's PROPNAME property with value VALUE.
Use `eq' to locate OBJECT.
(defalias 'wisent-put #[(object propname value) " \236\211\204 C\211 B\n\305\nA\f#\241)\207" [object ptable entry propname value plist-put] 6 (#$ . 8100)])
(put 'wisent-put 'byte-optimizer 'byte-compile-inline-expand)
#@76 Return the value of OBJECT's PROPNAME property.
Use `eq' to locate OBJECT.
(defalias 'wisent-get #[(object propname) "\303 \236A\n\"\207" [object ptable propname plist-get] 3 (#$ . 8409)])
(put 'wisent-get 'byte-optimizer 'byte-compile-inline-expand)
#@37 Return the item number of symbol X.
(defalias 'wisent-item-number #[(x) "\304\305\n\236A \"*\207" [x propname object ptable wisent--item-no plist-get] 3 (#$ . 8667)])
(put 'wisent-item-number 'byte-optimizer 'byte-compile-inline-expand)
#@39 Set the item number of symbol X to N.
(defalias 'wisent-set-item-number #[(x n) "\306 \211
\236\211\204 \fC\211
B\307A\n#\241,\207" [x n value propname object ptable wisent--item-no plist-put entry] 6 (#$ . 8914)])
(put 'wisent-set-item-number 'byte-optimizer 'byte-compile-inline-expand)
#@39 Return the associativity of symbol X.
(defalias 'wisent-assoc #[(x) "\304\305\n\236A \"*\207" [x propname object ptable wisent--assoc plist-get] 3 (#$ . 9224)])
(put 'wisent-assoc 'byte-optimizer 'byte-compile-inline-expand)
#@41 Set the associativity of symbol X to A.
(defalias 'wisent-set-assoc #[(x a) "\306 \211
\236\211\204 \fC\211
B\307A\n#\241,\207" [x a value propname object ptable wisent--assoc plist-put entry] 6 (#$ . 9459)])
(put 'wisent-set-assoc 'byte-optimizer 'byte-compile-inline-expand)
#@42 Return the precedence level of symbol X.
(defalias 'wisent-prec #[(x) "\304\305\n\236A \"*\207" [x propname object ptable wisent--prec plist-get] 3 (#$ . 9757)])
(put 'wisent-prec 'byte-optimizer 'byte-compile-inline-expand)
#@44 Set the precedence level of symbol X to P.
(defalias 'wisent-set-prec #[(x p) "\306 \211
\236\211\204 \fC\211
B\307A\n#\241,\207" [x p value propname object ptable wisent--prec plist-put entry] 6 (#$ . 9992)])
(put 'wisent-set-prec 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'make-core '(macro . #[nil "\300\301B\207" [vector (nil nil 0 0 0 [0])] 2]))
(defalias 'set-core-items '(macro . #[(s v) "\302\303 F\207" [s v aset 5] 4]))
(defalias 'core-items '(macro . #[(s) "\301\302E\207" [s aref 5] 3]))
(defalias 'set-core-nitems '(macro . #[(s v) "\302\303 F\207" [s v aset 4] 4]))
(defalias 'core-nitems '(macro . #[(s) "\301\302E\207" [s aref 4] 3]))
(defalias 'set-core-accessing-symbol '(macro . #[(s v) "\302\303 F\207" [s v aset 3] 4]))
(defalias 'core-accessing-symbol '(macro . #[(s) "\301\302E\207" [s aref 3] 3]))
(defalias 'set-core-number '(macro . #[(s v) "\302\303 F\207" [s v aset 2] 4]))
(defalias 'core-number '(macro . #[(s) "\301\302E\207" [s aref 2] 3]))
(defalias 'set-core-link '(macro . #[(s v) "\302\303 F\207" [s v aset 1] 4]))
(defalias 'core-link '(macro . #[(s) "\301\302E\207" [s aref 1] 3]))
(defalias 'set-core-next '(macro . #[(s v) "\302\303 F\207" [s v aset 0] 4]))
(defalias 'core-next '(macro . #[(s) "\301\302E\207" [s aref 0] 3]))
(defalias 'make-shifts '(macro . #[nil "\300\301B\207" [vector (nil 0 0 [0])] 2]))
(defalias 'set-shifts-shifts '(macro . #[(s v) "\302\303 F\207" [s v aset 3] 4]))
(defalias 'shifts-shifts '(macro . #[(s) "\301\302E\207" [s aref 3] 3]))
(defalias 'set-shifts-nshifts '(macro . #[(s v) "\302\303 F\207" [s v aset 2] 4]))
(defalias 'shifts-nshifts '(macro . #[(s) "\301\302E\207" [s aref 2] 3]))
(defalias 'set-shifts-number '(macro . #[(s v) "\302\303 F\207" [s v aset 1] 4]))
(defalias 'shifts-number '(macro . #[(s) "\301\302E\207" [s aref 1] 3]))
(defalias 'set-shifts-next '(macro . #[(s v) "\302\303 F\207" [s v aset 0] 4]))
(defalias 'shifts-next '(macro . #[(s) "\301\302E\207" [s aref 0] 3]))
(defalias 'make-reductions '(macro . #[nil "\300\301B\207" [vector (nil 0 0 [0])] 2]))
(defalias 'set-reductions-rules '(macro . #[(s v) "\302\303 F\207" [s v aset 3] 4]))
(defalias 'reductions-rules '(macro . #[(s) "\301\302E\207" [s aref 3] 3]))
(defalias 'set-reductions-nreds '(macro . #[(s v) "\302\303 F\207" [s v aset 2] 4]))
(defalias 'reductions-nreds '(macro . #[(s) "\301\302E\207" [s aref 2] 3]))
(defalias 'set-reductions-number '(macro . #[(s v) "\302\303 F\207" [s v aset 1] 4]))
(defalias 'reductions-number '(macro . #[(s) "\301\302E\207" [s aref 1] 3]))
(defalias 'set-reductions-next '(macro . #[(s v) "\302\303 F\207" [s v aset 0] 4]))
(defalias 'reductions-next '(macro . #[(s) "\301\302E\207" [s aref 0] 3]))
(defalias 'make-errs '(macro . #[nil "\300\301B\207" [vector (0 [0])] 2]))
(defalias 'set-errs-errs '(macro . #[(s v) "\302\303 F\207" [s v aset 1] 4]))
(defalias 'errs-errs '(macro . #[(s) "\301\302E\207" [s aref 1] 3]))
(defalias 'set-errs-nerrs '(macro . #[(s v) "\302\303 F\207" [s v aset 0] 4]))
(defalias 'errs-nerrs '(macro . #[(s) "\301\302E\207" [s aref 0] 3]))
#@106 Visit L and R and return non-nil if their first N elements are `='.
L and R must be vectors of integers.
(defalias 'wisent-bits-equal #[(L R n) "S\305\n\203 \306 !\203 H\f HU S\202 \n*\207" [n i iseq L R t natnump] 3 (#$ . 13129)])
#@41 Return number of bits set in integer I.
(defalias 'wisent-nbits #[(i) "\302 \302U\204 \303 \304 \211[\"\"T\202 )\207" [count i 0 logxor logand] 5 (#$ . 13377)])
#@94 In vector S count the total of bits set in first N elements.
S must be a vector of integers.
(defalias 'wisent-bits-size #[(S n) "S\304\305 !\203 \n\306 H!\\ S\202 \n*\207" [n i count S 0 natnump wisent-nbits] 4 (#$ . 13551)])
#@53 Return non-nil if production I is in useful set N0.
(defalias 'wisent-useful-production #[(i N0) "\306 \nH\307\203A
H\211\310V\203A \f\fY\203;
\f\fZ\311\n\245H\312\313\n\246\"\"\310U*?T\202 +\207" [useful rrhs i r n ritem t nil 0 logand lsh 1 ntokens N0 x wisent-BITS-PER-WORD] 6 (#$ . 13792)])
#@39 Find out which nonterminals are used.
(defalias 'wisent-useless-nonterminals #[nil "\306\211\211\211\211
\211\\S\245)\307 \310\"\204\313 S\311\n!\2036 \f\n\nHI\210\nS\202\" |