ó
    ÖÁ“iÓ  ã                   óz  • S r SSKrSSKrSSKrSSKJr  SSKJrJr  SSK	r	SSK
Jr  SSKJr  SSKJrJrJrJrJrJrJrJr  SS	KJrJrJrJrJrJrJrJrJ r   SS
K!J"r"J#r#J$r$J%r%J&r&  SSK'J(r(  SSK)J*r*  SSK+J,r,J-r-  SSK.J/r/J0r0J1r1J2r2J3r3J4r4  SSKJ5r5J6r6  SSK7J8r8J9r9J:r:J;r;J<r<  SSK=J>r>J?r@  SSKAJBrBJCrCJDrDJErEJFrF  \D" SS9rGS/rHSrISrJ\3" S5      rK0 SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(_S)S*_S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_0 S;S<_S=S>_S?S@_SASB_SCSD_SESF_SGSH_SISJ_SKSL_SMSN_SOSP_SQSR_SSST_SUSV_SWSX_SYSZ_S[S\_ES]S^S_.ErL0 S`Sa_SbSc_SdSe_SfSg_ShSi_SjSk_SlSm_SnS_SoS_SpSq_SrSs_StSu_SLSK_SvSw_SxSy_SzS{_S|S}_S~\J-  SS€S�S‚SƒS„S…S†S‡SˆS‰SŠS‹.ErM0 SŒS�/_S�SŽS�/_SŽ/ S�Q_S‘S’/_S“SvS”/_S•S–S”/_S—S˜S”/_S™SxSš/_S›Sœ/_Sœ/ S�Q_SžSŸS /_S S¡/_S¡S”S¢/_S£/ S¤Q_S¥/ S¦Q_S§/ S¨Q_S©Sz/_0 SªSx/_S«SxSz/_S¬S©Sª/_S­S®/_S¯S°/_S±S²/_S³S§S´/_SµS¶S·/_S¸S¹Sº/_S»S¼S½/_S¾S¿/_SÀSÁ/_SÂ/ SÃQ_SÄSÅSÆ/_SÅSÇ/_SÆSÈ/_SÇSÉSÊ/_ESË/SÉSÌ/SÍSÎ/SÏS|/SÐ.ErNSÑrOSÒrP " SÓ SÔ\B5      rQ\G " SÕ SÖ\E5      5       rR " S× SØ\C5      rS " SÙ SÚ\B5      rT " SÛ SÜ\E5      rU " SÝ SÞ\E5      rV " Sß Sà\E5      rWSá rXSâ rYSã rZ\G " Sä Så\E5      5       r[Sæ\%4Sç jr\ " Sè Sé\F5      r] " Sê Së\E5      r^Sì r_ " Sí Sî\ 5      r`\" SïSð5      ra " Sñ Sò5      rb\b" Só\H5      rcSô rdSõ re\G " Sö S÷\E5      5       rfSø rgSù rhSúSû/4SüSý/4Sþ/ SÿQ4GS / GSQ4GSGS/4GSGS/4GS/ GSQ4GS/ GS	Q4GS
GS/4GSGS/4GSGS/4GSGS/4GSGS/4/riGS rjGS&GS jrkGS rlGS rmGS&GS\nSŒ\nSæ\\\<\n4      4GS jjroGS'GS jrpGS rqGS rr " GS GS5      rs " GS GS 5      rtGS! ru/ 4GS" jrvGS# rwGS$\nSæ\n4GS% jrxg((  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Ú	Serialize)Ú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ÚCOMMENTrL   Ú_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?aliaszexpansion _TO nonterminalÚ	expansionÚ
_expansionz_expansion exprz?expr)Úatomzatom OPzatom 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¸   zSTRING _DOTDOT STRINGr¹   z*nonterminal _LBRACE _template_args _RBRACEÚ_template_argsz_template_args _COMMA valuer¢   zTERMINAL _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                   ó~   • \ rS rSrS\4S jrS\S\4S jrS\\	\
\4      S\\
SS4   4S	 jrS\
4S
 jrS\
