
    <hb              	      &   % S SK Jr  S SKJrJr  S SKrS SKrS SKrS SKr	SSK
Jr  SSKJr  \	R                  (       a  S SKJr  SSKJr  \	R&                  " S	S
S9r\R*                  " S\R,                  \R.                  -  5      rSoS jr " S S\5      r " S S\5      r\	R&                  " S\\\5      r\" SS9 " S S\	R@                  \   5      5       r!\R*                  " S5      r" " S S5      r#\ " S S
5      5       r$\" SS9 " S S\$5      5       r%\" SS9 " S S \	R@                  \   \$5      5       r& " S! S"\&\   5      r' " S# S$\&\   5      r(\" SS9 " S% S&\&\   5      5       r)\" SS9 " S' S(\&\   5      5       r* " S) S*\&5      r+ " S+ S,\&5      r, " S- S.\&\   5      r-\" SS9 " S/ S0\$5      5       r.\" SS9 " S1 S2\$5      5       r/\" SS9 " S3 S4\$5      5       r0 " S5 S6\$5      r1\" SS9 " S7 S8\$5      5       r2 " S9 S:\25      r3 " S; S<\25      r4\" SS9 " S= S>\25      5       r5\" SS9 " S? S@\25      5       r6\" SS9 " SA SB\$5      5       r7 " SC SD\75      r8 " SE SF\75      r9\" SS9 " SG SH\$5      5       r:\" SS9 " SI SJ\$5      5       r;\" SS9 " SK SL\$5      5       r<\" SS9 " SM SN\$5      5       r=\" SS9 " SO SP\$5      5       r> " SQ SR\>5      r?\" SS9 " SS ST\$5      5       r@\" SS9 " SU SV\$5      5       rA\" SS9 " SW SX\$5      5       rB\" SS9 " SY SZ\$5      5       rC\" SS9 " S[ S\\$5      5       rD\" SS9 " S] S^\$5      5       rE\" SS9 " S_ S`\$5      5       rF\	R                  (       a  \Sa   rGSbScSdSeSfSgShSiSj.rHSk\ISl'    " Sm Sn5      rJg)p    )annotations)	dataclassfieldN   )MesonException)mlog)Literal)
AstVisitor	BaseNodeTBaseNode)bounda,  
    ( \\U[A-Fa-f0-9]{8}   # 8-digit hex escapes
    | \\u[A-Fa-f0-9]{4}   # 4-digit hex escapes
    | \\x[A-Fa-f0-9]{2}   # 2-digit hex escapes
    | \\[0-7]{1,3}        # Octal escapes
    | \\N\{[^}]+\}        # Unicode characters by name
    | \\[\\'abfnrtv]      # Single-character escapes
    )c                j    [         R                  " U R                  S5      R                  5       S5      $ )Nr   unicode_escape)codecsdecodegroupencode)matchs    s/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/mparser.pydecode_matchr       s%    ==Q..02BCC    c                  <   ^  \ rS rSr% SrS\S'   SU 4S jjrSrU =r$ )ParseException#   NzT.Optional[CodeBlockNode]astc                f   > [         TU ]  [        R                  " XU5      5        X0l        X@l        g N)super__init__r   	code_linelinenocolno)selftextliner!   r"   	__class__s        r   r   ParseException.__init__'   s%    E:;
r   r"   r!   )
r$   strr%   r)   r!   intr"   r*   returnNone)	__name__
__module____qualname____firstlineno__r   __annotations__r   __static_attributes____classcell__r&   s   @r   r   r   #   s    %)C	") r   r   c                  >    \ rS rSr                SS jrSrg)BlockParseException-   c                   X6:X  aC  [         R                  " U SR                  XSR                  SU-  SXG-
  S-
  -  5      5      5        O+[         R                  " U SXSSU-  -  XgUSSU-  -  4-  5        X0l        X@l        g )Nz{}
{}
{}z{}^{}^ _r   z0%s
%s
%s
For a block that started at %d,%d
%s
%sz%s^)r   r   formatr!   r"   )r#   r$   r%   r!   r"   
start_linestart_linenostart_colnos           r   r   BlockParseException.__init__.   s     ! ##D,*=*=d(//Z]`kZkmpty  uH  KL  uL  nM  KN  +O  P ##D*aeiqvz}  AF  {F  rG  IU  dn  pu  y|  J  yJ  pK  eL  +L  M
r   r(   N)r$   r)   r%   r)   r!   r*   r"   r*   r<   r)   r=   r*   r>   r*   r+   r,   )r-   r.   r/   r0   r   r2    r   r   r6   r6   -   sU      	
    " ! r   r6   TV_TokenTypesF)eqc                  f    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   SS jrSrg)TokenP   r)   tidfilenamer*   
