�
K�gN� � �� � d Z ddlZddlZddlZddlmZ ddlmZmZ ddl Z ddl
mZ ddlm
Z
ddlmZmZmZmZmZmZmZmZ dd lmZmZmZmZmZmZmZmZ dd
l m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) dd
l*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddlm4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z? ddl@mAZAmBZBmCZCmDZDmEZE eCd�� � ZFdgZGdZHdZI e2d� � ZJi dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d:�i d;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH�dIdJ�dKdL�dMdN�dOdP�dQdR�dSdT�dUdV�dWdX�dYdZ�d[d\��d]d^d_��ZKi d`da�dbdc�ddde�dfdg�dhdi�djdk�dldm�dnd�dod�dpdq�drds�dtdu�dLdK�dvdw�dxdy�dzd{�d|d}�d~eIz dd�d�d�d�d�d�d�d�d�d�d�d��
�ZLi d�d�g�d�d�d�g�d�g d���d�d�g�d�dvd�g�d�d�d�g�d�d�d�g�d�dxd�g�d�d�g�d�g d���d�d�d�g�d�d�g�d�d�d�g�d�g d���d�g d���d�g d���d�dzg�i d�dxg�d�dxdzg�d�d�d�g�d�d�g�d�d�g�d�d�g�d�d�d�g�d�d�d�g�d�d�d�g�d�d�d�g�d�d�g�d�d�g�d�g dâ�d�d�d�g�d�d�g�d�d�g�d�d�d�g��d�gd�d�gd�d�gd�d|gdМ�ZMd�ZNd�ZO G dӄ d�eA� � ZPeF G dՄ d�eD� � � � ZQ G dׄ d�eB� � ZR G dل d�eA� � ZS G dۄ d�eD� � ZT G d݄ d�eD� � ZU G d߄ d�eD� � ZVd� ZWd� ZXd� ZYeF G d� d�eD� � � � ZZd�e$fd�Z[ G d� d�eE� � Z\ G d� d�eD� � Z]d� Z^ G d� d� � Z_ ed�d� � Z` G d� d� � Za ead�eG� � Zbd� Zcd�� ZdeF G d�� d�eD� � � � Zed�� Zfd�� Zgd�d�gfd�d�gfd�g d��f�d g �d�f�d�dgf�d�dgf�dg �d�f�dg �d �f�d
�dgf�d�d
gf�d�dgf�d�dgf�d�dgfg
Zh�d� Zi�d&�d�Zj�d� Zk�d� Zl�d&�demd�emd�eee;emf f�d�Zn�d'�d�Zo�d� Zp�d� Zq G �d� �d� � Zr G �d� �d � � Zs�d!� Ztg f�d"�Zu�d#� Zv�d$emd�emf�d%�ZwdS (( zCParses and compiles Lark grammars into an internal representation.
� N)�
namedtuple)�copy�deepcopy)�literal_eval)�suppress)�List�Tuple�Union�Callable�Dict�Optional�Sequence� Generator� )�bfs�logger�
classify_bool�is_id_continue�is_id_start�bfs_all_unique�
small_factors�
OrderedSet)�Token�TerminalDef�
PatternStr� PatternRE�Pattern)�ParseTreeBuilder)�ParsingFrontend)� LexerConf�
ParserConf)�RuleOptions�Rule�Terminal�NonTerminal�Symbol�TOKEN_DEFAULT_PRIORITY)�classify�
dedup_list)�GrammarError�UnexpectedCharacters�UnexpectedToken�
ParseError�UnexpectedInput)�Tree�SlottedTree)�Transformer�Visitor�v_args�Transformer_InPlace�Transformer_NonRecursiveT)�inline�grammarsz.lark�imslux� __empty__�.�DOT�,�COMMA�:�COLON�;� SEMICOLON�+�PLUS�-�MINUS�*�STAR�/�SLASH�\� BACKSLASH�|�VBAR�?�QMARK�!�BANG�@�AT�#�HASH�$�DOLLAR�%�PERCENT�^�
CIRCUMFLEX�&� AMPERSAND�_�
UNDERSCORE�<�LESSTHAN�>�MORETHAN�=�EQUAL�"�DBLQUOTE�'�QUOTE�`� BACKQUOTE�~�TILDE�(�LPAR�)�RPAR�{�LBRACE�}�RBRACE�[�LSQB�]�RSQB�
�NEWLINEz
�CRLF�TAB�SPACE)� � �_LPARz\(�_RPARz\)�_LBRAz\[�_RBRAz\]�_LBRACEz\{�_RBRACEz\}�OPz[+*]|[?](?![a-z_])�_COLON�_COMMA�_ORz\|�_DOTz\.(?!\.)�_DOTDOTz\.\.�RULE_MODIFIERSz(!|![?]?|[?]!?)(?=[_a-z])�RULEz_?[a-z][_a-z0-9]*�TERMINALz_?[A-Z][_A-Z0-9]*�STRINGz"(\\"|\\\\|[^"\n])*?"i?z/(?!/)(\\/|\\\\|[^/])*?/[%s]*z(\r?\n)+\s*z
(\r?\n)+\s*\|z[ \t]+z\s*//[^\n]*|\s*#[^\n]*z\\[ ]*\nz->z%ignorez %overridez%declarez%extendz%importz[+-]?\d+)
�REGEXP�_NL�_NL_OR�WS�COMMENTrK �_TO�_IGNORE� _OVERRIDE�_DECLARE�_EXTEND�_IMPORT�NUMBER�start�_list�_itemz_list _item)�rule�term�ignore�import�declare�override�extendr� r� zBrule_modifiers RULE template_params priority _COLON expansions _NL�rule_modifiers� �priorityz_DOT NUMBER�template_paramsz _LBRACE _template_params _RBRACE�_template_paramsz_template_params _COMMA RULE�
expansions�_expansions)�aliasz_expansions _OR aliasz_expansions _NL_OR aliasz?aliaszexpansion _TO nonterminal� expansion�
_expansionz_expansion exprz?expr)�atomzatom OPzatom TILDE NUMBERz atom TILDE NUMBER _DOTDOT NUMBERz?atom)z_LPAR expansions _RPAR�maybe�valuer� )�terminal�nonterminal�literal�range�template_usager� r� z?namez?symbolr� z_LBRA expansions _RBRAr� zSTRING _DOTDOT STRINGr� z*nonterminal _LBRACE _template_args _RBRACE�_template_argsz_template_args _COMMA valuer� zTERMINAL _COLON expansions _NLz*TERMINAL _DOT NUMBER _COLON expansions _NLr� z_OVERRIDE rulez_OVERRIDE termr� z_EXTEND rulez_EXTEND termr� z_IGNORE expansions _NLr� z_DECLARE _declare_args _NLr� )z_IMPORT _import_path _NLz._IMPORT _import_path _LPAR name_list _RPAR _NLz!_IMPORT _import_path _TO name _NL�_import_path�
import_lib�
import_rel�_import_argsz_DOT _import_args�namez_import_args _DOT name�
_name_listz_name_list _COMMA name�symbolz_declare_args symbolr� )� name_listr� �
_declare_argsr� � �2 c � � e Zd Zdefd�Zdedefd�Zdeee ef de
e ddf fd�Zde fd �Zde fd
�Z
dS )�FindRuleSize�keep_all_tokensc � � || _ d S �N�r� )�selfr� s �a/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/lark/load_grammar.py�__init__zFindRuleSize.__init__� s � �.����� �sym�returnc �� � t |t � � r|j � d� � S t |t � � r| j p|j S |t u rdS J |� � �)Nr^ F)�
isinstancer% r� �
startswithr$ r� �
filter_out�_EMPTY)r� r� s r� �_will_not_get_removedz"FindRuleSize._will_not_get_removed� sm � ��c�;�'�'� 0��x�*�*�3�/�/�/�/��c�8�$�$� >��'�=�s�~�+=�=��&�=�=��5��c���ur� �argsNc # � K � |D ]N}t |t � � r|V � �t |t � � r| � |� � rdndV � �MJ �d S )Nr r )r� �intr&