4S jrSrg)ÚFindRuleSizeéÅ   Úkeep_all_tokensc                 ó   • Xl         g ©N©rÉ   )ÚselfrÉ   s     ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/lark/load_grammar.pyÚ__init__ÚFindRuleSize.__init__Æ   s   € Ø.Õó    ÚsymÚreturnc                 ó   • [        U[        5      (       a   UR                  R                  S5      (       + $ [        U[        5      (       a$  U R
                  =(       d    UR                  (       + $ U[        L a  g U5       e)Nr_   F)Ú
isinstancer&   r¿   Ú
startswithr%   rÉ   Ú
filter_outÚ_EMPTY)rÍ   rÒ   s     rÎ   Ú_will_not_get_removedÚ"FindRuleSize._will_not_get_removedÉ   s`   € Ü�cœ;×'Ñ'Ø—x‘x×*Ñ*¨3Ó/Ô/Ð/Ü�cœ8×$Ñ$Ø×'Ñ'×=¨s¯~©~Ô+=Ð=Ø”&Š=ØØ�cÓˆurÑ   ÚargsNc              #   óº   #   • U HQ  n[        U[        5      (       a  Uv •  M  [        U[        5      (       a  U R                  U5      (       a  SOSv •  MQ   e   g 7f)Nr   r   )rÕ   Úintr'   rÙ   )rÍ   rÛ   Úas      rÎ   Ú_args_as_intÚFindRuleSize._args_as_intÒ   sK   é € ÛˆAÜ˜!œS×!Ñ!Ø”Ü˜Aœv×&Ñ&Ø×5Ñ5°a×8Ñ8‘a¸aÔ?à�uò ùs   ‚AAc                 ó6   • [        U R                  U5      5      $ rË   )Úsumrß   ©rÍ   rÛ   s     rÎ   r°   ÚFindRuleSize.expansionÛ   ó   € Ü�4×$Ñ$ TÓ*Ó+Ð+rÑ   c                 ó6   • [        U R                  U5      5      $ rË   )Úmaxrß   rã   s     rÎ   r­   ÚFindRuleSize.expansionsÞ   rå   rÑ   rÌ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚboolrÏ   r'   rÙ   r   r
   rÝ   r   rß   r°   r­   Ú__static_attributes__© rÑ   rÎ   rÇ   rÇ   Å   sf   † ð/¨ô /ð¨ð °Dô ð  e¨C°¨KÑ&8Ñ!9ð ¸iÈÈTÐSWÈÑ>Xô ð, ô ,ð, #÷ ,rÑ   rÇ   c                   ó‚   • \ rS rSrS rS\4S jrS rS\S\4S jr	S	 r
S
 rS\S\S\4S jrS\S\4S jrS\4S jrSrg)ÚEBNF_to_BNFéâ   c                 óJ   • / U l         0 U l        SU l        SU l        S U l        g )NÚanonr   )Ú	new_rulesÚrules_cacheÚprefixÚiÚrule_options©rÍ   s    rÎ   rÏ   ÚEBNF_to_BNF.__init__ä   s'   € ØˆŒØˆÔØˆŒØˆŒØ ˆÕrÑ   Úinnerc                 óf   • SU R                   XR                  4-  nU =R                  S-  sl        U$ )Nz
__%s_%s_%dr   )r÷   rø   )rÍ   rü   Únew_names      rÎ   Ú
_name_ruleÚEBNF_to_BNF._name_ruleë   s+   € Ø 4§;¡;°·v±vÐ">Ñ>ˆØ�Š�!‰�ØˆrÑ   c                 ó†   • [        U5      nU R                  R                  X#U R                  45        X@R                  U'   U$ rË   )r&   rõ   Úappendrù   rö   )rÍ   Úkeyr¿   r­   Úts        rÎ   Ú	_add_ruleÚEBNF_to_BNF._add_ruleð   s<   € Ü˜ÓˆØ�‰×Ñ˜t°×1BÑ1BÐCÔDØ !×Ñ˜ÑØˆrÑ   Útype_Úexprc           
      óæ   •  U R                   U   $ ! [         aU    U R                  U5      n[        U5      n[	        S[	        SU/5      [	        SXB/5      /5      nU R                  X#U5      s $ f = f©Nr­   r°   )rö   ÚKeyErrorrÿ   r&   ÚSTr  )rÍ   r  r  rþ   r  Útrees         rÎ   Ú_add_recurse_ruleÚEBNF_to_BNF._add_recurse_ruleö   s{   € ð		8Ø×#Ñ# DÑ)Ð)øÜó 	8Ø—‘ uÓ-ˆHÜ˜HÓ%ˆAÜ�lÜ�;  Ó'Ü�;  	Ó*ð%ó ˆDð —>‘> $°$Ó7Ò7ð	8ús   ‚ ‘AA0Á/A0c           
      óÜ   • XX44n U R                   U   $ ! [         aL    U R                  SX4-  5      n[        S[        SU/U-  U/U-  -   5      /5      nU R	                  XVU5      s $ f = f)a  Generate a rule that repeats target ``a`` times, and repeats atom ``b`` times.

When called recursively (into target), it repeats atom for x(n) times, where:
    x(0) = 1
    x(n) = a(n) * x(n-1) + b

Example rule when a=3, b=4:

    new_rule: target target target atom atom atom atom

zrepeat_a%d_b%dr­   r°   )rö   r  rÿ   r  r  )rÍ   rÞ   ÚbÚtargetr²   r  rþ   r  s           rÎ   Ú_add_repeat_ruleÚEBNF_to_BNF._add_repeat_rule  s�   € ð �VÐ"ˆð	7Ø×#Ñ# CÑ(Ð(øÜó 	7Ø—‘Ð'7¸1¸&Ñ'@ÓAˆHÜ�l¤R¨°f°XÀ±\ÀTÀFÈQÁJÑ5NÓ%OÐ$PÓQˆDØ—>‘> #°Ó6Ò6ð	7ús   † •AA+Á*A+c                 ó†  • XX5S4n U R                   U   $ ! [         a     U R                  SX4-  5      n[        S[	        U5       Vs/ s H  n[        SU/U-  U/-   5      PM     Os  snf sn[	        U5       Vs/ s H  n[        SU/U-  U/U-  -   5      PM     Os  snf sn-   5      n	U R                  XgU	5      s $ f = f)aç  Creates a rule that matches atom 0 to (a*n+b)-1 times.

When target matches n times atom, and target_opt 0 to n-1 times target_opt,

First we generate target * i followed by target_opt, for i from 0 to a-1
These match 0 to n*a - 1 times atom

Then we generate target * a followed by atom * i, for i from 0 to b-1
These match n*a to n*a + b-1 times atom

The created rule will not have any shift/reduce conflicts so that it can be used with lalr

Example rule when a=3, b=4:

    new_rule: target_opt
            | target target_opt
            | target target target_opt

            | target target target
            | target target target atom
            | target target target atom atom
            | target target target atom atom atom

Úoptzrepeat_a%d_b%d_optr­   r°   )rö   r  rÿ   r  r¸   r  )
rÍ   rÞ   r  r  Ú
target_optr²   r  rþ   rø   r  s
             rÎ   Ú_add_repeat_opt_ruleÚ EBNF_to_BNF._add_repeat_opt_rule  sÕ   € ð2 �V 5Ð)ˆð		7Ø×#Ñ# CÑ(Ð(øÜó 	7Ø—‘Ð';¸q¸fÑ'DÓEˆHÜ�lÜDIÈ!ÄHó%ÚDL¸q”�;  ¨¡
¨j¨\Ñ 9Ö:ÂHùô%ô AFÀaÄóÚ@H¸1”�;  ¨¡
¨d¨V°A©XÑ 5Ö6Âùôñ%ó ˆDð
 —>‘> #°Ó6Ò6ð	7ús'   ‡ –2C ÁA'Á&C Á;!BÂ!C Â?C r¡   ÚmnÚmxc                 ó  • U[         :  a7  [        S[        X#S-   5       Vs/ s H  n[        SU/U-  5      PM     sn5      $ Un[        U[        5       H  u  pgU R                  XgXQ5      nM     X2:X  a  U$ X2-
  S-   n[        U[        5      n	Un
[        S/ 5      nU	SS  H*  u  pgU R                  XgX«U5      nU R                  XgX¡5      n
M,     U	S   u  pgU R                  XgX«U5      n[        S[        SU/U/-   5      /5      $ s  snf )z\Generates a rule tree that repeats ``rule`` exactly between ``mn`` to ``mx`` times.
        r­   r   r°   Néÿÿÿÿ)ÚREPEAT_BREAK_THRESHOLDr  r¸   r   ÚSMALL_FACTOR_THRESHOLDr  r  )rÍ   r¡   r  r  ÚnÚ	mn_targetrÞ   r  ÚdiffÚdiff_factorsÚdiff_targetÚdiff_opt_targets               rÎ   Ú_generate_repeatsÚEBNF_to_BNF._generate_repeats;  s)  € ð Ô&Ó&Ü�lÌ%ÐPRÐYZÑTZÔJ[Ó$\ÒJ[ÀQ¤R¨°d°V¸a±ZÖ%@ÑJ[Ñ$\Ó]Ð]ð ˆ	Ü! "Ô&<Ö=‰DˆAØ×-Ñ-¨a°IÓDŠIñ >à‹8ØÐà‰w˜‰{ˆÜ$ TÔ+AÓBˆØˆÜ˜[¨"Ó-ˆØ   "Ó%‰DˆAØ"×7Ñ7¸¸kÐ\`ÓaˆOØ×/Ñ/°°kÓHŠKñ &ð ˜BÑ‰ˆØ×3Ñ3°A¸+ÐX\Ó]ˆä�,¤ K°)°ÀÐ?PÑ1PÓ!QÐ RÓSÐSùò1 %]s   ¡D
Úopc                 óö  • UR                   S:X  a  [        S/ 5      n[        SX/5      $ UR                   S:X  a  U R                  SU5      $ UR                   S:X  a*  U R                  SU5      n[        SU[        S/ 5      /5      $ UR                   S:X  a^  [        U5      S	:X  a  [	        US
   5      =pgO-[        [        U5      u  pgXv:  d  US
:  a  [        SXU4-  5      eU R                  XU5      $  U5       e)NrO   r°   r­   rC   ÚplusrG   Ústarrm   r   r   ú'Bad Range for %s (%d..%d isn't allowed))r´   r  r  ÚlenrÝ   Úmapr+   r&  )rÍ   r¡   r(  rÛ   Úemptyrþ   r  r  s           rÎ   r  ÚEBNF_to_BNF.exprZ  sõ   € Ø�8‰8�s‹?Ü�{ BÓ'ˆEÜ�l T MÓ2Ð2Ø�X‰X˜‹_ð
 ×)Ñ)¨&°$Ó7Ð7Ø�X‰X˜‹_ð
 ×-Ñ-¨f°dÓ;ˆHÜ�l X¬r°+¸rÓ/BÐ$CÓDÐDØ�X‰X˜‹_Ü�4‹y˜A‹~Ü˜d 1™g›,Ð&��RäœS $›‘�Ø“7˜b 1›fÜ&Ð'PÐTXÐ^`ÐSaÑ'aÓbÐbà×)Ñ)¨$°BÓ7Ð7à�bÓˆurÑ   c                 óÊ   • U R                   =(       a    U R                   R                  n[        U5      R                  U5      n[	        S[
        /U-  5      n[	        SX/5      $ )Nr°   r­   )rù   rÉ   rÇ   Ú	transformr  rØ   )rÍ   r¡   rÉ   Ú	rule_sizer/  s        rÎ   r³   ÚEBNF_to_BNF.maybew  sU   € Ø×+Ñ+×Q°×0AÑ0A×0QÑ0QˆÜ  Ó1×;Ñ;¸DÓAˆ	Ü�;¤ ¨9Ñ 4Ó5ˆÜ�,  Ó.Ð.rÑ   )rø   rõ   r÷   rù   rö   N)ré   rê   rë   rì   rÏ   Ústrrÿ   r  r0   r  r  r  rÝ   r&  r   r  r³   rî   rï   rÑ   rÎ   rñ   rñ   â   ss   † ò!ð ô ò
ð
8 sð 
8°$ô 
8ò7ò(#7ðJT dð T°ð T¸ô Tð>˜ð  5ô ð:/˜$÷ /rÑ   rñ   c                   óN   • \ rS rSr\S\4S j5       rS\4S jrS rS\4S jr	Sr
g)	ÚSimplifyRule_Visitori~  r  c                 óŒ   • U R                  U R                  5      (       a$   U R                  U R                  5      (       a  M#  g g rË   )Úexpand_kids_by_dataÚdata)r  s    rÎ   Ú_flattenÚSimplifyRule_Visitor._flatten€  s1   € à×&Ñ& t§y¡y×1Ñ1Øð ×&Ñ& t§y¡y×1Õ1rÑ   c                 óì  • U R                  U5        [        UR                  5       H½  u  p#[        U[        5      (       d  M  UR
                  S:X  d  M.  SUl        [        UR                  5       VVVs/ s HM  nU R                  [        S[        UR                  5       VVs/ s H  u  pVX%:X  a  UOUPM     snn5      5      PMO     snnnUl        U R                  U5          g    g s  snnf s  snnnf r
  )	r;  Ú	enumerateÚchildrenrÕ   r0   r:  r*   Úvisitr  )rÍ   r  rø   ÚchildÚoptionÚjÚothers          rÎ   r°   ÚSimplifyRule_Visitor.expansion…  sØ   € ð 	�‰�dÔä! $§-¡-Ö0‰HˆAÜ˜%¤×&Ó&¨5¯:©:¸Õ+EØ(�”	ô 0:¸%¿.¹.Ô/Iõ!Kâ/I Vð "&§¡¬B¨{ÜMVÐW[×WdÑWdÔMeô=gÚMeÁÀð HIÃv¹VÐSXÒ=XÙMeò=gó -hö "iá/Ió!K�”ð —‘˜dÔ#Ùò 1ùó=gùô !Ks   Á5/C/
Â$C)Â9C/
Ã)C/
c                 óØ   • UR                   u  p#UR                  S:X  aL  / nUR                   S   R                    H  nUR                  [        SXS/5      5        M!     SUl        XAl         g g )Nr­   r   r¯   )r?  r:  r  r  )rÍ   r  r¡   Ú
alias_nameÚaliasesrA  s         rÎ   r¯   ÚSimplifyRule_Visitor.alias›  s_   € ØŸ=™=ÑˆØ�9‰9˜Ó$ØˆGØŸ™ qÑ)×2Ô2�Ø—‘œr '¨EÐ+>Ó?Ö@ñ 3à$ˆDŒIØ#�Mð %rÑ   c                 óÆ   • U R                  U5        [        [        UR                  5      5      [        UR                  5      :w  a  [	        UR                  5      Ul        g g rË   )r;  r-  Úsetr?  r*   )rÍ   r  s     rÎ   r­   ÚSimplifyRule_Visitor.expansions¤  sB   € Ø�‰�dÔäŒs�4—=‘=Ó!Ó"¤c¨$¯-©-Ó&8Ó8Ü& t§}¡}Ó5ˆD�Mð 9rÑ   rï   N)ré   rê   rë   rì   Ústaticmethodr0   r;  r°   r¯   r­   rî   rï   rÑ   rÎ   r7  r7  ~  s8   † àð�tó ó ðð˜dô ò,$ð6˜t÷ 6rÑ   r7  c                   ó&   • \ rS rSrS rS rS rSrg)ÚRuleTreeToTexti«  c                 ó   • U$ rË   rï   )rÍ   Úxs     rÎ   r­   ÚRuleTreeToText.expansions¬  s   € ØˆrÑ   c                 ó
   • US 4$ rË   rï   )rÍ   Úsymbolss     rÎ   r°   ÚRuleTreeToText.expansion¯  s   € Ø˜ˆ}ÐrÑ   c                 óD   • Uu  u  p#nUb
   XBSU45       eX$R                   4$ )NrE   ©r¿   )rÍ   rQ  r°   Ú_aliasr¯   s        rÎ   r¯   ÚRuleTreeToText.alias²  s2   € Ø%&Ñ"Ñˆ˜UØ‰~Ð> °#°vÐ>Ó>ˆ~ØŸ*™*Ð$Ð$rÑ   rï   N)ré   rê   rë   rì   r­   r°   r¯   rî   rï   rÑ   rÎ   rO  rO  «  s   † òòõ%rÑ   rO  c                   ó.   • \ rS rSrSrS r\S 5       rSrg)ÚPrepareAnonTerminalsi¸  zfCreate a unique list of anonymous terminals. Attempt to give meaningful names to them when we add themc                 óÚ   • Xl         U R                    Vs1 s H  o"R                  iM     snU l        U Vs0 s H  o"R                  U_M     snU l        SU l        S U l        g s  snf s  snf ©Nr   )Ú	terminalsr¿   Úterm_setÚpatternÚterm_reverserø   rù   )rÍ   r^  Útds      rÎ   rÏ   ÚPrepareAnonTerminals.__init__»  sW   € Ø"ŒØ+/¯>ª>Ó:ª> RŸœ©>Ñ:ˆŒÙ6?Ó@²i°ŸZ™Z¨š^±iÑ@ˆÔØˆŒØ ˆÕùò ;ùÚ@s
   •A#¶A(c                 óˆ  • UR                   nXR                  ;   a?  UR                  U R                  U   R                  R                  :w  a  [	        SU-  5      eS n[        U[        5      (       a   U R                  U   R                  nOE[        U[        5      (       a)  XR                  ;   a  U R                  U   R                  nO U5       eUc$  SU R                  -  nU =R                  S-  sl        X0R                  ;  a`  XR                  ;  d   eU R                  R!                  U5        [#        X15      nX@R                  U'   U R$                  R'                  U5        U R(                  (       a  U R(                  R*                  (       a  SO[        U[        5      n[-        X5S9$ ! [         aˆ     [        U   nOh! [         a[    U(       aQ  [        U5      (       aA  [        US   5      (       a.  UR                  5       U R                  ;  a  UR                  5       n Of = fX0R                  ;   a  S n GNnf = f)Nz+Conflicting flags for the same terminal: %sr   Fz	__ANON_%dr   ©r×   )r´   ra  Úflagsr`  r+   rÕ   r   r¿   r  Ú_TERMINAL_NAMESr   r   Úupperr_  r   rø   Úaddr   r^  r  rù   rÉ   r%   )rÍ   Úpr´   Ú	term_nameÚtermdefr×   s         rÎ   r`  ÚPrepareAnonTerminals.patternÂ  sÞ  € à—‘ˆØ×!Ñ!Ó! a§g¡g°×1BÑ1BÀ1Ñ1E×1MÑ1M×1SÑ1SÓ&SÜÐMÐPQÑQÓRÐRàˆ	ä�aœ×$Ñ$ð%à ×-Ñ-¨aÑ0×5Ñ5‘	ô ˜œ9×%Ñ%Ø×%Ñ%Ó%Ø ×-Ñ-¨aÑ0×5Ñ5�	øà˜!‹O�5àÑØ# d§f¡fÑ,ˆIØ�FŠF�a‰K�FàŸM™MÓ)Ø×-Ñ-Ó-Ð-Ð-Ø�M‰M×Ñ˜iÔ(Ü! )Ó/ˆGØ#*×Ñ˜aÑ Ø�N‰N×!Ñ! 'Ô*à"×/×/°D×4EÑ4E×4U×4U‘UÔ[eÐfgÔisÓ[tˆ