line_startr!   r"   T.Tuple[int, int]bytespanrA   valuec                    [        U[        5      (       a  U R                  U:H  $ [        U[        5      (       a  U R                  UR                  :H  $ [        $ r   )
isinstancer)   rF   rD   NotImplemented)r#   others     r   __eq__Token.__eq__Z   sD    eS!!88u$$u%%88uyy((r   r@   N)rO   objectr+   bool)r-   r.   r/   r0   r1   rP   r2   r@   r   r   rD   rD   P   s,    	HMOKJr   rD   z[_a-zA-Z][_0-9a-zA-Z]*c                  2    \ rS rSrSS jrSS jrS	S jrSrg)
Lexerd   c                   UR                  [        R                  R                  S5      5      (       a  UR	                  SSS9tp#[        SUSSS9eXl        1 SkU l        S	1U l        S
[        R                  ;   U l        U R                  (       a  U R                  R                  SS15        / S[        R                  " S5      4PS[        R                  " S[        R                  5      4PS[        R                  " S5      4PS[         4PS[        R                  " S5      4PS[        R                  " S5      4PS[        R                  " S5      4PS[        R                  " S[        R                  5      4PS[        R                  " S5      4PS[        R                  " S5      4PS [        R                  " S!5      4PS"[        R                  " S#5      4PS$[        R                  " S%5      4PS&[        R                  " S'5      4PS([        R                  " S)5      4PS*[        R                  " S+5      4PS,[        R                  " S-5      4PS.[        R                  " S/5      4PS0[        R                  " S15      4PS2[        R                  " S35      4PS4[        R                  " S55      4PS6[        R                  " S75      4PS8[        R                  " S95      4PS:[        R                  " S;5      4PS<[        R                  " S=5      4PS>[        R                  " S?5      4PS@[        R                  " SA5      4PSB[        R                  " SC5      4PSD[        R                  " SE5      4PSF[        R                  " SG5      4PSH[        R                  " SI5      4PSJ[        R                  " SK5      4PSL[        R                  " SM5      4PSN[        R                  " SO5      4PU l        g )PNzutf-8
r   )maxsplitz3Builder file must be encoded in UTF-8 (with no BOM)r   )r!   r"   >   ifinorandnotelifelsetruebreakendiffalseforeachcontinue
endforeachr+   MESON_RUNNING_IN_PROJECT_TESTStestcaseendtestcase
whitespacez[ \t]+multiline_fstringzf'''(.|\n)*?'''fstringzf'([^'\\]|(\\.))*'idnumberz30[bB][01]+|0[oO][0-7]+|0[xX][0-9a-fA-F]+|0|[1-9]\d*eol_contz\\[ \t]*(#.*)?\neolz\nmultiline_stringz'''(.|\n)*?'''commentz#.*lparenz\(rparenz\)lbracketz\[rbracketz\]lcurlz\{rcurlz\}dblquote"stringz'([^'\\]|(\\.))*'comma,
plusassignz\+=dotz\.plusz\+dash-starz\*percent%fslash/colon:equal==nequal!=assign=le<=lt<ge>=gt>questionmarkz\?)
startswithr   BOM_UTF8r   splitr   codekeywordsfuture_keywordsosenvironin_unit_testupdaterecompileMIDENT_REtoken_specification)r#   r   r%   r:   s       r   r   Lexer.__init__e   s   ??6??11':;;zz$z3HD !VX\efnopp	4 !)z<

JMM  *m!<=$$
2::i01$$
 !"**-?"FG$$
 

#89:	$$

 8$$
 rzz"XYZ$$
 $789$$
 BJJu%&$$
  ,=rtt!DE$$
 

6*+$$
 rzz%()$$
 rzz%()$$
 E*+$$
 E*+$$
 bjj'($$
  bjj'(!$$
" D)*#$$
$ rzz"678%$$
& bjj&''$$
( 2::f-.)$$
* BJJu%&+$$
, RZZ&'-$$
. RZZ%&/$$
0 RZZ&'1$$
2 

4()3$$
4 rzz$'(5$$
6 bjj&'7$$
8 bjj'(9$$
: rzz%();$$
< rzz$'(=$$
> 2::e$%?$$
@ 2::d#$A$$
B 2::e$%C$$
D 2::d#$E$$
F RZZ./G$$
 r   c                R    U R                   XR                   R                  SU5       $ )NrX   )r   find)r#   rH   s     r   getlineLexer.getline   s     yyIINN4$DEEr   c           
   #    #    SnSnSnSnSnSnSnU[        U R                  5      :  Ga  Sn	Sn
U R                   GH<  u  pUR                  U R                  U5      nU(       d  M+  UnUnUR	                  5       U-
  nSn	UnUR                  5       nUnUU4nUR                  5       n
US:X  a  US-  nGOUS:X  a  US-  nGOUS:X  a  US-  nGOUS	:X  a  US-  nGOUS
:X  a  US-  nGOUS:X  a  US-  nGOrUS:X  a  [        SU R                  U5      X85      eUS;   ah  U
R                  S5      S:w  aF  Sn[        R                  " [        R                  " UU R                  U5      U5      [        X8U5      S9  XS:X  a  SOSS n
OUS;   a`  XS:X  a  SOSS n
U
R                  S5      n[        U5      S:  a3  U[        U5      S-
  -  nUR                  5       [        US   5      -
  S-
  nO|US:X  a
  US-  nUnSnOlUS:X  a  US-  nUnUS:  d  US:  d  US:  a  SnOJUS:X  aD  XR                  ;   a  U
nO2XR                   ;   a#  [        R                  " SU
 S3[        X8U5      S9  [#        XXUUU
5      v     O   U	(       d0  [        S U R                  U   < 3U R                  U5      X4U-
  5      eU[        U R                  5      :  a  GM  g g 7f)!Nr   r   F Trt   ru   rv   rw   rx   ry   rz   z3Double quotes are not supported. Use single quotes.>   r|   rm   rX   zNewline character in a string detected, use ''' (three single quotes) for multiline strings instead.
This will become a hard error in a future Meson release.locationrm      >   rr   rl   rl         rp   rk   rq   rn   zIdentifier 'zG' will become a reserved keyword in a future release. Please rename it.zlexer: unrecognized token )lenr   r   r   startendr   r   r   r   r   warningr    r   r   r   r   rD   )r#   rG   rH   r!   loc	par_countbracket_count
curl_countcolmatchedrK   rF   regmocurlinecurline_start
span_startspan_endrJ   msgliness                        r   lex	Lexer.lex   s-    
	
C		N"GE"66
YYtyy#.2$G$.M((*z1C"G!$J&&(C"H *H5HHHJEh!Q	!Q	
*%*
*%*"a
"a

*,-bdhdpdpq{d|  E  K  K 55 ::d+r1$^C !LLT\\*=UWZ)[fnou  }E  gF  G %)+;a2 F II %2E+Ea1R P %D 1u:>"c%j1n4F)+Cb	N)BQ)FJ
*!%(
*!%(
$q=MA,=a".C MM1"'C$(<(<< $|E7  CJ  .K6>vH6U!W}sHV[\\q 7r $'A$))C.AS%TVZVbVbcmVnpv  I  yI  J  J{ C		N""s   A K&I&KK)r   r   r   r   r   N)r   r)   )rH   r*   r+   r)   )rG   r)   r+   zT.Generator[Token, None, None])r-   r.   r/   r0   r   r   r   r2   r@   r   r   rU   rU   d   s    1
fFEJr   rU   c                      \ rS rSr% S\S'   S\S'   \" SS9rS\S'   \" SS9rS\S	'   \" SS9rS\S
'   \" SS9r	S\S'    S     SS jjr
SS jrSS jrSrg)r      r*   r!   r"   Fhashr)   rG   
end_lineno	end_colnoT.Optional[WhitespaceNode]whitespacesNc                    Xl         X l        X0l        Ub  UOUU l        Ub  UOUU l        S U l        SU l        SU l        SU l        g )Nr   r   )	r!   r"   rG   r   r   r   levelast_idcondition_level)r#   r!   r"   rG   r   r   s         r   r   BaseNode.__init__   sM    
 (2(>*F&/&; 
 r   c                    SR                  [        U 5      R                  5      n[        X5      (       a%  [	        X5      n[        U5      (       a	  U" U 5        g g g )Nzvisit_{})r;   typer-   hasattrgetattrcallable)r#   visitorfnamefuncs       r   acceptBaseNode.accept   sK    !!$t*"5"567""7*D~~T
  #r   c                v    U R                   c  [        U5      U l         g U R                   R                  U5        g r   )r   WhitespaceNodeappendr#   tokens     r   append_whitespacesBaseNode.append_whitespaces   s/    #-e4D##E*r   )	r   r"   r   r   r   rG   r   r!   r   )NN)r!   r*   r"   r*   rG   r)   r   T.Optional[int]r   r   r+   r,   )r   z'AstVisitor'r+   r,   r   rD   r+   r,   )r-   r.   r/   r0   r1   r   rG   r   r   r   r   r   r   r2   r@   r   r   r   r      sw    KJu%Hc%'J'&Is&.3.?K+? SW!,!@O![_!+r   T)unsafe_hashc                  B   ^  \ rS rSr% S\S'   SU 4S jjrSS jrSrU =r$ )	r   i  r)   rK   c                   > [         TU ]  UR                  UR                  UR                  5        SU l        U R                  U5        SU l        SU l        g )Nr   F)	r   r   r!   r"   rG   rK   r   block_indentis_continuationr#   r   r&   s     r   r   WhitespaceNode.__init__  sC    u{{ENNC
E!$r   c                B    U =R                   UR                   -  sl         g r   )rK   r   s     r   r   WhitespaceNode.append  s    

ekk!
r   )r   r   rK   r   
Token[str])r   r   r+   r,   )	r-   r.   r/   r0   r1   r   r   r2   r3   r4   s   @r   r   r     s     J%" "r   r   c                  N   ^  \ rS rSr% S\S'   \" SS9rS\S'   S
U 4S jjrS	rU =r	$ )ElementaryNodei  rA   rK   Fr   rI   rJ   c                   > [         TU ]  UR                  UR                  UR                  5        UR
                  U l        UR                  U l        g r   )r   r   r!   r"   rG   rK   rJ   r   s     r   r   ElementaryNode.__init__  s6    u{{ENNC[[
r   )rJ   rK   r   Token[TV_TokenTypes])
r-   r.   r/   r0   r1   r   rJ   r   r2   r3   r4   s   @r   r   r     s%     "'U"3H3' 'r   r   c                      \ rS rSrSrg)BooleanNodei!  r@   Nr-   r.   r/   r0   r2   r@   r   r   r   r   !      r   r   c                      \ rS rSrSrg)IdNodei$  r@   Nr   r@   r   r   r  r  $  r   r   r  c                  6    \ rS rSr% \" SS9rS\S'   S	S jrSrg)

