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



(byte-code "\300\301\302\303\304\305%\210\306\307\310\302#\210\311\307\310\312#\207" [custom-declare-group wisent nil "\n           /\\_.-^^^-._/\\     The GNU\n           \\_         _/\n            (     \\=`o  \\=`      (European ;-) Bison\n             \\      \\=` /\n             (   D  ,\"       for Emacs!\n              \\=` ~ ,\"\n               \\=`\"\"" :group semantic defalias wisent-char-p characterp make-obsolete "28.1"] 6)#@51 Printed representation of usual escape sequences.
(defconst wisent-escape-sequence-strings '((7 . "'\\a'") (8 . "'\\b'") (9 . "'\\t'") (10 . "'\\n'") (11 . "'\\v'") (12 . "'\\f'") (13 . "'\\r'") (27 . "'\\e'") (92 . "'\\'") (127 . "'\\d'")) (#$ . 524))#@123 Return a printed representation of ITEM.
ITEM can be a nonterminal or terminal symbol, or a character literal.

(fn ITEM)
(defalias 'wisent-item-to-string #[257 "\301!\203 \211\236A\206 \302\303\"\207\304!\207" [wisent-escape-sequence-strings characterp format "'%c'" symbol-name] 4 (#$ . 783)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put wisent-item-to-string speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@69 Return a printed representation of lexical token TOKEN.

(fn TOKEN)
(defalias 'wisent-token-to-string #[257 "\301\302@\303!\203 \211\236A\206 \301\304\"\262\202 \305!\262\3068\203/ \301\307\3068\"\2020 \310A@$\207" [wisent-escape-sequence-strings format "%s%s(%S)" characterp "'%c'" symbol-name 2 "@%s" ""] 8 (#$ . 1237)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put wisent-token-to-string speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@21 End Of Input token.
(defconst wisent-eoi-term '$EOI (#$ . 1727))#@23 Error recovery token.
(defconst wisent-error-term 'error (#$ . 1797))#@48 Accept result after input successfully parsed.
(defconst wisent-accept-tag 'accept (#$ . 1872))#@25 Process a syntax error.
(defconst wisent-error-tag 'error (#$ . 1973))#@90 Return non-nil if OBJ is a LALR automaton.
If OBJ is a symbol check its value.

(fn OBJ)
(defalias 'wisent-automaton-p #[257 "\211\203 \2119\203 \300!\203 \211J\262\301!\205H \211G\302U\205H \301\303H!\205H \301\304H!\205H \211\303HG\304HGU\205H \211\305H<\205H \306\307H!\207" [boundp vectorp 4 0 1 2 obarrayp 3] 4 (#$ . 2049)])#@255 Return the start/end positions of the region including POSITIONS.
Each element of POSITIONS is a pair (START-POS . END-POS) or nil.  The
returned value is the pair (MIN-START-POS . MAX-END-POS) or nil if no
POSITIONS are available.

(fn &rest POSITIONS)
(defalias 'wisent-region #[128 "\300\301\"\211\205 \302\303\304\305\"\"\302\306\304\307\"\"B\207" [delq nil apply min mapcar car max cdr] 8 (#$ . 2395)])
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310\311\312\313DD\314\315\316%\207" [function-put wisent-region speed -1 put byte-optimizer byte-compile-inline-expand custom-declare-variable wisent-parse-verbose-flag funcall function #[0 "\300\207" [nil] 1 ""] "Non-nil means to issue more messages while parsing." :type boolean] 7)#@54 Toggle whether to issue more messages while parsing.
(defalias 'wisent-parse-toggle-verbose-flag #[0 "?\301\302!\205 \303\304\203 \305\202 \306\"\207" [wisent-parse-verbose-flag called-interactively-p interactive message "More messages while parsing %sabled" "en" "dis"] 3 (#$ . 3152) nil])#@134 Print a one-line message if `wisent-parse-verbose-flag' is set.
Pass STRING and ARGS arguments to `message'.

(fn STRING &rest ARGS)
(defalias 'wisent-message #[385 "\205	 \301\302#\207" [wisent-parse-verbose-flag apply message] 6 (#$ . 3455)])
(byte-code "\300\301\302\303#\304\301\305\306#\210\307\310\311\312\313DD\314\315\316%\210\307\317\311\312\320DD\321\315\316%\207" [function-put wisent-message speed -1 put byte-optimizer byte-compile-inline-expand custom-declare-variable wisent-parse-max-stack-size funcall function #[0 "\300\207" [500] 1 #1=""] "The parser stack size." :type integer wisent-parse-max-recover #[0 "\300\207" [3] 1 #1#] "Number of tokens to shift before turning off error status."] 7)#@473 List of functions to be called when discarding a lexical token.
These functions receive the lexical token discarded.
When the parser encounters unexpected tokens, it can discards them,
based on what directed by error recovery rules.  Either when the
parser reads tokens until one is found that can be shifted, or when an
semantic action calls the function `wisent-skip-token' or
`wisent-skip-block'.
For language specific hooks, make sure you define this as a local
hook.
(defvar wisent-discarding-token-functions nil (#$ . 4177))#@60 Normal hook run just before entering the LR parser engine.
(defvar wisent-pre-parse-hook nil (#$ . 4713))#@61 Normal hook run just after the LR parser engine terminated.
(defvar wisent-post-parse-hook nil (#$ . 4824))#@121 The current parser action.
Stop parsing when set to nil.
This variable only has meaning in the scope of `wisent-parse'.
(defvar wisent-loop nil (#$ . 4938))#@48 The number of parse errors encountered so far.
(defvar wisent-nerrs nil (#$ . 5100))#@112 The lookahead lexical token.
This value is non-nil if the parser terminated because of an
unrecoverable error.
(defvar wisent-lookahead nil (#$ . 5191))#@134 The user supplied lexer function.
This function don't have arguments.
This variable only has meaning in the scope of `wisent-parse'.
(defvar wisent-parse-lexer-function nil (#$ . 5350))#@156 The user supplied error function.
This function must accept one argument, a message string.
This variable only has meaning in the scope of `wisent-parse'.
(defvar wisent-parse-error-function nil (#$ . 5542))#@85 The last token read.
This variable only has meaning in the scope of `wisent-parse'.
(defvar wisent-input nil (#$ . 5755))#@109 Non-nil means that the parser is recovering.
This variable only has meaning in the scope of `wisent-parse'.
(defvar wisent-recovering nil (#$ . 5883))
(defvar $region nil)
(defvar $nterm nil)
(defvar $action nil)#@36 Obtain the next terminal in input.
(defalias 'wisent-lexer '(macro . #[0 "\300\207" [(funcall wisent-parse-lexer-function)] 1 (#$ . 6101)]))#@77 Call the user supplied error reporting function with message MSG.

(fn MSG)
(defalias 'wisent-error '(macro . #[257 "\300\301E\207" [funcall wisent-parse-error-function] 4 (#$ . 6247)]))#@137 Resume generating error messages immediately for subsequent syntax errors.
This is useful primarily in error recovery semantic actions.
(defalias 'wisent-errok '(macro . #[0 "\300\207" [(setq wisent-recovering nil)] 1 (#$ . 6441)]))#@147 Discard the current lookahead token.
This will cause a new lexical token to be read.
This is useful primarily in error recovery semantic actions.
(defalias 'wisent-clearin '(macro . #[0 "\300\207" [(setq wisent-input nil)] 1 (#$ . 6680)]))#@106 Abort parsing and save the lookahead token.
This is useful primarily in error recovery semantic actions.
(defalias 'wisent-abort '(macro . #[0 "\300\207" [(setq wisent-lookahead wisent-input wisent-loop nil)] 1 (#$ . 6926)]))#@233 Change the region of text matched by the current nonterminal.
START and END are respectively the beginning and end positions of the
region.  If START or END values are not a valid positions the region
is set to nil.

(fn START END)
(defalias 'wisent-set-region '(macro . #[514 "\300\301\302\303D\303D\304EFE\207" [setq $region and number-or-marker-p cons] 10 (#$ . 7158)]))#@115 Skip the lookahead token in order to resume parsing.
Return nil.
Must be used in error recovery semantic actions.
(defalias 'wisent-skip-token #[0 "@	=?\205W \306\n\307\310@\311!\203% \211\236A\206( \307\312\"\262\202* \313!\262\3148\203: \307\315\3148\"\202; \316A@$\262D\f\205K \317\320#\266\321\322\"\210\323\211\211\207" [wisent-input wisent-eoi-term $action wisent-escape-sequence-strings wisent-parse-verbose-flag wisent-recovering "%s: skip %s" format "%s%s(%S)" characterp "'%c'" symbol-name 2 "@%s" "" apply message run-hook-with-args wisent-discarding-token-functions nil] 11 (#$ . 7544)])#@442 Safely skip a parenthesized block in order to resume parsing.
Return nil.
Must be used in error recovery semantic actions.
Optional argument BOUNDS is a pair (START . END) which indicates where
the parenthesized block starts.  Typically the value of a `$regionN'
variable, where `N' is the Nth element of the current rule components
that match the block beginning.  It defaults to the value of the
`$region' variable.

(fn &optional BOUNDS)
(defalias 'wisent-skip-block #[256 "\211\206 @\306\211\307!\204 \310 \207\212b\210\311\312!\205+ \3131) \314`\315\316#S0\202+ \210\306)\211\262\2045 \310 \207	\262\211@\n=\204S \3178W\203S \320\321\"\210 \262\2028 \322\f	\323\324@\325!\203p \211\236A\206s \323\326\"\262\202u \327!\262\3178\203\205 \323\330\3178\"\202\206 \331A@$\262\323\324@\325!\203\247 \211\236A\206\252 \323\326\"\262\202\254 \327!\262\3178\203\274 \323\330\3178\"\202\275 \331A@$\262E\205\316 \332\333#\266	@\n=\204\334 \306\211\307@!\205\357 \307T!\205\357 @TB\306\207" [$region wisent-input wisent-eoi-term wisent-parse-lexer-function $action wisent-escape-sequence-strings nil number-or-marker-p wisent-skip-token looking-at "\\s(" (error) scan-lists 1 0 2 run-hook-with-args wisent-discarding-token-functions "%s: in enclosing block, skip from %s to %s" format "%s%s(%S)" characterp "'%c'" symbol-name "@%s" "" apply message wisent-parse-verbose-flag wisent-recovering] 16 (#$ . 8170)])#@527 Determine the start and end locations of a production value.
Return a pair (START . END), where START is the first available start
location, and END the last available end location, in components
values of the rule currently reduced.
Return nil when no component location is available.
STACK is the parser stack.
I and J are the indices in STACK of respectively the value of the
first and last components of the current rule.
This function is for internal use by semantic actions' generated
lambda-expression.

(fn STACK I J)
(defalias 'wisent-production-bounds #[771 "HA@HAAU\204< \204# \300\\\211\262HA@\262\202\n \211\2046 \300Z\211\262HAA\262\202\n \262\202\n \205G \211\205G B\207" [2] 8 (#$ . 9631)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put wisent-production-bounds speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@203 Return the next parser action.
I is a token item number and AL is the list of (item . action)
available at current state.  The first element of AL contains the
default action for this state.

(fn I AL)
(defalias 'wisent-parse-action '(macro . #[514 "\300\301\302E\303DED\207" [cdr or assq car] 7 (#$ . 10514)]))#@178 Return the first lexical token to shift for START symbol.
STARTS is the table of allowed start symbols or nil if the LALR
automaton has only one entry point.

(fn START STARTS)
(defalias 'wisent-parse-start #[514 "\211\204  \207\203 \236\202 \211@A\211\203 \211\301!D\207\302\303\"\207" [wisent-parse-lexer-function symbol-name error "Invalid start symbol %s"] 6 (#$ . 10835)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put wisent-parse-start speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@634 Parse input using the automaton specified in AUTOMATON.

- AUTOMATON is an LALR(1) automaton generated by
  `wisent-compile-grammar'.

- LEXER is a function with no argument called by the parser to obtain
  the next terminal (token) in input.

- ERROR is an optional reporting function called when a parse error
  occurs.  It receives a message string to report.  It defaults to the
  function `wisent-message'.

- START specify the start symbol (nonterminal) used by the parser as
  its goal.  It defaults to the start symbol defined in the grammar
  (see also `wisent-compile-grammar').

(fn AUTOMATON LEXER &optional ERROR START)
(defalias 'wisent-parse #[1026 "\306\307!\210\310H\311H\312H\313\314\"\310\315\206 \316\314\211\204-  \266\202\202N \2037 \236\2029 \211@A\211\203H \211\317!D\266\203\202N \320\321\"\266\203\314\211\211\211\310&\314'\310\211I\210	\203LH\262@\262	H\236\206y H@A\211(=\203\210 \314\211\202_ 	)=\203\fH\262\f\204\345 \n\322\323\322\324@\325!\203\270 \211*\236A\206\273 \322\326\"\262\202\275 \317!\262\3128\203\315 \322\327\3128\"\202\316 \330A@$\262\331\332\333+\334\335A\"\"\336##!\210&T&\f,=\203R-=\203'\314\211\202_ \337\322\324@\325!\203\211*\236A\206!\322\326\"\262\202#\317!\262\3128\2033\322\327\3128\"\2024\330A@$\262C.\205E\340\341#\266\342\343\"\210 \202^ ,\310Y\203H\262H\262+\236\211\262\203w\344A!\204\312Z\262\202U\211\204\214'\314\211\202_ \211A\262\312\\\262S\314I\210I\210H\211\262A\203^ @-=\204^ @\236\204^ \337\322\324@\325!\203\327\211*\236A\206\332\322\326\"\262\202\334\317!\262\3128\203\354\322\327\3128\"\202\355\330A@$\262C.\205\376\340\341#\266\342\343\"\210 \211\202\254\344	!\2038\344\f!\205 \f\311V\205 \fS\312\\\262SAI\210	I\210 \202^ 	\n#\262\204^  \202^ \306\345!\210\311H@-\207" [wisent-parse-max-stack-size wisent-loop wisent-parse-error-function wisent-parse-lexer-function wisent-recovering wisent-input run-hooks wisent-pre-parse-hook 0 1 2 make-vector nil t wisent-message symbol-name error "Invalid start symbol %s" format "Syntax error, unexpected %s, expecting %s" "%s%s(%S)" characterp "'%c'" "@%s" "" mapconcat wisent-item-to-string delq mapcar car ", " "Error recovery: skip %s" apply message run-hook-with-args wisent-discarding-token-functions natnump wisent-post-parse-hook wisent-nerrs wisent-lookahead wisent-accept-tag wisent-error-tag wisent-escape-sequence-strings wisent-error-term wisent-parse-max-recover wisent-eoi-term wisent-parse-verbose-flag] 25 (#$ . 11373)])
(provide 'semantic/wisent/wisent)