ä˜	Ñ9Ð9øô= ó 	%ð2Ü /°Ñ 6‘IøÜó 2Þ¤°×!6Ñ!6¼;ÀuÈQÁx×;PÑ;PÐUZ×U`ÑU`ÓUbÐjn×jwÑjwÓUwØ$)§K¡K£M˜	ùð2úð §¡Ó-Ø $�Iúð	%ús7   Á3F/ Æ/
IÆ:	GÇIÇA"H)È&IÈ(H)È)IÉ I)rø   rù   ra  r_  r^  N)	ré   rê   rë   rì   Ú__doc__rÏ   Úinline_argsr`  rî   rï   rÑ   rÎ   r[  r[  ¸  s   † Ùpò!ð ñ):ó ó):rÑ   r[  c                   ó*   • \ rS rSrSrS rS rS rSrg)Ú_ReplaceSymbolsiï  zHelper for ApplyTemplatesc                 ó   • 0 U l         g rË   ©Únamesrú   s    rÎ   rÏ   Ú_ReplaceSymbols.__init__ò  s	   € Øˆ�
rÑ   c                 óè   • [        U5      S:X  aQ  [        US   [        5      (       a9  US   R                  U R                  ;   a  U R                  US   R                     $ U R                  SUS 5      $ )Nr   r   r´   )r-  rÕ   r'   r¿   rt  Ú__default__)rÍ   Úcs     rÎ   r´   Ú_ReplaceSymbols.valueõ  s\   € Üˆq‹6�Q‹;œ: a¨¡d¬F×3Ñ3¸¸!¹¿	¹	ÀTÇZÁZÓ8OØ—:‘:˜a ™dŸi™iÑ(Ð(Ø×Ñ ¨¨DÓ1Ð1rÑ   c                 ó²   • US   R                   nX R                  ;   a'  U R                  SU R                  U   /USS  -   S 5      $ U R                  SUS 5      $ )Nr   r¹   r   )r¿   rt  rw  )rÍ   rx  r¿   s      rÎ   r¹   Ú_ReplaceSymbols.template_usageú  s]   € Ø�‰t�y‰yˆØ—:‘:ÓØ×#Ñ#Ð$4°t·z±zÀ$Ñ7GÐ6HÈ1ÈQÈRÈ5Ñ6PÐRVÓWÐWØ×ÑÐ 0°!°TÓ:Ð:rÑ   rs  N)	ré   rê   rë   rì   rn  rÏ   r´   r¹   rî   rï   rÑ   rÎ   rq  rq  ï  s   † Ù#òò2õ
;rÑ   rq  c                   ó$   • \ rS rSrSrS rS rSrg)ÚApplyTemplatesi  zIApply the templates, creating new rules that represent the used templatesc                 óL   • Xl         [        5       U l        [        5       U l        g rË   )Ú	rule_defsrq  ÚreplacerrK  Úcreated_templates)rÍ   r  s     rÎ   rÏ   ÚApplyTemplates.__init__  s   € Ø"ŒÜ'Ó)ˆŒÜ!$£ˆÕrÑ   c                 ó,  ^	• US   R                   m	USS  nT	< SSR                  S U 5       5      < S3nX0R                  ;  aÆ  U R                  R                  U5        U	4S jU R                   5       u  u  pEpg[        U5      [        U5      :X  d   U5       e[        U5      n[        [        XR5      5      U R                  l
        U R                  R                  U5        U R                  R                  U/ U[        U5      45        [        U5      $ )Nr   r   rs   r=   c              3   ó8   #   • U  H  oR                   v •  M     g 7frË   rW  )Ú.0rÞ   s     rÎ   Ú	<genexpr>Ú0ApplyTemplates.template_usage.<locals>.<genexpr>  s   é € Ð0FÂ¸A·¶Âùs   ‚ru   c              3   ó<   >#   • U  H  oS    T:X  d  M  Uv •  M     g7f)r   Nrï   )r…  r  r¿   s     €rÎ   r†  r‡    s   øé € Ð+V²~°!È1ÉÐQUÉ¯A©A²~ùs   ƒ“	)r¿   Újoinr�  ri  r  r-  r   ÚdictÚzipr€  rt  r2  r  r&   )
rÍ   rx  rÛ   Úresult_nameÚ_nÚparamsr  ÚoptionsÚresult_treer¿   s
            @rÎ   r¹   ÚApplyTemplates.template_usage	  sá   ø€ Ø�‰t�y‰yˆØ��ˆuˆÛ"&¨¯©Ñ0FÁÓ0FÖ(FÐGˆØ×4Ñ4Ó4Ø×"Ñ"×&Ñ& {Ô3Ü+V°t·~²~Ó+VÑ)Ñ'ˆR˜Ü�v“;¤# d£)Ó+Ð1¨TÓ1Ð+Ü" 4›.ˆKÜ"&¤s¨6Ó'8Ó"9ˆD�M‰MÔØ�M‰M×#Ñ# KÔ0Ø�N‰N×!Ñ! ;°°KÄÈ'ÓARÐ"SÔTÜ˜;Ó'Ð'rÑ   )r�  r€  r  N)ré   rê   rë   rì   rn  rÏ   r¹   rî   rï   rÑ   rÎ   r}  r}    s   † ÙSò'õ
(rÑ   r}  c                 ó.   ^ • [        U 4S jU 5       5      $ )Nc              3   óF   >#   • U  H  nTR                  U5      v •  M     g 7frË   )Úrfind)r…  rx  Úss     €rÎ   r†  Ú_rfind.<locals>.<genexpr>  s   øé € Ð+¢7˜aˆq�w‰w�q�zˆz¢7ùs   ƒ!)rç   )r•  Úchoicess   ` rÎ   Ú_rfindr˜    s   ø€ ÜÔ+¡7Ó+Ó+Ð+rÑ   c                 óp  • Sn[        U 5      nU H6  nX-  nUS:X  d  M   [        U5      nUS:X  a  US-  nOUS;  a  US-  nX-  nM8     UR	                  SS5      R	                  SS	5      nS
U-  n [        U5      n U $ ! [         a    [        SU -  5      ef = f! [         a  n[        X5      eS nAff = f)Nr©   rK   z/Literal ended unexpectedly (bad escaping): `%r`ú\\ÚUuxnftrz\"rg   ri   z\'z	u'''%s''')ÚiterÚnextÚStopIterationr+   Úreplacer   ÚSyntaxError)r•  Úwrø   r   Ún2Úto_evalÚes          rÎ   Úeval_escapingr¥    sà   € Ø
€AÜˆQ‹€AÛˆØ	‰ˆØ��9ðZÜ˜!“W�ð �T‹zØ�V‘‘Ø˜9Ó$Ø�T‘	�Ø‰GŠAñ ð 	
�	‰	�%˜Ó×%Ñ% c¨5Ó1€Aà˜A‰o€Gð!Ü˜Ó!ˆð €Høô !ó ZÜ"Ð#TÐWXÑ#XÓYÐYðZûô ó !Ü˜1Ó Ð ûð!ús#    A?Á2B Á?BÂ
B5Â%B0Â0B5c                 óŒ  • [        U [        5      (       d   eU R                  n[        US5      S-   nUS:”  d   eXS  n[	        S U 5       5      (       d   U5       eU R
                  S:X  a  SU;   a  [        S5      eU R
                  S:X  a  SU;   a  S	U;  a  [        S
5      eUS U nUS   US   :X  a	  US   S;   d   eUSS n[        U5      nUS:X  a  [        SU -  5      eU R
                  S:X  a&  UR                  SS5      n[        XSU R                  S9$ U R
                  S:X  a  [        XSU R                  S9$  S5       e)Nz/"r   r   c              3   ó2   #   • U  H  o[         ;   v •  M     g 7frË   )Ú	_RE_FLAGS)r…  Úfs     rÎ   r†  Ú&_literal_to_pattern.<locals>.<genexpr><  s   é € Ð-¢u !”IŽ~¢uùó   ‚r‘   r{   z*You cannot put newlines in string literalsr’   rQ  zLYou can only use newlines in regular expressions with the `x` (verbose) flagr  z"/r©   z$Empty terminals are not allowed (%s)rš  rK   )Úrawz:Invariant failed: literal.type not in ["STRING", "REGEXP"])rÕ   r   r´   r˜  ÚallÚtyper+   r¥  rŸ  r   r   )r·   ÚvÚ
flag_startrf  rQ  r•  s         rÎ   Ú_literal_to_patternr±  6  sV  € Ü�gœu×%Ñ%Ð%Ð%Ø�‰€AÜ˜˜4“ Ñ"€JØ˜‹>Ðˆ>ØˆkˆN€EÜÑ-¡uÓ-×-Ñ-Ð4¨uÓ4Ð-à‡|�|�xÓ D¨A£IÜÐGÓHÐHà‡|�|�xÓ D¨A£I°#¸UÓ2BÜð 9ó :ð 	:ð 	
ˆ+ˆ:ˆ€AØˆQ‰4�1�R‘5‹=˜Q˜q™T T›\Ð)Ð)Ø	ˆ!ˆBˆ€Aä�aÓ€AàˆBƒwÜÐAÀGÑKÓLÐLà‡|�|�xÓØ�I‰I�f˜dÓ#ˆÜ˜!¨¯©Ñ6Ð6Ø	�‰˜Ó	!Ü˜ w§}¡}Ñ5Ð5àRÐRÓRˆurÑ   c                   ó    • \ rS rSrS rS rSrg)ÚPrepareLiteralsiW  c                 ó.   • [        S[        U5      /5      $ )Nr`  )r  r±  )rÍ   r·   s     rÎ   r·   ÚPrepareLiterals.literalY  s   € Ü�)Ô1°'Ó:Ð;Ó<Ð<rÑ   c                 ó8  • UR                   UR                   s=:X  a  S:X  d   e   eUR                  SS nUR                  SS n[        [        U5      5      [        [        U5      5      s=:X  a  S:X  d   e   eSU< SU< S3n[	        S[        U5      /5      $ )Nr‘   r   r  rw   rE   ry   r`  )r®  r´   r-  r¥  r  r   )rÍ   rž   ÚendÚregexps       rÎ   r¸   ÚPrepareLiterals.range\  sŽ   € Ø�z‰z˜SŸX™XÕ1¨Ó1Ð1Ñ1Ð1Ð1Ø—‘˜A˜bÐ!ˆØ�i‰i˜˜"ˆoˆÜ”= Ó'Ó(¬C´¸cÓ0BÓ,CÕHÀqÓHÐHÑHÐHÑHÛ#£SÐ)ˆÜ�)œi¨Ó/Ð0Ó1Ð1rÑ   rï   N)ré   rê   rë   rì   r·   r¸   rî   rï   rÑ   rÎ   r³  r³  W  s   † ò=õ2rÑ   r³  rÓ   c                 ó   • [        U S5      $ )Nrï   )r   )r¸  Ú	flags_sets     rÎ   Ú_make_joined_patternr¼  e  s   € Ü�V˜RÓ Ð rÑ   c                   ój   • \ rS rSrS rS\\   S\4S jrS\\   S\4S jrS\4S jr	S	 r
S
 rS rSrg)ÚTerminalTreeToPatternih  c                 ó   • Uu  nU$ rË   rï   )rÍ   Úpsrj  s      rÎ   r`  ÚTerminalTreeToPattern.patterni  s   € Ø‰ˆØˆrÑ   ÚitemsrÓ   c                 óÒ   • U(       d  [        S5      $ [        U5      S:X  a  US   $ SR                  S U 5       5      n[        X! Vs1 s H  o3R                  iM     sn5      $ s  snf )Nr©   r   r   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frË   ©Ú	to_regexp©r…  rø   s     rÎ   r†  Ú2TerminalTreeToPattern.expansion.<locals>.<genexpr>t  s   é € Ð7²¨AŸ+™+Ÿ-˜-²ùó   ‚)r   r-  r‰  r¼  rf  )rÍ   rÂ  r`  rø   s       rÎ   r°   ÚTerminalTreeToPattern.expansionm  sX   € ÞÜ˜b“>Ð!äˆu‹:˜‹?Ø˜‘8ˆOà—'‘'Ñ7±Ó7Ó7ˆÜ# G¸uÓ-Eºu¸!¯g¬g¹uÑ-EÓFÐFùÒ-Es   ÁA$
Úexpsc                 óÔ   • [        U5      S:X  a  US   $ UR                  S S9  SSR                  S U 5       5      -  n[        X! Vs1 s H  o3R                  iM     sn5      $ s  snf )Nr   r   c                 ó`   • U R                   * U R                  * [        U R                  5      * 4$ rË   )Ú	max_widthÚ	min_widthr-  r´   ©rQ  s    rÎ   Ú<lambda>Ú2TerminalTreeToPattern.expansions.<locals>.<lambda>}  s!   €  !§+¡+ °·±¨|¼cÀ!Ç'Á'»l¸]Ñ KrÑ   )r  z(?:%s)rM   c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frË   rÅ  rÇ  s     rÎ   r†  Ú3TerminalTreeToPattern.expansions.<locals>.<genexpr>  s   é € Ð&Cºd¸§{¡{§} }ºdùrÉ  )r-  Úsortr‰  r¼  rf  )rÍ   rË  r`  rø   s       rÎ   r­   Ú TerminalTreeToPattern.expansionsw  sa   € Üˆt‹9˜‹>Ø˜‘7ˆNð 	�	‰	ÑKˆ	ÑLà˜cŸh™hÑ&C¹dÓ&CÓCÑDˆÜ# G¸tÓ-Dºt¸!¯g¬g¹tÑ-DÓEÐEùÒ-Ds   Á	A%
c                 ó:  • US S u  p#US:X  aR  [        U5      S:X  a  S[        US   5      -  nOB[        [        USS  5      u  pEXT:  a  [        SX$U4-  5      eSXE4-  nO[        U5      S:X  d   e[	        SUR                  5       < SU< 3UR                  5      $ )	Né   rm   é   z{%d}r,  z{%d,%d}z(?:rq   )r-  rÝ   r.  r+   r   rÆ  rf  )rÍ   rÛ   rü   r(  r  r  s         rÎ   r  ÚTerminalTreeToPattern.expr‚  s�   € à˜˜!�H‰	ˆØ�‹9Ü�4‹y˜A‹~Øœc $ q¡'›lÑ*‘äœS $ q r (Ó+‘�Ø“7Ü&Ð'PÐTYÐ_aÐSbÑ'bÓcÐcØ " Ñ)‘ä�t“9 “>Ð!�>Ý u§¡Ö'8º"Ð=¸u¿{¹{ÓKÐKrÑ   c                 ó,   • U R                  US/-   5      $ )NrO   )r  )rÍ   r  s     rÎ   r³   ÚTerminalTreeToPattern.maybe‘  s   € Ø�y‰y˜  ™Ó&Ð&rÑ   c                 ó   • [        S5      e)NzBAliasing not allowed in terminals (You used -> in the wrong place))r+   )rÍ   r  s     rÎ   r¯   ÚTerminalTreeToPattern.alias”  s   € ÜÐ_Ó`Ð`rÑ   c                 ó   • US   $ r]  rï   ©rÍ   r¯  s     rÎ   r´   ÚTerminalTreeToPattern.value—  s   € Ø�‰tˆrÑ   rï   N)ré   rê   rë   rì   r`  r   r   r°   r­   r  r³   r¯   r´   rî   rï   rÑ   rÎ   r¾  r¾  h  sY   † òðG˜t G™}ð G°ô Gð	F˜t G™}ð 	F°ô 	FðL˜Gô Lò'òaõrÑ   r¾  c                   ó   • \ rS rSrS rSrg)ÚValidateSymbolsi›  c                 óH   • Uu  n[        U[        [        45      (       d   eU$ rË   )rÕ   r0   r'   rà  s     rÎ   r´   ÚValidateSymbols.valueœ  s%   € Ø‰ˆÜ˜!œd¤F˜^×,Ñ,Ð,Ð,ØˆrÑ   rï   N)ré   rê   rë   rì   r´   rî   rï   rÑ   rÎ   rã  rã  ›  s   † õrÑ   rã  c                 ó6   • [        S5      R                  U 5      $ )z#Deepcopy tree `t` without recursionF)r6   r2  ©r  s    rÎ   Únr_deepcopy_treerè  ¢  s   € ä# EÓ*×4Ñ4°QÓ7Ð7rÑ   c            	       óú   • \ rS rSr% \\\\\\4   4      \	S'   \\\\\S4   \\
4      \	S'   \\   \	S'   S\\\\\S4   \\
4      S\\\\\\4   4      S\\   SS4S jrS	rS\\\   \\   \\   4   4S
 jrSrg)ÚGrammari§  Ú	term_defs.r  r£   rÓ   Nc                 ó(   • X l         Xl        X0l        g rË   ©rë  r  r£   )rÍ   r  rë  r£   s       rÎ   rÏ   ÚGrammar.__init__­  s   € Ø"ŒØ"ŒØ�rÑ   rí  c                 óî  ^ ^^,^-• T R                    VVVs/ s H  u  nu  pEU[        U5      U44PM     nnnnT R                   VVVVs/ s H  u  p5pGX5[        U5      U4PM     nnnnnU HZ  u  n	u  p«U
c  M  [        U
R	                  S5      5      n[        U5      S:X  d  M8  US   R                  (       a  MN  [        SU	-  5      e   [        5       [        5       -  nU V	V
Vs/ s H,  u  n	u  p«U
(       d  M  [        X�R                  U
5      U5      PM.     nn
n	n[        U5      n[        5       [        5       -  U-  nU[        U5      -  n[        5       n/ nSnU[        U5      :  aŸ  UU   u  n	nnnUS-  n[        U5      S:w  a  M/  U(       a  UR                   (       a	  [#        SS9OS nUUl        U	Ul        UUl        UR                  U5      nUR                  U5      nUR)                  U	UU45        U[        U5      :  a  MŸ  UUR*                  -  n[        U5      [        U V	VVs1 s H	  u  n	nnU	iM     snnn	5      :X  d   S5       e[-        5       n[/        5       n/ nU GHs  nUu  n	nnUR1                  U5        UR                  U5      n[3        U5       GH7  u  nu  nn U (       a*  U	R5                  S5      (       a  [        S	U	< S
U < S35      e[7        S U 5       5      n![9        U!5      (       aB  [;        U5      =(       d
    [#        5       n"U!U"l        U V#s/ s H  n#U#[>        :w  d  M  U#PM     nn#OUn"U Hg  n$[A        U$[B        5      (       d   eU$RD                  (       d  M-  U"(       d  M6  U"R                   (       d  MI  [A        U$[F        5      (       d   eSU$l$        Mi     [K        [M        U	5      UUU U"5      n%UR)                  U%5        GM:     GMv     [        [O        U5      5      [        U5      :w  aÍ  [Q        US 5      n&U&RS                  5        H˜  n'[        U'5      S:”  d  M  U'S   RT                  (       a$  [        SSRW                  S U' 5       5      -  5      e[        U' V(s1 s H&  n(U(RX                  U(RZ                  U(R\                  4iM(     sn(5      [        U'5      :X  a  M˜   e   [        [_        U5      5      n [        U5      n)U V(V*s1 s HB  n(U(RT                    H.  n*[A        U*[L        5      (       d  M  U*U(R`                  :w  d  M,  U*iM0     MD     sn*n(m,T,U V*s1 s H  n*[M        U*5      iM     sn*-  m,[c        UU,4S j5      u  nn+U+ H  n([d        Rf                  " SU(5        M     [        U5      U):X  a  OMÁ  TS:w  a—  U V(Vs1 s H:  n(U(RT                    H&  n[A        U[F        5      (       d  M  URh                  iM(     M<     snn(m-[c        UU UU-4S j5      u  nn+U+(       a1  [d        Rf                  " SU+ Vs/ s H  oDRh                  PM     sn5        UUT Rj                  4$ s  snnnf s  snnnnf s  snn
n	f s  snnn	f s  sn#f s  sn(f s  sn*n(f s  sn*f s  snn(f s  snf )Nr°   r   r   zTerminals cannot be empty (%s)TrÌ   zWhoops, name collisionr_   zRule za is marked for expansion (it starts with an underscore) and isn't allowed to have aliases (alias=rq   c              3   ó2   #   • U  H  o[         :H  v •  M     g 7frË   )rØ   )r…  rQ  s     rÎ   r†  Ú"Grammar.compile.<locals>.<genexpr>ù  s   é € Ð%Cº°A¬¦iºùr«  Fc                 ó   • U $ rË   rï   rÐ  s    rÎ   rÑ  Ú!Grammar.compile.<locals>.<lambda>  s   € ¹ArÑ   zXRules defined twice: %s

(Might happen due to colliding expansion of optionals: [] or ?)r©   c              3   ó,   #   • U  H
  nS U-  v •  M     g7f)z
  * %sNrï   rÇ  s     rÎ   r†  rñ    s   é € Ð4RÊTÈ°ZÀ!¶^ÊTùs   ‚c                 ó"   >• U R                   T;   $ rË   )Úorigin)ÚrÚ
used_ruless    €rÎ   rÑ  ró     s   ø€ ÈQÏXÉXÐYcÒMcrÑ   zUnused rule: %srG   c                 óŽ   >• U R                   T;   =(       d/    U R                   TR                  ;   =(       d    U R                   T;   $ rË   )r¿   r£   )r  rÍ   Úterminals_to_keepÚ
used_termss    €€€rÎ   rÑ  ró  +  sO   ø€ À1Ç6Á6ÈZÑCW÷  DPÐ[\×[aÑ[aÐei×epÑepÑ[p÷  DPÐtu×tzÑtzð  Pñ  uPð  DPrÑ   zUnused terminals: %s)6rë  rè  r  ÚlistÚ	find_datar-  r?  r+   r³  r¾  r   r2  r[  rã  r}  rñ   rÉ   r#   rù   r÷   r  rõ   rO  r7  r@  r>  rÖ   ÚtupleÚanyr   Úempty_indicesrØ   rÕ   r'   Úis_termr%   r×   r$   r&   rK  r)   Úvaluesr°   r‰  r¯   Úorderr�  r   rö  r   r   Údebugr¿   r£   ).rÍ   rž   rú  r   r  rj  rë  Úor  r¿   Ú	term_treerª   r­   Útransformerr^  Úanon_tokens_transfÚebnf_to_bnfÚrulesrø   rŽ  Ú	rule_treer�  rù   r  ÚresÚ_tÚ_oÚrule_tree_to_textÚsimplify_ruleÚcompiled_rulesÚrule_contentr°   r¯   r   Úexp_optionsrQ  rÒ   r¡   Ú
duplicatesÚdupsr÷  rx  r•  Úunusedrø  rû  s.   ` `                                         @@rÎ   ÚcompileÚGrammar.compile´  só  û€ ð EIÇNÂNÕSÂN±y°q¹&¸1�aÔ*¨1Ó-¨qÐ1Ó2ÁNˆ	ÒSØFJÇnÂnÖUÂn¹
¸¸a�aÔ,¨QÓ/°Ó3Ánˆ	ÓUó ,5Ñ'ˆDÑ'�9ØÑ ÙÜ˜i×1Ñ1°+Ó>Ó?ˆJÜ�:‹ !Õ#¨J°q©M×,B×,BÑ,BÜ"Ð#CÀdÑ#JÓKÐKñ ,5ô &Ó'Ô*?Ó*AÑAˆá8AõPÚ8AÑ4˜Ñ4 	ÄYó S”[ ×'<Ñ'<¸YÓ'GÈÖRÙ8Að 	ò Pô 2°)Ó<ÐÜ%Ó'¬/Ó*;Ñ;Ð>PÑPˆð 	”~ iÓ0Ñ0ˆô "“mˆØˆØˆØ”#�i“.Ó Ø/8¸©|Ñ,ˆD�&˜) WØ�‰FˆAÜ�6‹{˜aÓÙÞ@GÈG×Lc×Lcœ;°tÒ<ÐimˆLØ'3ˆKÔ$Ø!%ˆKÔØ.:ÐÔ+Ø×(Ñ(¨Ó3ˆDØ#×-Ñ-¨dÓ3ˆCØ�L‰L˜$  WÐ-Ô.ð ”#�i“.Õ ð 	�×&Ñ&Ñ&ˆä�5‹zœS¹5Õ!Aº5©<¨4°°R£$¹5Ó!AÓBÓBÐ\ÐD\Ó\ÐBô +Ó,Ðä,Ó.ˆØ%'ˆÜ!ˆLØ".ÑˆD�$˜Ø×Ñ Ô%Ø*×4Ñ4°TÓ:ˆJä)2°:×)>Ñ%�Ñ%�I˜uÞ˜TŸ_™_¨S×1Ñ1Ý&ó  X\ó  ^cð  (dó  eð  eä %Ñ%C¹Ó%CÓ C�Ü�}×%Ñ%Ü"& w£-×"@´;³=�KØ0=�KÔ-Ù,5Ó CªI q¸¼F¹§©I�IÐ C�Ià")�Kã$�CÜ% c¬6×2Ñ2Ð2Ð2Ø—{—{‘{§{ {°{×7R×7RÑ7RÜ)¨#¬x×8Ñ8Ð8Ð8Ø).˜žñ	 %ô
 œK¨Ó-¨y¸!¸UÀKÓP�Ø×%Ñ% d×+ô% *?ñ "ô4 Œs�>Ó"Ó#¤s¨>Ó':Ó:Ü! .±+Ó>ˆJØ"×)Ñ)Ö+�Ü�t“9˜q•=Ø˜A‘w×(×(Ü*ð  ,HØ-/¯W©WÑ4RÉTÓ4RÓ-Rñ,Só Tð Tô ÁtÓLÂtÀ! §¡¨!¯'©'°1·9±9Ó =ÁtÑLÓMÔQTÐUYÓQZÕZÐZÐZñ ,ô "¤*¨^Ó"<Ó=ˆNð Ü�NÓ#ˆAÙ%3ô /¢^ Ø%&§[¥[ Ü)¨!¬[×9ó ð !" Q§X¡X¡÷ Ù%0ñ ¡^ò /ˆJð ±5Ó9²5¨aœ; qž>±5Ñ9Ñ9ˆJÜ%2°>ÔCcÓ%dÑ"ˆN˜FÛ�Ü—’Ð.°Ö2ñ ä�>Ó" aÓ'Øñ ð  Ó#Ù*8ô =ª. QØ*+¯+­+ QÜ$.¨q´(×$;ó !˜!Ÿ&œ&Ù*5ñ !©.ò =ˆJô !.¨iö  :Pó  !QÑˆI�vÞÜ—’Ð3ÁfÓ5MÂfÀ·f´fÁfÑ5MÔNà˜.¨$¯+©+Ð5Ð5ùôq TùÝUùô PùôB "Bùò( !Dùò,  Mùó/ùò :ùó=ùò
 6NsY   •X:ÁY
Ã#Y	Ã7Y	È+YÌ!YÌ3YÑ1-Y
Ó)Y!Ô
Y!Ô
Y!Ô/Y'Ö)Y,×Y,ØY2
)r£   r  rë  )ré   rê   rë   rì   r   r	   r5  r0   rÝ   Ú__annotations__r#   rÏ   Ú__serialize_fields__r   r$   r  rî   rï   rÑ   rÎ   rê  rê  §  s	  ‡ à�E˜#˜u T¨3 YÑ/Ð/Ñ0Ñ1Ó1Ø�E˜#˜u S¨# X™°°kÐAÑBÑCÓCØ�‰IÓð $ u¨S°%¸¸S¸±/À4ÈÐ-TÑ'UÑ"Vð ÐcgÐhmÐnqÐsxÐy}ð  @Cð  zCñ  tDð  oDñ  iEñ  dFð ð  PTð  UXñ  PYð ð  ^bô ð
 >Ðð{6°5¸¸kÑ9JÈDÐQUÉJÐX\Ð]`ÑXaÐ9aÑ3b÷ {6rÑ   rê  ÚPackageResourcezpkg_name pathc                   ó†   • \ rS rSr% Sr\\S'   \\   \S'   SS\S\\   SS4S jjrS r	S	\
S\\4   S
\S\\\4   4S jrSrg)ÚFromPackageLoaderi5  až  
Provides a simple way of creating custom import loaders that load from packages via ``pkgutil.get_data`` instead of using `open`.
This allows them to be compatible even from within zip files.

Relative imports are handled, so you can just freely use them.

pkg_name: The name of the package. You can probably provide `__name__` most of the time
search_paths: All the path that will be search on absolute imports.
Úpkg_nameÚsearch_pathsrÓ   Nc                 ó   • Xl         X l        g rË   ©r  r  )rÍ   r  r  s      rÎ   rÏ   ÚFromPackageLoader.__init__C  s   € Ø ŒØ(ÕrÑ   c                 ól   • [        U 5      R                  < SU R                  < SU R                  < S3$ )Nro   ú, rq   )r®  ré   r  r  rú   s    rÎ   Ú__repr__ÚFromPackageLoader.__repr__G  s#   € Ü# D›z×2Ô2°D·M´MÀ4×CTÔCTÐUÐUrÑ   Ú	base_pathÚgrammar_pathc                 óö  • Uc  U R                   nOF[        U[        5      (       a  UR                  U R                  :w  a
  [	        5       eUR
                  /nS nU Hv  n[        R
                  R                  XR5      n [        R                  " U R                  U5      n[        U R                  U5      U(       a  UR                  5       4s  $ S4s  $    [	        S5      Ue! [         a  nUn S nAM˜  S nAff = f)Nr©   z"Cannot find grammar in given paths)r  rÕ   r  r  ÚIOErrorÚpathÚosr‰  ÚpkgutilÚget_dataÚdecode)	rÍ   r'  r(  Úto_tryÚerrr+  Ú	full_pathÚtextr¤  s	            rÎ   Ú__call__ÚFromPackageLoader.__call__J  sÚ   € ØÑØ×&Ñ&‰Fô ˜i¬×9Ñ9¸Y×=OÑ=OÐSW×S`ÑS`Ó=`ä“i�Ø—n‘nÐ%ˆFàˆÛˆDÜŸ™Ÿ™ TÓ8ˆIðbÜ(/×(8Ò(8¸¿¹È	Ó(R�ô
 ' t§}¡}°iÓ@ÖTXÀ4Ç;Á;Ã=ÐaÒaÐ^`ÐaÒañ ô Ð:Ó;ÀÐDøô ó Ø�Ýûðús   Á>!C!Ã!
C8Ã+C3Ã3C8r!  ))r©   )ré   rê   rë   rì   rn  r5  r  r   rÏ   r%  r
   r  r	   r4  rî   rï   rÑ   rÎ   r  r  5  st   ‡ ñð ƒMØ˜3‘-Óñ) ð )°H¸S±Mð )ÈTõ )òVðE %¨¨c°?Ð(BÑ"Cð EÐSVð EÐ[`ÐapÐruÐauÑ[v÷ ErÑ   r  Úlarkc           	      óè  •  SnU R                  5        H«  u  p#Uc  M
  UR                  S5       HŒ  nUR                  u  n[        U[        5      (       a  [        SU< SU< S35      e[        U[        5      (       a&   XR                     nUc   eXdR                  S'   SnMu  [        U[        5      (       a  MŒ   e   M­     U(       d  OMË  U R                  5        Hg  u  p'U(       d  M  UR                   HI  nUR                  5        V	s/ s H  n	[        U	5      PM     n
n	[        U5      U
;   d  M=  [        S	U-  5      e   Mi     g ! [         a    [        SUR                  -  5      ef = fs  sn	f )
NTFr´   z'Rules aren't allowed inside terminals (z in rq   z!Terminal used but not defined: %sr   zNRecursion in terminal '%s' (recursion is only allowed in rules, not terminals))rÂ  rý  r?  rÕ   r&   r+   r%   r¿   r  r0   Úiter_subtreesÚid)Ú	term_dictÚchangedr¿   Ú
token_treeÚexpÚitemÚ
term_valuer¢   rA  rQ  Úidss              rÎ   Úresolve_term_referencesrA  f  s\  € ð ØˆØ )§¡Ö 1ÑˆDØÑ!ÙØ!×+Ñ+¨GÖ4�ØŸ™‘�Ü˜d¤K×0Ñ0Ý&Ó]aÓcgÐ'hÓiÐiÜ ¤h×/Ñ/ð\Ø%.¯y©yÑ%9˜
ð &Ñ1Ð1Ð1Ø&0—L‘L ‘OØ"’Gä% d¬D×1Ó1Ð1Ð1ó 5ñ !2ö" Øñ) ð,  —o‘oÖ'‰
ˆßˆ4ØŸœ�Ø&+×&9Ñ&9Ô&;Ó<Ò&; ”r˜!–uÑ&;�Ð<Ü�d“8˜s•?Ü&Ð'wÐz~Ñ'~ÓÐó 'ò (øô $ó \Ü*Ð+NÐQU×QZÑQZÑ+ZÓ[Ð[ð\üò =s   Á?E	ÄE/Å	#E,c                 ó    • [        U [        5      (       d   eU R                  5       (       a  [        X R	                  S5      S9$ [        U 5      $ ©Nr_   re  )rÕ   r5  Úisupperr%   rÖ   r&   ©r•  s    rÎ   Úsymbol_from_strcaserF  ˆ  s=   € Ü�aœ×ÑÐÐØ89¿	¹	¿¹Œ8�A§,¡,¨sÓ"3Ñ4ÐWÌÐUVËÐWrÑ   c                   ó    • \ rS rSrS rS rSrg)ÚPrepareGrammariŒ  c                 óF   • [        [        U5      UR                  S5      S9$ rC  )r%   r5  rÖ   ©rÍ   r¿   s     rÎ   rµ   ÚPrepareGrammar.terminalŽ  s   € Üœ˜D›	¨d¯o©o¸cÓ.BÑCÐCrÑ   c                 ó,   • [        UR                  5      $ rË   )r&   r´   rJ  s     rÎ   r¶   ÚPrepareGrammar.nonterminal‘  s   € Ü˜4Ÿ:™:Ó&Ð&rÑ   rï   N)ré   rê   rë   rì   rµ   r¶   rî   rï   rÑ   rÎ   rH  rH  Œ  s   † òDõ'rÑ   rH  c                 óÂ   • U R                   S:X  d   eU R                  S5       VVs1 s H)  nUR                  S 5        H  nUR                  iM     M+     snn$ s  snnf )Nr­   r°   c                 ó"   • [        U [        5      $ rË   )rÕ   r'   rç  s    rÎ   rÑ  Ú$_find_used_symbols.<locals>.<lambda>˜  s   € ¬Z¸¼6Ô-BrÑ   )r:  rý  Úscan_valuesr¿   )r  rQ  r  s      rÎ   Ú_find_used_symbolsrR  •  sa   € Ø�9‰9˜Ó$Ð$Ð$Ø ŸN™N¨;Ô7ô EÒ7�qØ—]‘]Ñ#B×C�ð �FŒFÙCñ Ñ7ò Eð Eùó Es   §0Ac                  ó^  •  [         R                  $ ! [         Ga�    [        R	                  5        V Vs/ s H  u  p[        U [        U5      5      PM     Os  snn f nn n[        R	                  5        V Vs/ s H/  u  pU R                  S5      U[        U R                  S5      S94PM1     Os  snn f nn nU VVVVVV	s/ s Ha  u  pVn[        U5        HK  u  pƒ[        [        U5      UR                  5        V	s/ s H  n	[        U	5      PM     Os  sn	f sn	US U5      PMM     Mc     O
s  sn	nnnnnf nnnnnnn	[!        U["        5      R%                  5       n
SS Kn[)        X+/ SQ5      n[+        XJS/5      nSUl        SUl        [1        XÍS 5      [         l        [         R                  s $ f = f)NrO   )Úexpand1r   )r•   r–   rL   rž   ÚbasicÚlalr)Ú_get_parserÚcacheÚAttributeErrorÚ	TERMINALSrÂ  r   r   ÚRULESÚlstripr#   rÖ   r>  r$   r&   ÚsplitrF  r   r  Úcreate_callbackÚrer!   r"   Ú
lexer_typeÚparser_typer    )r¿   r´   r^  rQ  r
  r÷  Úxsr  rø   r•  Úcallbackr_  Ú
lexer_confÚparser_confs                 rÎ   rW  rW  ›  sm  € ð!Ü× Ñ Ð øÜô !ÜLUÏOÉOÔL]Ô^ÒL]¹[¸T”[ ¤y°Ó'7Ö8ÒL]ùÓ^ˆ	Ñ^ô  %Ÿ{™{œ}ô.Ú,‘G�Dð —+‘+˜cÓ" A¤{¸4¿?¹?È3Ó;OÑ'PÓQÚ,ùó.ˆñ .ñ "'÷Bð BÚ!&‘X�Q˜A´9¸R·=©4¨1ô ”k !“nÀqÇwÁwÄyÓ&QÂyÀ!Ô':¸1Ö'=ÂyùÔ&QÐSTÐVZÐ\]Ö^Ù3@ñ _Ú!&ù÷Bˆõ Bô $ E¬2Ó.×>Ñ>Ó@ˆÛÜ˜yÒ.LÓMˆ
Ü  °7°)Ó<ˆØ 'ˆ
ÔØ"(ˆÔÜ+¨JÀTÓJŒÔÜ× Ñ Ò ð!ús?   ‚ ’"F,´!AÁ!F,Á66B-Â,F,Â?;D(Ã:DÄD(Ä'BF,Æ+F,zIncorrect type of valueza: 1
zUnclosed parenthesisza: (
zUnmatched closing parenthesis)za: )
za: [)
za: (]
z5Expecting rule or terminal definition (missing colon))za
zA
za->
zA->
za A
z#Illegal name for rules or terminalszAa:
zAlias expects lowercase namez
a: -> "a"
zUnexpected colon)za::
za: b:
za: B:
za: "a":
zMisplaced operator)za: b??za: b(?)za:+
za:?
za:*
za:|*
z;Expecting option ("|") or a new rule or terminal definitionza:a
()
z"Terminal names cannot contain dotszA.B
z%Expecting rule or terminal definitionz"a"
z%import expects a namez%import "a"
z%ignore expects a valuez%ignore %import
c                 ób   • UR                  U [        SS9nU(       a  U$ SUR                  ;   a  gg )NT)Úuse_acceptsr‘   zExpecting a value)Úmatch_examplesÚGRAMMAR_ERRORSÚexpected)Úparser¤  Úerrors      rÎ   Ú_translate_parser_exceptionrm  ¿  s5   € Ø× Ñ  ¬ÀDÐ ÐIˆÞØˆLØ˜Ÿ™Ó#Ø&ð $rÑ   c           
      óä  •  [        5       R                  U S-   U5      n[        5       R                  U5      $ ! [         a;  nUR                  U 5      n[	        SUR
                  UR                  X4-  5      eS nAf[         aj  nUR                  U 5      n[        [        5       R                  U5      nU(       a.  [	        U< SUR
                  < SUR                  < SU< 35      ee S nAff = f)Nr{   z1Unexpected input at line %d column %d in %s: 

%sz
, at line z column z

)rW  rk  r,   Úget_contextr+   ÚlineÚcolumnr-   rm  rH  r2  )r3  r¿   rž   r  r¤  Úcontextrl  s          rÎ   Ú_parse_grammarrs  Æ  sÍ   € ðÜ‹}×"Ñ" 4¨$¡;°Ó6ˆô Ó×%Ñ% dÓ+Ð+øô  ó >Ø—-‘- Ó%ˆÜÐPØŸF™F A§H¡H¨dÐ<ñ=ó >ð 	>ûäó Ø—-‘- Ó%ˆÜ+¬K«M×,?Ñ,?ÀÓCˆÞÜÃ5È!Ï&Ì&ÐRS×RZÔRZÒ\cÐdÓeÐeØûðús"   ‚8 ¸
C/Á6A8Á8C/ÂA%C*Ã*C/c                 ó(  • [        U [        5      (       as  [        [        5       R                  U 5      nU(       a  U$ SR                  U R                  =(       d    U R                  5      nS[        U R                  5      < SU< S3$ [        U 5      $ )Nr$  zUnexpected token z. Expected one of: {ru   )
rÕ   r-   rm  rW  rk  r‰  Úacceptsrj  r5  Útoken)rl  Úerror2rj  s      rÎ   Ú_error_reprrx  Ö  se   € Ü�%œ×)Ñ)Ü,¬[«]×-@Ñ-@À%ÓHˆÞØˆMØ—9‘9˜UŸ]™]×<¨e¯n©nÓ=‰Ü?BÀ5Ç;Á;Ö?OÓQYÐZÐZä�5‹zÐrÑ   c                 ó^   • S n[        SU 4/U5       H  u  p4U" U5      (       d  M  X44s  $    g )Nc              3   ó²   #   • U u  pUR                  5        H*  n[        US5      n UR                  U5      nX4-   U4v •  M,     g ! [         a     M<  f = f7f)Nr©   )r—  r   Ú
feed_tokenr.   )Únoder+  rj  Úchoicer  Únew_ps         rÎ   ÚexpandÚ*_search_interactive_parser.<locals>.expandá  s_   é € Ø‰ˆØ—i‘i–kˆFÜ�f˜bÓ!ˆAð.ØŸ™ Q›�ð ˜YÑ&¨Ð-Ô-ò "øô ó Úðüs'   ‚$A§A¸AÁ
AÁAÁAÁArï   )r   )Úinteractive_parserÚ	predicater  r+  rj  s        rÎ   Ú_search_interactive_parserrƒ  à  s6   € ò	.ô " BÐ(:Ð#;Ð"<¸fÖE‰ˆÙ�Q�<‹<Ø�7ŠNò FrÑ   r3  c                 óÞ   ^• / mU4S jn[        5       R                  U S-   XS9n[        TS 5      nUR                  5        Vs/ s H  oUS   PM	     snmT H  nS US   l        M     T$ s  snf )Nc                 ó2  >• TR                  U [        U 5      45        [        U R                  R	                  5       S 5      u  pU H(  nU R                  R                  [        US5      5        M*     U R                  R                  [        SS5      5        g)Nc                 ó(   • SU R                  5       ;   $ )Nr“   )r—  )rj  s    rÎ   rÑ  Ú7find_grammar_errors.<locals>.on_error.<locals>.<lambda>ö  s   € ÐbgÐkl×ktÑktÓkvÒbvrÑ   r©   r“   r{   T)r  rx  rƒ  r�  Úas_immutabler{  r   )r¤  Ú
token_pathr_   Ú
token_typeÚerrorss       €rÎ   Úon_errorÚ%find_grammar_errors.<locals>.on_errorò  s{   ø€ Ø�‰�qœ+ a›.Ð)Ô*ô 3°1×3GÑ3G×3TÑ3TÓ3VÑXvÓw‰ˆ
Û$ˆJØ× Ñ ×+Ñ+¬E°*¸bÓ,AÖBñ %à	×Ñ×'Ñ'¬¨e°TÓ(:Ô;ØrÑ   r{   )rŒ  c                 ó    • U S   R                   $ r]  )rp  )r¤  s    rÎ   rÑ  Ú%find_grammar_errors.<locals>.<lambda>þ  s   € °°!±·	²	rÑ   r   )rW  rk  r)   r  r�  )r3  rž   rŒ  Ú_treeÚerrors_by_lineÚelr¤  r‹  s          @rÎ   Úfind_grammar_errorsr“  ð  sx   ø€ Ø€Fõô ‹M×Ñ  t¡¨UÐÐF€Eä˜fÑ&9Ó:€NØ,×3Ñ3Ô5Ó6Ò5˜�ŒeÑ5Ñ6€FãˆØ"&ˆˆ!‰Öñ à€Mùò	 7s   ÁA*c                 ó   ^ ^^• UUU 4S jnU$ )Nc                 óv   >• U T;   a  TU    n O U S   S:X  a  ST< SU SS  < 3n O	T< SU < 3n Tb  T" U 5      n U $ )Nr   r_   Ú__r   rï   )r•  rH  Úbase_mangler÷   s    €€€rÎ   ÚmangleÚ_get_mangle.<locals>.mangle  sL   ø€ Ø�‹<Ø˜‘
‰Aà�‰t�sŒ{Û!'¨¨1¨2ªÐ/‘ã &ªÐ*�ØÑ"Ù˜A“ˆAØˆrÑ   rï   )r÷   rH  r—  r˜  s   ``` rÎ   Ú_get_manglerš    s   ú€ ÷
ð €MrÑ   c                 óú   • Uc  U $ [        U 5      n U R                  5        HV  n[        UR                  5       H:  u  p4[	        U[
        5      (       d  M  UR                  U5      UR                  U'   M<     MX     U $ rË   )r   r8  r>  r?  rÕ   r'   Úrenamed)r=  r˜  r  rø   rx  s        rÎ   Ú_mangle_definition_treer�    sg   € Ø�~Øˆ
Ü
�3‹-€CØ×ÑÖ ˆÜ˜aŸj™jÖ)‰DˆAÜ˜!œV×$Ó$Ø !§	¡	¨&Ó 1�—
‘
˜1“ó *ñ !ð
 €JrÑ   c           
      ó–  • U R                   (       aA  U R                   u  nSU;   nU(       a!  UR                  S5      (       a  [        S5      eSU;   nOSnSnUR                   (       a  UR                   u  n[        U5      n	OS n	Ub%  UR                    V
s/ s H  oªR                  PM     nn
XU[        XvU	U(       a  US94$ S S94$ s  sn
f )NrO   r_   z4Inlined rules (_rule) cannot use the ?rule modifier.rQ   F)rª   Útemplate_source)r?  rÖ   r+   rÝ   r´   r#   )Úmodifiers_treer¿   rŽ  Úpriority_treer­   ÚmrT  rÉ   rj  rª   r  s              rÎ   Ú_make_rule_tupler£    sÒ   € Ø××Ø×$Ñ$‰ˆØ˜‘(ˆÞ�t—‘ s×+Ñ+ÜÐUÓVÐVØ ™(‰àˆØˆà××Ø×#Ñ#‰ˆÜ�q“6‰àˆàÑØ#)§?¢?Ó3¢?˜a—'”'¡?ˆÐ3à˜¤[°ÐT\ÞJPÀ$ñ&]ð ]ð ]ØVZñ&]ð ]ð ]ùò 4s   ÂCc                   ó   • \ rS rSrSS jrSrg)Ú
Definitioni7  Nc                 óH   • Xl         X l        [        U5      U l        X@l        g rË   )r  r  rþ  rŽ  r�  )rÍ   r  r  rŽ  r�  s        rÎ   rÏ   ÚDefinition.__init__8  s   € ØŒØŒ	Ü˜F“mˆŒØ�rÑ   )r  r�  rŽ  r  ©rï   N)ré   rê   rë   rì   rÏ   rî   rï   rÑ   rÎ   r¥  r¥  7  s   † ÷rÑ   r¥  c                   óŒ  • \ rS rSr% \\S'   \\\\	4      \S'   \
\\4   \S'   \
\\4   \S'   \\   \S'   S!S\S\\\\\	4         S\\
\\4      S	S4S
 jjrS rS rS"SS.S jjrS"S jrS rS rS rS#S\S\S\\	\/\4      S	S4S jjrS rS$S\\S4   S\\   S\
\\4   S\\	\/\4      S	S4
S jjrS%S jrS	\4S jrS rg)&ÚGrammarBuilderi>  Úglobal_keep_all_tokensÚimport_pathsÚ
used_filesÚ_definitionsÚ_ignore_namesFNrÓ   c                 ól   • Xl         U=(       d    / U l        U=(       d    0 U l        0 U l        / U l        g rË   )r«  r¬  r­  r®  r¯  )rÍ   r«  r¬  r­  s       rÎ   rÏ   ÚGrammarBuilder.__init__G  s1   € Ø&<Ô#Ø(×.¨BˆÔØ$×*¨ˆŒà35ˆÔØ(*ˆÕrÑ   c                 óÜ   • 0 n[        USS9 HB  u  pVUS:X  a  SO
[        U5      nXdSU-   '   SU   =USU-   '   nUR                  5       USU-   '   MD     [        UR                  " S0 UD65      e)	Nr   ©rž   r©   r¿   )r¡   rµ   r®  ÚTyperï   )r>  r5  Útitler+   Úformat)	rÍ   r  Úmsgrt  rÛ   rø   r¿   ÚpostfixÚlowercase_types	            rÎ   Ú_grammar_errorÚGrammarBuilder._grammar_errorO  s‚   € ØˆÜ  ¨aÔ0‰GˆAØ ›F‘b¬¨A«ˆGØ%)�˜'Ñ!Ñ"Ø6JÈ7Ñ6SÐSˆD�˜'Ñ!Ñ" ^Ø%3×%9Ñ%9Ó%;ˆD�˜'Ñ!Ó"ñ	 1ô
 ˜3Ÿ:š:Ñ-¨Ñ-Ó.Ð.rÑ   c                 ó  • U(       a7  Uc  SnU$ [        U[        5      (       d  [        S[        U5      < 35      e U$ Uc  [	        5       nO [        U[        5      (       d  [        S5      eU R
                  (       a  SUl        U$ )Nr   z@Terminal require a single int as 'options' (e.g. priority), got z1Rules require a RuleOptions instance as 'options'T)rÕ   rÝ   r+   r®  r#   r«  rÉ   )rÍ   r  r�  s      rÎ   Ú_check_optionsÚGrammarBuilder._check_optionsX  sƒ   € ÞØ‰Ø�ð ˆô   ¬×-Ñ-Ý"ÔkoÐpwÕkxÐ#zÓ{Ð{ð .ð ˆð ‰Ü%›-‘Ü ¬×5Ñ5Ü"Ð#VÓWÐWØ×*×*Ø*.�Ô'ØˆrÑ   )r¦   c          	      ó.  • XR                   ;   a  U(       d  U R                  USU5        OU(       a  U R                  USU5        UR                  S5      (       a  U R                  USU5        [        X#X@R	                  X%5      5      U R                   U'   g )Nz&{Type} '{name}' defined more than oncez+Cannot override a nonexisting {type} {name}r–  zDNames starting with double-underscore are reserved (Error at {name}))r®  rº  rÖ   r¥  r½  )rÍ   r¿   r  r=  rŽ  r�  r¦   s          rÎ   Ú_defineÚGrammarBuilder._defineh  sƒ   € Ø×$Ñ$Ó$ÞØ×#Ñ# GÐ-UÐW[Ô\øÞØ×Ñ Ð)VÐX\Ô]à�?‰?˜4× Ñ Ø×Ñ Ð)oÐquÔvä",¨W¸6×CVÑCVÐW^ÓChÓ"iˆ×Ñ˜$ÒrÑ   c                 óà  • XR                   ;  a  U R                  USU5        U R                   U   nX&R                  :w  a  U R                  USU5        [        U5      UR                  :w  a  U R                  USU5        UR
                  c  U R                  USU5        UR
                  n[        U[        5      (       a  UR                  S:X  d   eUR                  R                  SU5        g )Nz6Can't extend {type} {name} as it wasn't defined beforezHCannot extend {type} {name} - one is a terminal, while the other is not.z6Cannot extend {type} with different parameters: {name}z,Can't extend {type} {name} - it is abstract.r­   r   )r®  rº  r  rþ  rŽ  r  rÕ   r0   r:  r?  Úinsert)rÍ   r¿   r  r=  rŽ  r�  ÚdÚbases           rÎ   Ú_extendÚGrammarBuilder._extendt  sÎ   € Ø×(Ñ(Ó(Ø×Ñ Ð)aÐcgÔhà×Ñ˜dÑ#ˆà—i‘iÓØ×Ñ Ð)sÐuyÔzÜ�‹=˜AŸH™HÓ$Ø×Ñ Ð)aÐcgÔhà�6‰6‰>Ø×Ñ Ð)WÐY]Ô^ð �v‰vˆä˜$¤×%Ñ%¨$¯)©)°|Ó*CÐCÐCØ�‰×Ñ˜Q Õ$rÑ   c                 óÄ  • [        U[        5      (       a  U R                  R                  U5        g [        U[        5      (       d   eUnUR
                  S:X  a·  [        UR                  5      S:X  až  UR                  u  nUR
                  S:X  a€  [        UR                  5      S:X  ag  UR                  u  nUR
                  S:X  aI  UR                  u  n[        U[        5      (       a&  U R                  R                  UR                  5        g S[        U R                  5      -  nU R                  R                  U5        [        SU[        S9U R                  U'   g )Nr­   r   r°   r´   z__IGNORE_%dT)r�  )rÕ   r5  r¯  r  r0   r:  r-  r?  r%   r¿   r¥  r(   r®  )rÍ   Úexp_or_namer  Út2r>  r¿   s         rÎ   Ú_ignoreÚGrammarBuilder._ignoreˆ  s
  € Ü�k¤3×'Ñ'Ø×Ñ×%Ñ% kÕ2ä˜k¬4×0Ñ0Ð0Ð0ØˆAØ�v‰v˜Ó%¬#¨a¯j©j«/¸QÓ*>Ø—j‘j‘�Ø—7‘7˜KÓ'¬C°·±Ó,<ÀÓ,AØŸK™K‘F�DØ—y‘y GÓ+Ø $§¡™˜Ü% d¬H×5Ñ5à ×.Ñ.×5Ñ5°d·i±iÔ@Ø"à ¤# d×&8Ñ&8Ó"9Ñ9ˆDØ×Ñ×%Ñ% dÔ+Ü&0°°qÔBXÑ&YˆD×Ñ˜dÒ#rÑ   c                 ó&  • [        UR                  5      S:”  a  UR                  u  p4OUR                  u  nS n[        U[        5      (       a6  [	        UR                  5      nUR                  n[        [        Xf5      5      nOk[	        UR                  S S 5      nU(       d  UR                  u  n[        SU-  5      eUR                  S   nUR                  U=(       d    UR                  0nUR                  S:X  a  S n	OûUS:X  a<   [        R                  R                  [        R                  S   R                  5      n
OUn
U
(       ay  [        U
["        5      (       aA  [#        U
R$                  [        R                  R'                  U
R                  5      S   5      n	OZ[        R                  R'                  U
5      S   n	O7[        R                  R                  [        R                  R(                  5      n	XYU4$ ! [          a    S n
 NÉf = f)Nr   r  z&Nothing was imported from grammar `%s`r¼   ú<string>Ú__main__r   )r-  r?  rÕ   r0   rþ  rŠ  r‹  r+   r´   r:  r,  r+  ÚabspathÚsysÚmodulesÚ__file__rY  r  r  r]  Úcurdir)rÍ   ÚstmtÚgrammar_nameÚ	path_nodeÚarg1Údotted_pathrt  rH  r¿   r'  Ú	base_files              rÎ   Ú_unpack_importÚGrammarBuilder._unpack_import�  s™  € Üˆt�}‰}Ó Ó!Ø"Ÿm™m‰OˆI�tàŸ™‰JˆIØˆDä�dœD×!Ñ!Ü 	× 2Ñ 2Ó3ˆKØ—M‘MˆEÜœ3˜uÓ,Ó-‰Gä 	× 2Ñ 2°3°BÐ 7Ó8ˆKÞØ!×*Ñ*‘�Ü"Ð#KÈdÑ#RÓSÐSØ×%Ñ% bÑ)ˆDØ—z‘z D§L¨D×#7Ñ#7Ð8ˆGà�>‰>˜\Ó)Ø‰Ià˜zÓ)ð%Ü "§¡§¡´·±¸JÑ0G×0PÑ0PÓ Q‘Ið )�	ÞÜ˜i¬×9Ñ9Ü /°	×0BÑ0BÄBÇGÁGÇMÁMÐR[×R`ÑR`ÓDaÐbcÑDdÓ e‘Iä "§¡§¡¨iÓ 8¸Ñ ;‘IäŸG™GŸO™O¬B¯G©G¯N©NÓ;�	à wÐ.Ð.øô &ó %Ø $’Ið%ús   Ä	:H ÈHÈHc                 ó|  ^• UR                   S:X  a  [        UR                  6 u  p4pVSnOcUR                  S   R                  nSn[	        UR                  5      S:X  a  [        UR                  S   5      O[        nUR                  S   nSnTb  [        U4S	 jU 5       5      nT" U5      n[        UT5      nX7XTU4$ )
Nr¡   Fr   rï   rÙ  r   r  Tc              3   ó4   >#   • U  H  nT" U5      v •  M     g 7frË   rï   )r…  rj  r˜  s     €rÎ   r†  Ú4GrammarBuilder._unpack_definition.<locals>.<genexpr>Ñ  s   øé € Ð5ªf¨™6 !Ÿ9˜9ªfùs   ƒ)	r:  r£  r?  r´   r-  rÝ   r(   rþ  r�  )rÍ   r  r˜  r¿   rŽ  r=  Úoptsr  s     `     rÎ   Ú_unpack_definitionÚ!GrammarBuilder._unpack_definitionÄ  s±   ø€ à�9‰9˜ÓÜ&6¸¿¹Ð&FÑ#ˆD˜#Ø‰Gà—=‘= Ñ#×)Ñ)ˆDØˆFÜ,/°·±Ó,>À!Ó,C”3�t—}‘} QÑ'Ô(ÔI_ˆDØ—-‘- Ñ#ˆCØˆGàÑÜÔ5©fÓ5Ó5ˆFÙ˜$“<ˆDä% c¨6Ó2ˆØ˜c¨4Ð/Ð/rÑ   Úgrammar_textrÖ  r˜  c                 ód  • [        X5      n0 nUR                   H_  nUR                  S:X  d  M  U R                  Xb5      u  pxn	 XW   u  p«XŠ:X  d   SSR	                  U5      -  5       eUR                  U	5        Ma     UR                  5        H  u  nu  p‰U R                  XxX“5        M     UR                   GH€  nUR                  S;   a   U R                  " U R                  Xc5      6   M4  UR                  S:X  a1  UR                  u  nU R                  " U R                  XÃ5      SS06  Mu  UR                  S:X  a.  UR                  u  nU R                  " U R                  XÃ5      6   M³  UR                  S:X  a   Uc  U R                  " UR                  6   Má  Mã  UR                  S	:X  av  UR                   Hc  n[        U[        5      (       d   U5       e[        U[        5      nUc  UR                   nOU" UR                   5      nU R                  XþS 5        Me     GMi  UR                  S:X  a  GM|   U5       e   U R"                  R                  5        VVs0 s H&  u  nnUR$                  (       d  M  UUR&                  _M(     nnn[)        U5        g ! [         a
    X‰4XW'    GMŽ  f = fs  snnf )
Nr¤   zInconsistent base_path for %s.r;   )r¢   r¡   r¦   Tr§   r£   r¥   )rs  r?  r:  rÛ  r‰  Úupdater  rÂ  Ú	do_importrÀ  rá  rÆ  rË  rÕ   r'   r%   r¿   r®  r  r  rA  )rÍ   rã  rÖ  r˜  r  ÚimportsrÕ  rÙ  r'  rH  Úimport_base_pathÚimport_aliasesr÷  rÁ   r  r¿   rÄ  rë  s                     rÎ   Úload_grammarÚGrammarBuilder.load_grammarØ  s\  € Ü˜lÓ9ˆàOQˆà—M”MˆDØ�y‰y˜HÕ$Ø26×2EÑ2EÀdÓ2YÑ/�¨ð>Ø7>Ñ7KÑ4Ð$Ø$Ó8ÐrÐ:ZÐ]`×]eÑ]eÐfqÓ]rÑ:rÓrÐ8Ø"×)Ñ)¨'Ö2ñ "ð 29·±¶Ñ-ˆKÑ-˜)Ø�N‰N˜;°7ÖCñ 2Að —M•MˆDØ�y‰yÐ,Ó,Ø—’˜d×5Ñ5°dÓCÓDØ—‘˜jÓ(Ø—]‘]‘�Ø—’˜d×5Ñ5°aÓ@ÐPÈ4ÔPØ—‘˜hÓ&Ø—]‘]‘�Ø—’˜d×5Ñ5°aÓ@ÓAØ—‘˜hÓ&à‘>Ø—L’L $§-¡-Ó0ñ "à—‘˜iÓ'Ø"Ÿmœm�FÜ% f¬f×5Ñ5Ð=°vÓ=Ð5Ü(¨´Ó:�GØ‘~Ø%Ÿ{™{™á% f§k¡kÓ2˜Ø—L‘L °Ö5ô ,ð —‘˜hÓ&Úà"˜dÓ"�uñ3 "ð:  ×,Ñ,×2Ñ2Ô4ô
Ú4‘��aØ�y�yó #�d˜AŸF™F’lÙ4ð 	ñ 
ô 	  	Õ*øôM  ó >Ø+4Ð+=�GÕ(ð>üóD
s   Á5JÉJ,É5J,ÊJ)Ê(J)c                 ó¼   ^ • U 4S jn[        [        X5      5      nT R                  R                  5        VVs0 s H  u  pEXC;   d  M  XE_M     snnT l        g s  snnf )Nc                 óÄ   >•  TR                   U    nUR                  (       a  / $ [        UR                  5      [        UR                  5      -
  $ ! [         a    / s $ f = frË   )r®  r  r  rR  r  rK  rŽ  )rÁ   rÄ  rÍ   s     €rÎ   Úrule_dependenciesÚ8GrammarBuilder._remove_unused.<locals>.rule_dependencies  sX   ø€ ðØ×%Ñ% fÑ-�ð �y�yØ�	Ü% a§f¡fÓ-´°A·H±H³Ñ=Ð=øô	 ó Ø’	ðús   ƒA ÁAÁA)rK  r   r®  rÂ  )rÍ   Úusedrî  Ú_usedÚkr¯  s   `     rÎ   Ú_remove_unusedÚGrammarBuilder._remove_unused  sN   ø€ õ	>ô ”C˜Ó0Ó1ˆØ.2×.?Ñ.?×.EÑ.EÔ.GÔVÒ.G¡d aÈ1É:›T˜QšTÑ.GÒVˆÕùÓVs   ¹AÁArÙ  .r'  rH  r—  c           	      óü  • U(       d   e[        SR                  U5      X45      n[        R                  R                  " U6 [        -   nU R
                  Ub  U/O/ -   [        /-   nU GHW  n [        U5      (       a  U" X&5      u  pšOB[        R                  R                  X†5      n	[        U	SS9 nUR                  5       n
S S S 5        [        W
5      nU R                  R                  Xœ5      U:w  a  [        S5      eXÀR                  U	'   [        U R                  U R
                  U R                  5      nUR!                  X©U5        UR#                  [%        XS5      5        UR&                   H&  nXàR&                  ;   d  M  [)        SU< SU< S35      e   U R&                  R*                  " S
0 UR&                  D6    g    [        USS9   SU< S	35       e! , (       d  f       GN= f! [,         a     GM’  f = f)Nr–  Úutf8©Úencodingz)Grammar file was changed during importingzCannot import 'z' from 'z': Symbol already defined.zCouldn't import grammar zP, but a corresponding file was found at a place where lark doesn't search for itrï   )rš  r‰  r,  r+  ÚEXTr¬  Ústdlib_loaderÚcallableÚopenÚreadÚsha256_digestr­  ÚgetÚRuntimeErrorrª  r«  rê  ró  r.  r®  r+   rå  r*  )rÍ   rÙ  r'  rH  r—  r˜  r(  r0  ÚsourceÚjoined_pathr3  r©  ÚhÚgbr¿   s                  rÎ   ræ  ÚGrammarBuilder.do_import  sº  € ÞÐˆ{Ü˜TŸY™Y {Ó3°WÓJˆÜ—w‘w—|’| [Ð1´CÑ7ˆØ×"Ñ"°YÑ5J y¡kÐPRÑSÔWdÐVeÑeˆÜˆFðÜ˜F×#Ñ#Ù(.¨yÓ(GÑ%�K ä"$§'¡'§,¡,¨vÓ"D�KÜ˜k°FÒ;¸qØ Ÿv™v›x˜÷ <ô
 " $Ó'�Ø—?‘?×&Ñ& {Ó6¸!Ó;Ü&Ð'RÓSÐSØ/0—‘ Ñ,ä# D×$?Ñ$?À×ARÑARÐTX×TcÑTcÓd�Ø—‘ °6Ô:Ø×!Ñ!¤# fÓ"6Ô7ØŸOœO�DØ×0Ñ0Õ0Ý*ÓfjÓlxÐ+yÓzÐzñ ,ð ×!Ñ!×(Ò(Ñ;¨2¯?©?Ò;Ùñ1 ô6 �¨Ò/ñ Xó  KVð  Xó  X�5÷- <Ö;ûäó Ûðús+   Á-AG,Â1GÃG,Ç
G)	Ç$G,Ç,
G;Ç:G;c           
      ó‚  • U R                   R                  5        GH¶  u  pUR                  nUR                  n[	        U5       HD  u  pVX`R                   ;   a  [        SU< SU< S35      eXcS U ;   d  M2  [        SU< SU< S35      e   Uc  Mv  UR                  S5       Hä  nUR                  S   R                  nUR                  SS  n	Xƒ;  d  M2  X€R                   ;  a   U R                  UR                  SU-  U5        [        U	5      [        U R                   U   R                  5      :w  d  M’  [        U R                   U   R                  5      [        U	5      pºU R                  UR                  S	U
< S
U< S3X�5        Mæ     [        U5       H8  nX€R                   ;  d  M  Xƒ;  d  M  U R                  UR                  SX�5        M:     GM¹     [        U R                   5      R                  U R                  5      (       d7  [        S[        U R                  5      [        U R                   5      -
  -  5      eg )Nz'Template Parameter conflicts with rule z (in template rq   zDuplicate Template Parameter r¹   r   r   z5Template '%s' used but not defined (in {type} {name})z=Wrong number of template arguments used for {name} (expected z, got z) (in {type2} {name2})z9{Type} '{name}' used but not defined (in {type2} {name2})z8Terminals %s were marked to ignore but were not defined!)r®  rÂ  rŽ  r  r>  r+   rý  r?  r¿   rº  r  r-  rR  rK  Ú
issupersetr¯  )rÍ   r¿   rÄ  rŽ  r=  rø   rj  ÚtemprÒ   rÛ   rj  Úactuals               rÎ   ÚvalidateÚGrammarBuilder.validate?  s  € Ø×(Ñ(×.Ñ.×0‰GˆDØ—X‘XˆFØ—&‘&ˆCä! &Ö)‘�Ø×)Ñ)Ó)Ý&ÓghÓjnÐ'oÓpÐpØ˜r ˜
•?Ý&Ó]^Ó`dÐ'eÓfÐfñ	 *ð ‰{ÙàŸ™Ð&6Ö7�Ø—m‘m AÑ&×+Ñ+�Ø—}‘} Q RÐ(�ØÕ$Ø×"3Ñ"3Ó3Ø×+Ñ+¨A¯I©IÐ7nÐqtÑ7tÐvzÔ{Ü˜4“y¤C¨×(9Ñ(9¸#Ñ(>×(EÑ(EÓ$FÕFÜ+.¨t×/@Ñ/@ÀÑ/E×/LÑ/LÓ+MÌsÐSWËy &Ø×+Ñ+¨A¯IªIÛ\dÓflð8nØorözñ 8ô *¨#Ö.�Ø×/Ñ/Õ/°CÕ4EØ×'Ñ'¨¯	©	Ð3nÐpsÖzô /ñ1 1ô8 �4×$Ñ$Ó%×0Ñ0°×1CÑ1C×DÑDÜÐYÔ]`Ðae×asÑasÓ]tÔwzÐ{÷  |Mñ  |Mó  xNñ  ^Nñ   Oó  Pð  Pð ErÑ   c                 óx  • U R                  5         / n/ nU R                  R                  5        Hs  u  p4UR                  UR                  UR
                  pvnUR                  (       a'  [        U5      S:X  d   eUR                  X6U445        M`  UR                  X5Xg45        Mu     [        XU R                  5      $ r]  )r
  r®  rÂ  rŽ  r  r�  r  r-  r  rê  r¯  )rÍ   r  rë  r¿   rÄ  rŽ  r=  r�  s           rÎ   ÚbuildÚGrammarBuilder.build_  s�   € Ø�‰ŒØˆ	Øˆ	Ø×(Ñ(×.Ñ.Ö0‰GˆDØ%&§X¡X¨q¯v©v°q·y±y˜'ˆVØ�y�yÜ˜6“{ aÓ'Ð'Ð'Ø× Ñ  $¨g¨Ð!7Ö8à× Ñ  $°Ð!=Ö>ñ 1ô �y¨T×-?Ñ-?Ó@Ð@rÑ   )r®  r¯  r«  r¬  r­  )FNNr¨  )z<?>NrË   )rÓ   N)ré   rê   rë   rì   rí   r  r   r
   r5  r   r   r¥  r   rÏ   rº  r½  rÀ  rÆ  rË  rÛ  rá  rê  ró  r	   ræ  r
  rê  r  rî   rï   rÑ   rÎ   rª  rª  >  s°  ‡ à Ó Ø�u˜S (˜]Ñ+Ñ,Ó,Ø�S˜#�X‘Óà�s˜J�Ñ'Ó'Ø˜‘9Óñ+¨tð +ÈÐRVÐW\Ð]`ÐbjÐ]jÑWkÑRlÑImð +ð  AIð  JNð  ORð  TWð  OWñ  JXñ  AYð +ð  cgõ +ò/òð 
jÈuö 
jô%ò(Zò*%/òN0ñ(2+¨ð 2+¸Cð 2+ÈxÐX`ÐbeÐafÐhkÐakÑXlÑOmð 2+Ðw{õ 2+òjWñ!X U¨3°¨8¡_ð !XÀÈ#Áð !XÐY]Ð^aÐcfÐ^fÑYgð !XÐv~ð  @Hð  JMð  INð  PSð  ISñ  @Tñ  wUð !Xð  _cõ !XôHPð@A�w÷ ArÑ   rª  c                 ó6  • U R                  5        Hã  u  pS n[        U[        5      (       aH  [        R                  R                  U5      (       a$  [        USS9 nUR                  5       nS S S 5        OO[        U[        5      (       a:  [        [        5         [        R                  " U6 R                  S5      nS S S 5        Uc  M¸  [        U5      nX%:w  d  MÊ  [        R                   " SU-  5          g   g! , (       d  f       NC= f! , (       d  f       NT= f)Nrö  r÷  zutf-8z"File %r changed, rebuilding ParserFT)rÂ  rÕ   r5  r,  r+  Úexistsrü  rý  r  r   r*  r-  r.  r/  rþ  r   Úinfo)Úfile_hashesr+  Úoldr3  r©  Úcurrents         rÎ   Úverify_used_filesr  n  sÒ   € Ø ×&Ñ&Ö(‰	ˆØˆÜ�dœC× Ñ ¤R§W¡W§^¡^°D×%9Ñ%9Ü�d VÒ,°Ø—v‘v“x�÷ -Ð,ä˜œo×.Ñ.Üœ'Õ"Ü×'Ò'¨Ð.×5Ñ5°gÓ>�÷ #à‰<Ùä Ó%ˆØ�>Ü�KŠKÐ<¸tÑCÔDÙñ )ð ÷ -Õ,ú÷ #Õ"ús   ÁC9Â#D
Ã9
D	Ä

D	c                 ó„   • [        SU5      nUR                  U S5        [        UR                  R	                  5       5      $ )zXReturns a list of paths to the lark grammars imported by the given grammar (recursively)FrÎ  )rª  rê  rü  r­  Úkeys)Úgrammarr¬  Úbuilders      rÎ   Úlist_grammar_importsr  €  s8   € ä˜U LÓ1€GØ×Ñ˜ *Ô-Ü�×"Ñ"×'Ñ'Ó)Ó*Ð*rÑ   c                 ór   • [        X25      nUR                  X5        UR                  5       UR                  4$ rË   )rª  rê  r  r­  )r  r  r¬  r«  r  s        rÎ   rê  rê  †  s2   € ÜÐ3ÓB€GØ×Ñ˜Ô)Ø�=‰=‹?˜G×.Ñ.Ð.Ð.rÑ   r•  c                 óô   • [         R                  S:¼  a2  [        R                  " U R	                  S5      SS9R                  5       $ [        R                  " U R	                  S5      5      R                  5       $ )z†Get the sha256 digest of a string

Supports the `usedforsecurity` argument for Python 3.9+ to allow running on
a FIPS-enabled system.
)rÙ  é	   rö  F)Úusedforsecurity)rÑ  Úversion_infoÚhashlibÚsha256ÚencodeÚ	hexdigestrE  s    rÎ   rþ  rþ  Œ  sV   € ô ×Ñ˜6Ó!Ü�~Š~˜aŸh™h vÓ.ÀÑF×PÑPÓRÐRä�~Š~˜aŸh™h vÓ.Ó/×9Ñ9Ó;Ð;rÑ   r³  rË   )yrn  r   Úos.pathr,  rÑ  Úcollectionsr   r   r   r-  Úastr   Ú
contextlibr   Útypingr   r	   r
   r   r   r   r   r   Úutilsr   r   r   r   r   r   r   r   r   Úlexerr   r   r   r   r   Úparse_tree_builderr   Úparser_frontendsr    Úcommonr!   r"   r  r#   r$   r%   r&   r'   r(   r)   r*   Ú
exceptionsr+   r,   r-   r.   r/   r  r0   r1   r  Úvisitorsr2   r3   r4   r5   r6   ro  ÚIMPORT_PATHSrù  r¨  rØ   rg  rZ  r[  r  r  rÇ   rñ   r7  rO  r[  rq  r}  r˜  r¥  r±  r³  r¼  r¾  rã  rè  rê  r  r  rú  rA  rF  rH  rR  rW  ri  rm  rs  rx  rƒ  r5  r“  rš  r�  r£  r¥  rª  r  r  rê  rþ  rï   rÑ   rÎ   Ú<module>r1     sP  ðñó Û Û 
Ý "ß Û Ý Ý ß T× TÓ T÷ A÷  Aõ  Aß EÕ Eå 0Ý -ß )ß ]× ]ß 'ß hÕ hç )ß aÕ aÙ˜DÑ!€àˆ|€à€à€	á	�Ó	€ð%Øˆ%ð%àˆ'ð%ð ˆ'ð%ð ˆ+ð	%ð
 ˆ&ð%ð ˆ'ð%ð ˆ&ð%ð ˆ'ð%ð 	ˆ;ð%ð ˆ&ð%ð ˆ'ð%ð ˆ&ð%ð ˆ$ð%ð ˆ&ð%ð ˆ(ð%ð  ˆ)ð!%ð" ˆ,ñ#%ð$ ˆ+ð%%ð& ˆ,ð'%ð( ˆ*ð)%ð* ˆ*ð+%ð, ˆ'ð-%ð. ˆ*ð/%ð0 	ˆ7ð1%ð2 ˆ+ð3%ð4 ˆ'ð5%ð6 ˆ&ð7%ð8 ˆ&ð9%ð: ˆ(ð;%ð< ˆ(ð=%ð> ˆ&ð?%ð@ ˆ&ðA%ðB 	ˆ9ðC%ðD ˆVñE%ðF Ø
òI%€ðPØˆUðàˆUðð ˆUðð ˆUð	ð
 ˆuðð ˆuðð 	Ð
ðð ˆcðð ˆcðð 
ˆ5ðð ˆKðð ˆwðð ˆSðð Ð1ðð Ððð  Ð#ð!ð" Ð(ð#ð$ /°Ñ:ØØØ
Ø(ØØØØØØØØò=€	ðBK	ØˆgˆYðK	àˆw˜Ð&ðK	ð ÒZðK	ð
 ÐQÐRðK	ð Ð'ØððK	ð �ØððK	ð Ð:ØððK	ð ˜Ø7ð9ðK	ð �=�/ðK	ð ò 0ðK	ð& Ð.°Ð<ð'K	ð( �,�ð)K	ð, �2Ð(Ð)ð-K	ð0 ò ð1K	ð< ò ð=K	ðD ò  ðEK	ðP ��ñQK	ðR �F�8ðSK	ðV ˆf�jÐ!ðWK	ðX �
˜MÐ*ðYK	ð\ Ð&Ð'ð]K	ð^ Ð%Ð&ð_K	ðb ÐCÐDðcK	ðd �wØ4ð6ðeK	ðj Ð-Ø9ð;ðkK	ðn Ð!Ø!ð#ðoK	ðr ˆ~ØððsK	ðv Ð'Ð(ðwK	ðx Ð,Ð-ðyK	ðz ò 4ð{K	ðB �\ <Ð0ðCK	ðD �>Ð"ðEK	ðF Ð&Ð'ðGK	ðH �VÐ5Ð6ñIK	ðL �ØÐ3Ð4àÐ 6Ð7Ø˜(Ð#òUK	€ð` Ð ð
 Ð ô,�;ô ,ð: ôX/Ð%ó X/ó ðX/ôv*6˜7ô *6ôZ
%�[ô 
%ô4:Ð.ô 4:ôn;Ð)ô ;ô$(Ð(ô (ò.,òò4SðB ô
2Ð)ó 
2ó ð
2ð!¨yô !ô0Ð4ô 0ôfÐ)ô ò8ô
H6ˆiô H6ñV Ð.°Ó@€÷*Eñ *EñZ " &¨,Ó7€ò@òDXð ô'Ð(ó 'ó ð'òEò!ð* 
# X JÐ/Ø	 ( Ð,Ø	(Ò*JÐKÙ	@ÓBkÐlÙ	.±°	Ð:Ù	'©-¨Ð9Ù	ÓIÐJÙ	ÓYÐZÙ	FÉÈÐVÙ	-±¨yÐ9Ù	0±7°)Ð<Ù	!¡OÐ#4Ð5Ù	"Ñ%8Ð$9Ð:ð€ó 'ö,ó óó ˜cð ¨#ð ¸$¸uÀ_ÐVYÐEYÑ?ZÑ:[ö ö,ó	ó]÷0ó ÷mAó mAó`	ð$ 02õ +ó/ñ	<�Sð 	<˜Sö 	<rÑ   