NumberNodei'  Fr   r)   	raw_valuec                    [         R                  XR                  UR                  UR                  5        UR
                  U l        [        UR
                  SS9U l        UR                  U l        g )Nr   )base)	r   r   r!   r"   rG   rK   r  r*   rJ   r   s     r   r   NumberNode.__init__,  sH    $ekk5>>J1-
r   )rJ   r  rK   Nr   )	r-   r.   r/   r0   r   r  r1   r   r2   r@   r   r   r  r  '  s     &Is&'r   r  c                  f   ^  \ rS rSr% \" SS9rS\S'   S\S'   S\S'   SSU 4S	 jjjrSS
 jrSr	U =r
$ )
StringNodei2  Fr   r)   r  rS   is_multiline
is_fstringc                   > [         TU ]  U5        SUR                  ;   U l        SUR                  ;   U l        UR
                  U l        U(       a(  U R                  (       d  U R                  5       U l        g g g )N	multilinerm   )r   r   rF   r
  r  rK   r  escape)r#   r   r  r&   s      r   r   StringNode.__init__9  s[    '5994#uyy0$++DJ ,6r   c                J    [         R                  [        U R                  5      $ r   )ESCAPE_SEQUENCE_SINGLE_REsubr   r  r#   s    r   r  StringNode.escapeC  s    (,,\4>>JJr   )r  r
  r  rK   )T)r   r   r  rS   r+   r)   )r-   r.   r/   r0   r   r  r1   r   r  r2   r3   r4   s   @r   r	  r	  2  s6     &Is&' 'K Kr   r	  c                      \ rS rSrSrg)ContinueNodeiF  r@   Nr   r@   r   r   r  r  F  r   r   r  c                      \ rS rSrSrg)	BreakNodeiI  r@   Nr   r@   r   r   r  r  I  r   r   r  c                      \ rS rSrSrg)
SymbolNodeiL  r@   Nr   r@   r   r   r  r  L  r   r   r  c                     ^  \ rS rSr% \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S'   \" SS9r	S	\S
'   SU 4S jjr
SS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrU =r$ )ArgumentNodeiO  Fr   T.List[BaseNode]	argumentsT.List[SymbolNode]commascolonszT.Dict[BaseNode, BaseNode]kwargsc                   > [         TU ]  UR                  UR                  UR                  5        / U l        / U l        / U l        0 U l        SU l	        SU l
        g )NF)r   r   r!   r"   rG   r  r!  r"  r#  order_errorr
  r   s     r   r   ArgumentNode.__init__W  sN    u{{ENNC  "r   c                    U R                  5       S:  a  SU l        [        U[        5      (       d  U/U R                  -   U l        g g Nr   T
num_kwargsr%  rM   	EmptyNoder  r#   	statements     r   prependArgumentNode.prependb  s=    ??q #D)Y//'[4>>9DN 0r   c                    U R                  5       S:  a  SU l        [        U[        5      (       d  U =R                  U/-  sl        g g r(  r)  r,  s     r   r   ArgumentNode.appendh  s;    ??q #D)Y//NNyk)N 0r   c                   ^ [        U4S jU R                   5       5      (       a9  [        R                  " STR                   S3U S9  [        R                  " S5        X R                  T'   g )Nc              3     >#    U  H5  n[        U[        5      =(       a    TR                  UR                  :H  v   M7     g 7fr   )rM   r  rK   ).0xnames     r   	<genexpr>)ArgumentNode.set_kwarg.<locals>.<genexpr>o  s-     V+Q
1f%?$***??+s   =A zKeyword argument "z" defined multiple times.r   z#This will be an error in Meson 2.0.)anyr#  r   r   rK   r#   r6  rK   s    ` r   	set_kwargArgumentNode.set_kwargn  sO    V$++VVVLL-djj\9RS^bcLL>?!Dr   c                    U R                   R                  5        H0  u  p4[        U[        5      (       d   eUR                  U:X  d  M.  Us  $    U$ r   )r#  itemsrM   r  rK   )r#   r6  defaultkvs        r   get_kwarg_or_default!ArgumentNode.get_kwarg_or_defaultt  sE    KK%%'DAa((((ww$ ( r   c                     X R                   U'   g r   )r#  r:  s      r   set_kwarg_no_checkArgumentNode.set_kwarg_no_check{  s    !Dr   c                ,    [        U R                  5      $ r   )r   r  r  s    r   num_argsArgumentNode.num_args~  s    4>>""r   c                ,    [        U R                  5      $ r   )r   r#  r  s    r   r*  ArgumentNode.num_kwargs  s    4;;r   c                    U R                   $ r   )r%  r  s    r   incorrect_orderArgumentNode.incorrect_order  s    r   c                D    U R                  5       U R                  5       -   $ r   )rH  r*  r  s    r   __len__ArgumentNode.__len__  s    }}!222r   )r  r"  r!  r
  r#  r%  r   )r-  r   r+   r,   )r6  r  rK   r   r+   r,   )r6  r)   r?  r   r+   r   )r6  r   rK   r   r+   r,   )r+   r*   )r+   rS   )r-   r.   r/   r0   r   r  r1   r!  r"  r#  r   r.  r   r;  rB  rE  rH  r*  rM  rP  r2   r3   r4   s   @r   r  r  O  s|     #(U"3I3!&E!2F2!&E!2F2).E):F&:	":*""#  3 3r   r  c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S	U 4S jjrSrU =r$ )
	ArrayNodei  r  rv   r  argsrw   c                   > [         TU ]  UR                  UR                  UR                  UR                  UR                  S-   S9  Xl        X l        X0l        g Nr   )r   r   )r   r   r!   r"   rG   rv   rT  rw   )r#   rv   rT  rw   r&   s       r   r   ArrayNode.__init__  sM    (..$--T\TcTcowo}o}~o  	A 	 r   )rT  rv   rw   )rv   r  rT  r  rw   r  r-   r.   r/   r0   r1   r   r2   r3   r4   s   @r   rS  rS    s!     
! !r   rS  c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S	U 4S jjrSrU =r$ )
DictNodei  r  rx   r  rT  ry   c                   > [         TU ]  UR                  UR                  UR                  UR                  UR                  S-   S9  Xl        X l        X0l        g rV  )r   r   r!   r"   rG   rx   rT  ry   )r#   rx   rT  ry   r&   s       r   r   DictNode.__init__  sG    u{{DMMellfkfqfqrsfst
	
r   )rT  rx   ry   )rx   r  rT  r  ry   r  rX  r4   s   @r   rZ  rZ    s!     
 r   rZ  c                      \ rS rSrSrg)r+  i  r@   Nr   r@   r   r   r+  r+    r   r   r+  c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S	U 4S jjrSrU =r$ )
BinaryOperatorNodei  r   leftr  operatorrightc                   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        X0l        g r   )r   r   r!   r"   rG   r`  ra  rb  )r#   r`  ra  rb  r&   s       r   r   BinaryOperatorNode.__init__  s/    djj$--@	 
r   )r`  ra  rb  )r`  r   ra  r  rb  r   rX  r4   s   @r   r_  r_    s     NO r   r_  c                      \ rS rSrSrg)OrNodei  r@   Nr   r@   r   r   rf  rf    r   r   rf  c                      \ rS rSrSrg)AndNodei  r@   Nr   r@   r   r   rh  rh    r   r   rh  c                  8   ^  \ rS rSr% S\S'   SU 4S jjrSrU =r$ )ComparisonNodei  COMPARISONSctypec                2   > [         TU ]  X#U5        Xl        g r   )r   r   rl  )r#   rl  r`  ra  rb  r&   s        r   r   ComparisonNode.__init__  s    /
r   )rl  )rl  rk  r`  r   ra  r  rb  r   rX  r4   s   @r   rj  rj    s      r   rj  c                  8   ^  \ rS rSr% S\S'   SU 4S jjrSrU =r$ )ArithmeticNodei  r)   	operationc                2   > [         TU ]  X#U5        Xl        g r   )r   r   rq  )r#   rq  r`  ra  rb  r&   s        r   r   ArithmeticNode.__init__  s    /"r   )rq  )rq  r)   r`  r   ra  r  rb  r   rX  r4   s   @r   rp  rp    s     N# #r   rp  c                  B   ^  \ rS rSr% S\S'   S\S'   SU 4S jjrSrU =r$ )	UnaryOperatorNodei  r  ra  r   rK   c                |   > [         TU ]  UR                  UR                  UR                  5        X l        X0l        g r   )r   r   r!   r"   rG   ra  rK   )r#   r   ra  rK   r&   s       r   r   UnaryOperatorNode.__init__  s*    u{{ENNC 
r   )ra  rK   )r   r   ra  r  rK   r   rX  r4   s   @r   ru  ru    s     O r   ru  c                      \ rS rSrSrg)NotNodei  r@   Nr   r@   r   r   ry  ry    r   r   ry  c                      \ rS rSrSrg)
UMinusNodei  r@   Nr   r@   r   r   r{  r{    r   r   r{  c                  d   ^  \ rS rSr% \" SS9rS\S'   \" SS9rS\S'   SU 4S jjrSS	 jr	S
r
U =r$ )CodeBlockNodei  Fr   r   pre_whitespacesr  r   c                   > [         TU ]  UR                  UR                  UR                  5        S U l        / U l        g r   )r   r   r!   r"   rG   r~  r   r   s     r   r   CodeBlockNode.__init__  s/    u{{ENNC#
r   c                    U R                   (       a  U R                   S   R                  U5        g U R                  c  [        U5      U l        g U R                  R	                  U5        g )Nr   )r   r   r~  r   r   r   s     r   r    CodeBlockNode.append_whitespaces  sL    ::JJrN--e4!!)#1%#8D   ''.r   )r   r~  r   r   )r-   r.   r/   r0   r   r~  r1   r   r   r   r2   r3   r4   s   @r   r}  r}    s4     38U2CO/C#/E/
/ /r   r}  c                  V   ^  \ rS rSr% S\S'   S\S'   S\S'   S\S'   S
U 4S jjrS	rU =r$ )	IndexNodei  r   iobjectr  rv   indexrw   c                   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        X0l        X@l        g r   )	r   r   r!   r"   rG   r  rv   r  rw   )r#   r  rv   r  rw   r&   s        r   r   IndexNode.__init__  s6    8H8HI 
 r   )r  r  rv   rw   )r  r   rv   r  r  r   rw   r  rX  r4   s   @r   r  r    s&     O! !r   r  c                  j   ^  \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   SU 4S jjrSrU =r$ )
MethodNodei   r   source_objectr  r   r  r6  lparr  rT  rparc                   > [         TU ]  UR                  UR                  UR                  UR                  UR                  S-   S9  Xl        X l        X0l        X@l        XPl	        X`l
        g rV  )r   r   r!   r"   rG   r  r   r6  r  rT  r  )r#   r  r   r6  r  rT  r  r&   s          r   r   MethodNode.__init__
  sW    djj$--DKKcgcmcmnocop*				r   )rT  r   r  r6  r  r  )r  r   r   r  r6  r  r  r  rT  r  r  r  rX  r4   s   @r   r  r     s1     	O
L


 r   r  c                  V   ^  \ rS rSr% S\S'   S\S'   S\S'   S\S'   SU 4S	 jjrS
rU =r$ )FunctionNodei  r  	func_namer  r  r  rT  r  c                   > [         TU ]  UR                  UR                  UR                  UR
                  UR                  S-   S9  Xl        X l        X0l	        X@l
        g rV  )r   r   r!   r"   rG   r   r   r  r  rT  r  )r#   r  r  rT  r  r&   s        r   r   FunctionNode.__init__  sf    ))9??I<N<N[_[j[jvz  wE  wE  FG  wG  	H"			r   )rT  r  r  r  )r  r  r  r  rT  r  r  r  rX  r4   s   @r   r  r    s'     


 r   r  c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S
U 4S jjrS	rU =r$ )AssignmentNodei"  r  var_namer  ra  r   rK   c                   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        X0l        g r   )r   r   r!   r"   rG   r  ra  rK   )r#   r  ra  rK   r&   s       r   r   AssignmentNode.__init__)  s1    (..(:K:KL  
r   )ra  rK   r  )r  r  ra  r  rK   r   rX  r4   s   @r   r  r  "  s      O r   r  c                      \ rS rSrSrg)PlusAssignmentNodei/  r@   Nr   r@   r   r   r  r  /  r   r   r  c                     ^  \ rS rSr% \" SS9rS\S'   \" SS9rS\S'   \" SS9rS\S	'   \" SS9r	S\S
'   S\S'   S\S'   \" SS9r
S\S'   SU 4S jjrSrU =r$ )ForeachClauseNodei2  Fr   r  foreach_T.List[IdNode]varnamesr   r!  r   r   r>  r}  blockrg   c                   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        X0l        X@l        XPl	        X`l
        Xpl        g r   )r   r   r!   r"   rG   r  r  r!  r   r>  r  rg   )	r#   r  r  r!  r   r>  r  rg   r&   s	           r   r   ForeachClauseNode.__init__=  sE    (..(:K:KL  


$r   )r  r   r!  rg   r  r>  r  )r  r  r  r  r!  r   r   r  r>  r   r  r}  rg   r  )r-   r.   r/   r0   r   r  r1   r  r!  r   rg   r   r2   r3   r4   s   @r   r  r  2  sf     !e,Hj,$%0Hn0!&E!2F25)E:)O".J
.% %r   r  c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S
U 4S jjrS	rU =r$ )IfNodeiH  r  if_r   	conditionr}  r  c                   > [         TU ]  UR                  UR                  UR                  5        X l        X0l        X@l        g r   )r   r   r!   r"   rG   r  r  r  )r#   linenodeif_noder  r  r&   s        r   r   IfNode.__init__O  s1    (..(:K:KL"
r   )r  r  r  )r  r   r  r  r  r   r  r}  rX  r4   s   @r   r  r  H  s      
O r   r  c                  B   ^  \ rS rSr% S\S'   S\S'   SU 4S jjrSrU =r$ )	ElseNodeiU  r  else_r}  r  c                |   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        g r   )r   r   r!   r"   rG   r  r  )r#   r  r  r&   s      r   r   ElseNode.__init__[  s*    u{{ENNC

r   )r  r  )r  r  r  r}  rX  r4   s   @r   r  r  U  s      r   r  c                  X   ^  \ rS rSr% \" SS9rS\S'   S\S'   S\S	'   SU 4S
 jjrSrU =r	$ )IfClauseNodei`  Fr   zT.List[IfNode]ifszT.Union[EmptyNode, ElseNode]	elseblockr  rc   c                   > [         TU ]  UR                  UR                  UR                  5        / U l        [        UR                  UR                  UR                  5      U l        g r   )r   r   r!   r"   rG   r  r+  r  )r#   r  r&   s     r   r   IfClauseNode.__init__g  sG    (..(:K:KL"8??HNNHDUDUVr   )r  r  )r  r   )
r-   r.   r/   r0   r   r  r1   r   r2   r3   r4   s   @r   r  r  `  s,      U+C+++W Wr   r  c                  V   ^  \ rS rSr% S\S'   S\S'   S\S'   S\S'   SU 4S	 jjrS
rU =r$ )TestCaseClauseNodeil  r  ri   r   r  r}  r  rj   c                   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        X0l        X@l        g r   )	r   r   r!   r"   rG   ri   r  r  rj   )r#   ri   r  r  rj   r&   s        r   r   TestCaseClauseNode.__init__t  s9    ))9??I<N<NO "
&r   )r  r  rj   ri   )ri   r  r  r   r  r}  rj   r  rX  r4   s   @r   r  r  l  s'     ' 'r   r  c                  `   ^  \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   SU 4S	 jjrS
rU =r$ )TernaryNodei{  r   r  r  r   	trueblockr   
falseblockc                   > [         TU ]  UR                  UR                  UR                  5        Xl        X l        X0l        X@l        XPl	        g r   )
r   r   r!   r"   rG   r  r   r  r   r  )r#   r  r   r  r   r  r&   s         r   r   TernaryNode.__init__  s>    ))9??I<N<NO"("
$r   )r   r  r  r   r  )
r  r   r   r  r  r   r   r  r  r   rX  r4   s   @r   r  r  {  s-     % %r   r  c                  d   ^  \ rS rSr% \" SS9rS\S'   S\S'   \" SS9rS\S'   SU 4S	 jjrS
r	U =r
$ )ParenthesizedNodei  Fr   r  r  r   innerr  c                   > [         TU ]  UR                  UR                  UR                  UR                  UR                  S-   S9  Xl        X l        X0l        g rV  )r   r   r!   r"   rG   r  r  r  )r#   r  r  r  r&   s       r   r   ParenthesizedNode.__init__  sG    djj%..T[[dhdndnopdpq	
	r   )r  r  r  )r  r  r  r   r  r  )r-   r.   r/   r0   r   r  r1   r  r   r2   r3   r4   s   @r   r  r    s2     %(D*(O%(D*( r   r  )r   r   r   r   r   r   r[   notinr   r   r   r   r   r   r[   r  )r   r   r   r   r   r   r[   znot inzT.Mapping[str, COMPARISONS]comparison_mapc                  J   \ rS rSrS#S jrS$S jrS%S jrS&S jrS'S jrS(S jr	S'S jr
S)S	 jrS*S
 jrS+S jrS+S jrS+S jrS+S jrS+S jrS+S jrS+S jrS+S jrS+S jrS+S jrS+S jrS,S jrS,S jrS-S jrS.S jrS/S jrS0S jrS1S jrS2S jrS3S jr S+S jr!S*S  jr"S!r#g")4Parseri  c           	         [        U5      U l        U R                  R                  U5      U l        [	        SSSSSSS 5      U l        U R
                  U l        / U l        U R                  5         SU l	        g )Neofr   r   r   r   F)
rU   lexerr   streamrD   currentprevious
current_wsgetsym
in_ternary)r#   r   rG   s      r   r   Parser.__init__  s[    4[
jjnnX.#E2q!QE)+r   c                l    U" U0 UD6nU R                    H  nUR                  U5        M     / U l         U$ r   )r  r   )r#   	node_typerT  r#  nodews_tokens         r   create_nodeParser.create_node  s9    $)&)H##H- (r   c           
        U R                   U l         [        U R                  5      U l         U R                   R                  S;   aw  U R
                  R                  U R                   5        U R                   R                  S:X  a  g [        U R                  5      U l         U R                   R                  S;   a  Mv  g g ! [         a    [        SSU R                   R                  U R                   R                  U R                   R                  U R                   R                  S   -   U R                   R                  S   -
  SS 5      U l          g f = f)N>   rq   rs   rk   rq   r  r   r   r   r  )r  r  nextr  rF   r  r   StopIterationrD   rH   r!   r"   rJ   r  s    r   r  Parser.getsym  sC   
	r,DL,,""&FF&&t||4<<##u,#DKK0	 ,,""&FF  	r DLL,C,CT\\EXEXZ^ZfZfZlZloso{o{  pE  pE  FG  pH  [H  KO  KW  KW  K`  K`  ab  Kc  [c  ek  mq  rDL	rs   A3B? 4B? ?BEEc                `    U R                   R                  U R                  R                  5      $ r   )r  r   r  rH   r  s    r   r   Parser.getline  s!    zz!!$,,"9"9::r   c                Z    U R                   R                  U:X  a  U R                  5         gg)NTFr  rF   r  r#   ss     r   r   Parser.accept  s#    <<q KKMr   c                ^    U R                   R                  nX!;   a  U R                  5         U$ g)Nr   r  )r#   tidsrF   s      r   
accept_anyParser.accept_any  s'    ll;KKMJr   c                    U R                  U5      (       a  g[        SU SU R                  R                   S3U R	                  5       U R                  R
                  U R                  R                  5      eNTz
Expecting z got .)r   r   r  rF   r   r!   r"   r  s     r   expectParser.expect  s]    ;;q>>z!E$,,2B2B1C1Et||~W[WcWcWjWjlplxlxl~l~r   c           	     b   U R                  U5      (       a  g[        SU SU R                  R                   S3U R	                  5       U R                  R
                  U R                  R                  U R                  R	                  UR                  5      UR
                  UR                  5      er  )	r   r6   r  rF   r   r!   r"   r  rH   )r#   r  block_starts      r   block_expectParser.block_expect  s    ;;q>>!Jqct||7G7G6H"JDLLN\`\h\h\o\oquq}q}  rD  rD  FJ  FP  FP  FX  FX  Yd  Yo  Yo  Fp  r}  rD  rD  FQ  FW  FW  X  	Xr   c                |    U R                  5       n U R                  S5        U$ ! [         a  nXl        e S nAff = f)Nr  )	codeblockr  r   r   )r#   r  es      r   parseParser.parse  s@     	KK   	E	s   % 
;6;c                "    U R                  5       $ r   )e1r  s    r   r-  Parser.statement  s    wwyr   c                   U R                  5       nU R                  S5      (       a  U R                  [        U R                  5      nU R                  5       n[        U[        5      (       d0  [        SU R                  5       UR                  UR                  5      e[        UR                  [        5      (       d   eU R                  [        XU5      $ U R                  S5      (       a  U R                  [        U R                  5      nU R                  5       n[        U[        5      (       d0  [        SU R                  5       UR                  UR                  5      e[        UR                  [        5      (       d   eU R                  [        XU5      $ U R                  S5      (       a  U R                   (       a0  [        SU R                  5       UR                  UR                  5      eU R                  [        U R                  5      nSU l        U R                  5       nU R#                  S5        U R                  [        U R                  5      nU R                  5       nS	U l        U R                  [$        XXVU5      $ U$ )
Nr   z$Plusassignment target must be an id.r   z Assignment target must be an id.r   z)Nested ternary operators are not allowed.Tr   F)e2r   r  r  r  r  rM   r  r   r   r!   r"   rK   r)   r  r  r  r  r  )r#   r`  ra  rK   qm_noder  
colon_noder  s           r   r  	Parser.e1  s   wwy;;|$$''
DMMBHGGIEdF++$%KT\\^]a]h]hjnjtjtuudjj#....##$6NN[[""''
DMMBHGGIEdF++$%G%)\\^T[[$**N Ndjj#....##NDEJJ[[(($%P%)\\^T[[$**N N &&z4==AG"DO	IKK ))*dmmDJJ#DO##K	Wabbr   c                   U R                  5       nU R                  S5      (       a  U R                  [        U R                  5      n[        U[        5      (       a0  [        SU R                  5       UR                  UR                  5      eU R                  [        XU R                  5       5      nU R                  S5      (       a  M  U$ )Nr\   zInvalid or clause.)e3r   r  r  r  rM   r+  r   r   r!   r"   rf  r#   r`  ra  s      r   r  	Parser.e2  s    wwykk$''
DMMBH$	**$%9%)\\^T[[$**N N##FDDGGIFD kk$ r   c                   U R                  5       nU R                  S5      (       a  U R                  [        U R                  5      n[        U[        5      (       a0  [        SU R                  5       UR                  UR                  5      eU R                  [        XU R                  5       5      nU R                  S5      (       a  M  U$ )Nr]   zInvalid and clause.)e4r   r  r  r  rM   r+  r   r   r!   r"   rh  r  s      r   r  	Parser.e3)  s    wwykk%  ''
DMMBH$	**$%:%)\\^T[[$**N N##GTTWWYGD kk%   r   c           	        U R                  5       n[        R                  5        Hb  u  p#U R                  U5      (       d  M  U R	                  [
        U R                  5      nU R	                  [        X1X@R                  5       5      s  $    U R                  S5      (       Ga@  U R                  R                  5       nU R                  nU R                  S5      (       Ga  U R                  nU R                  [        U5      S  U l        [        UR                  UR                  UR                  5      nU H  n	UR                  U	5        M     UR                   S   UR                   S   4Ul        U=R"                  UR$                  R"                  UR"                  -   -  sl        U R	                  [
        U5      nU R	                  [        SXU R                  5       5      $ U$ )Nr^   r[   r   r   r  )e5r  r>  r   r  r  r  rj  r  copyr   r+  r!   r"   rG   r   rJ   rK   r   )
r#   r`  nodenameoperator_typera  ws	not_tokenin_token	temp_nodews
             r   r  	Parser.e43  st   wwy'5';';'=#H{{8$$++JF''XW^W^W`aa (> ;;u%%'BI{{4  =="&//#b'(";%hoox~~xGXGXY	A003  '0&8&8&;X=N=Nq=Q%R	"9#8#8#>#>#OO++J	B''QUQXQXQZ[[r   c                (   SSS.nU R                  5       n U R                  [        UR                  5       5      5      nU(       aI  U R	                  [
        U R                  5      nU R	                  [        X   X$U R                  5       5      nO U$ M}  )Naddr  )r   r   )e6r  tuplekeysr  r  r  rp  r#   op_mapr`  opra  s        r   r  	Parser.e5I  s    
 wwyv{{}!56B++JF''
DTXT[T[T]^ r   c                *   SSSS.nU R                  5       n U R                  [        UR                  5       5      5      nU(       aI  U R	                  [
        U R                  5      nU R	                  [        X   X$U R                  5       5      nO U$ M}  )Nmodmuldiv)r   r   r   )e7r  r  r  r  r  r  rp  r  s        r   r  	Parser.e6X  s    

 wwyv{{}!56B++JF''
DTXT[T[T]^ r   c                   U R                  S5      (       aO  U R                  [        U R                  5      nU R                  [        U R
                  XR                  5       5      $ U R                  S5      (       aO  U R                  [        U R                  5      nU R                  [        U R
                  XR                  5       5      $ U R                  5       $ )Nr^   r   )r   r  r  r  ry  r  e8r{  )r#   ra  s     r   r  	Parser.e7h  s    ;;u''
DMMBH##GT\\8WWYOO;;v''
DMMBH##Jh	RRwwyr   c                   U R                  5       nU R                  nU R                  S5      (       a  U R                  [        U5      nU R                  5       nU R                  SU5        U R                  [        U R                  5      n[        U[        5      (       d0  [        SU R                  5       UR                  UR                  5      e[        UR                  [        5      (       d   eU R                  [         XXE5      nSnU(       a]  SnU R                  S5      (       a  SnU R#                  U5      nU R                  S5      (       a  SnU R%                  U5      nU(       a  M]  U$ )Nrt   ru   z)Function call must be applied to plain idTFr   rv   )e9r  r   r  r  rT  r  r  rM   r  r   r   r!   r"   rK   r)   r  method_call
index_call)r#   r`  r  r  rT  r  go_agains          r   r"  	Parser.e8q  s(   wwyll;;x  ##J<D99;Dh4##J>DdF++$%P%)\\^T[[$**N Ndjj#....##L$dIDH{{5!!''-{{:&&t, h r   c                B   U R                   nU R                  S5      (       ad  U R                  [        U5      nU R	                  5       nU R                  SU5        U R                  [        U R                  5      n[        X#U5      $ U R                  S5      (       ao  U R                  [        U5      nU R                  5       nU R                  SU5        U R                  [        U R                  5      nU R                  [        XVU5      $ U R                  S5      (       ao  U R                  [        U5      nU R                  5       n	U R                  SU5        U R                  [        U R                  5      n
U R                  [        XU
5      $ U R                  5       $ )Nrt   ru   rv   rw   rx   ry   )r  r   r  r  r-  r  r  r  rT  rS  
key_valuesrZ  e10)r#   r  r  r  r  rv   rT  rw   rx   r+  ry   s              r   r%  	Parser.e9  sF   ll;;x  ##J<D Ah4##J>D$Td33[[$$''
K@H99;Dj+6''
DMMBH##IxxHH[[!!$$Z=E*Jg{3$$Z?E##HeGG88:r   c                   U R                   nU R                  S5      (       a  SUl        U R                  [        U5      $ U R                  S5      (       a  SUl        U R                  [        U5      $ U R                  S5      (       a  U R                  [
        U5      $ U R                  S5      (       a  U R                  [        U5      $ U R                  S5      (       a  U R                  [        U5      $ [        U R                   R                  U R                   R                  U R                   R                  5      $ )Nra   Trd   Frn   ro   )r|   rm   rr   rl   )r  r   rK   r  r   r  r  r  r	  r+  r!   r"   rG   )r#   ts     r   r,  
Parser.e10  s    LL;;vAG##K33;;wAG##K33;;t##FA..;;x  ##J22??YZZ##J22,,dll.@.@$,,BWBWXXr   c                   U R                  5       nU R                  [        U R                  5      n[	        U[
        5      (       Gd  U R                  S5      (       a  UR                  R                  U R                  [        U R                  5      5        UR                  XR                  5       5        U R                  S5      (       d  U$ UR                  R                  U R                  [        U R                  5      5        O0[        SU R                  5       UR                  UR                   5      eU R                  5       n[	        U[
        5      (       d  GM  U$ )Nr   r}   z4Only key:value pairs are valid in dict construction.)r-  r  r  r  rM   r+  r   r"  r   r  r  rE  r!  r   r   r!   r"   r#   r  as      r   r+  Parser.key_values  s    NN\4<<8Q	**{{7## 0 0T]] KL$$Q(89{{7++H 0 0T]] KL$%[%)\\^QXXqwwH H A Q	** r   c                   U R                  5       nU R                  [        U R                  5      n[	        U[
        5      (       Gd  U R                  S5      (       aL  UR                  R                  U R                  [        U R                  5      5        UR                  U5        GOU R                  S5      (       a  UR                  R                  U R                  [        U R                  5      5        [	        U[        5      (       d0  [        SU R                  5       UR                  UR                   5      eUR#                  XR                  5       5        U R                  S5      (       d  U$ UR                  R                  U R                  [        U R                  5      5        OUR                  U5        U$ U R                  5       n[	        U[
        5      (       d  GM  U$ )Nr}   r   z*Dictionary key must be a plain identifier.)r-  r  r  r  rM   r+  r   r!  r   r  r  r"  r  r   r   r!   r"   r;  r2  s      r   rT  Parser.args  sJ   NN\4<<8Q	**{{7## 0 0T]] KLW%% 0 0T]] KL!!V,,()U)-177L LA~~/0{{7++H 0 0T]] KL A! Q	**" r   c           	     p   U R                  [        U R                  5      nU R                  5       n[	        U[
        5      (       d  [	        U[        5      (       aE  [	        U[        5      (       a0  [        SU R                  5       UR                  UR                  5      e[        SU R                  5       U R                  R                  U R                  R                  5      e[	        UR                  [        5      (       d   eU R                  S5        U R                  [        U R                  5      nU R                  5       nU R                  [        U R                  5      nU R                  S5        U R                  [         XX4XV5      nU R#                  S5      (       a  U R%                  U5      $ U$ )Nz$meson does not support float numberszMethod name must be plain idrt   ru   r   )r  r  r  r,  rM   r  r  r   r   r!   r"   r  rK   r)   r  rT  r  r   r&  )r#   r  r   
methodnamer  rT  r  methods           r   r&  Parser.method_call  sL   z4==9XXZ
*f---44JPZ9[9[$%K%)\\^]5I5I=K^K^` ` !?!%1D1DdllFXFXZ Z***C0000H
DMM:yy{
DLL9H!!*m*TX_;;u##F++r   c                    U R                  [        U R                  5      nU R                  5       nU R	                  S5        U R                  [        U R                  5      nU R                  [
        XX45      $ )Nrw   )r  r  r  r-  r  r  )r#   r  rv   index_statementrw   s        r   r'  Parser.index_call  s[    ##J>..*J##J>	=O^^r   c           
     t   U R                  [        U R                  5      nU R                  S5        [	        U R                  R
                  [        5      (       d   eU R                  [        U R                  5      /n/ nU R                  S5      (       a  UR                  U R                  [        U R                  5      5        U R                  S5        [	        U R                  R
                  [        5      (       d   eUR                  U R                  [        U R                  5      5        U R                  S5        U R                  [        U R                  5      nU R                  5       nU R                  5       nU R                  [        U R                  5      nU R                  [        XX4XVU5      $ )Nrn   r}   r   )r  r  r  r  rM   rK   r)   r  r   r   r-  r  r  r  )r#   r  r  r!  r   r>  r  rg   s           r   foreachblockParser.foreachblock  s=   ##J>D$----s3333$$VT]];<;;wMM$**:t}}EFKKdmm1137777OOD,,VT]]CDG  T]];  %%j$,,?
 18vV[dnoor   c           	        U R                  [        U R                  5      nU R                  5       nU R                  [        U5      nU R                  S5        U R                  5       nUR                  R                  U R                  [        X1X$5      5        U R                  U5        U R                  5       Ul        U R                  [        U R                  5      Ul        U$ Nrq   )r  r  r  r-  r  r  r  r  r   r  elseifblockr  r  rc   )r#   r  r  clauser  s        r   ifblockParser.ifblock  s    "":t}}=NN$	!!,	:E 

$**66IUV >>+''
DLLAr   c           	     d   U R                  S5      (       a  U R                  [        U R                  5      nU R	                  5       nU R                  S5        U R                  5       nUR                  R                  U R                  [        X2X45      5        U R                  S5      (       a  M  g g )Nr_   rq   )
r   r  r  r  r-  r  r  r  r   r  )r#   rD  elif_r  bs        r   rC  Parser.elseifblock  s}    kk&!!$$Z?E AKK AJJd..vqFG kk&!!r   c                X   U R                  S5      (       aL  U R                  [        U R                  5      nU R	                  S5        U R                  5       n[        X5      $ [        U R                  R                  U R                  R                  U R                  R                  5      $ )Nr`   rq   )r   r  r  r  r  r  r  r+  r  r!   r"   rG   )r#   r  r  s      r   r  Parser.elseblock  sw    ;;v$$Z?EKKNN$EE)),,dll.@.@$,,BWBWXXr   c                    U R                  [        U R                  5      nU R                  5       nU R	                  S5        U R                  5       n[        U R                  5      nU R                  [        XX45      $ rB  )r  r  r  r-  r  r  r  r  )r#   ri   r  r  rj   s        r   testcaseblockParser.testcaseblock#  s`    ##J>NN$	E  . 2H\\r   c                V   U R                   nU R                   S:X  aI  [        U R                   R                  U R                   R                  U R                   R                  5      $ U R                  S5      (       a$  U R                  5       nU R                  SU5        U$ U R                  S5      (       a$  U R                  5       nU R                  SU5        U$ U R                  S5      (       a   U R                  [        U R                   5      $ U R                  S5      (       a   U R                  [        U R                   5      $ U R                  R                  (       a:  U R                  S5      (       a$  U R                  5       nU R                  S	U5        U$ U R                  5       $ )
Nrq   rZ   rc   re   rg   rf   rb   ri   rj   )r  r+  r!   r"   rG   r   rE  r  r?  r  r  r  r  r   rN  r-  )r#   r  rE  forblockr  s        r   r%   Parser.line+  s<   ll<<5 T\\00$,,2D2DdllF[F[\\;;tllnGg{3N;;y!!((*HlK8O;;z""##L$,,??;;w##It||<<::""t{{:'>'>&&(Em[9L~~r   c                   U R                  [        U R                  5      nSn U(       a  U R                   H  nUR	                  U5        M     / U l        U R                  5       n[        U[        5      (       d  UR                  R                  U5        U R                  S5      nU(       a  M  U R                   H  nUR	                  U5        M     / U l        U$ ! [         a  nXl        e S nAff = f)NTrq   )r  r}  r  r  r   r%   rM   r+  r   r   r   r   r   )r#   r  condr  r   r  s         r   r  Parser.codeblockA  s      =	 $H,,X6 !0"$))+!'955KK&&w/{{5) $" H$$X. (  	E	s   B
C 
C3'C..C3)r  r  r  r  r  r  N)r   r)   rG   r)   )r  zT.Type[BaseNodeT]rT  T.Anyr#  rV  r+   r   )r+   r,   r  )r  r)   r+   rS   )r  zT.Tuple[str, ...]r+   r)   )r  r)   r  rD   r+   rS   )r+   r}  )r+   r   )r+   r  )r  r   r+   r  )r  r   r+   r  )r+   r  )r+   r  )rD  r  r+   r,   )r+   zT.Union[ElseNode, EmptyNode])r+   r  )$r-   r.   r/   r0   r   r  r  r   r   r  r  r  r  r-  r  r  r  r  r  r  r  r"  r%  r,  r+  rT  r&  r'  r?  rE  rC  r  rN  r%   r  r2   r@   r   r   r  r    s     r;@
X
@, 0.Y ".(_p(
HY] ,r   r  )r   zT.Match[str]r+   r)   )K
__future__r   dataclassesr   r   r   r   r   typingTmesonlibr   r   r   TYPE_CHECKINGtyping_extensionsr	   r   r
   TypeVarr   r   UNICODEVERBOSEr  r   r   r6   r*   r)   rS   rA   GenericrD   r   rU   r   r   r   r   r  r  r	  r  r  r  r  rS  rZ  r+  r_  rf  rh  rj  rp  ru  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  rk  r  r1   r  r@   r   r   <module>rb     s   # ( 	  	  $ ??)		+Z8I JJ (	 **rzz
!# D^ . B 		/3T:
eAIIm$  " ::./|J |J| !+ !+ !+H t"X " " t'QYY}-x ' '	.& 		^C  	 t'$ ' ' tK$ K K&	> 		 		$ 	 t838 83 83t t
! 
! 
! t
x 
 
	 	 t
 
 
	 		  	 t'   t#' # # t  	 		" 	 t/H / /$ t! ! ! t  $ t8   t
X 
 
	 	 t% % %* t
X 
 
 tx   t	W8 	W 	W t' ' ' t%( % %" t
 
 
 ??IJK 




	/+ 	6b br   