+
    f7i4c  c                   s    ^ RI Hu Ht ^ RIHt ^ RIHt ^ RIHt RRRRR	R
RRRRRRRRRRRRRRRRRR/t	 ! R R]
4      t ! R R]
4      t ! R R]4      tR# )i    N)Lexer)VoltLibError)open	DEF_GLYPHparse_def_glyph_	DEF_GROUPparse_def_group_
DEF_SCRIPTparse_def_script_
DEF_LOOKUPparse_def_lookup_
DEF_ANCHORparse_def_anchor_Z	GRID_PPEMparse_ppem_ZPRESENTATION_PPEMZPPOSITIONING_PPEMZCOMPILER_USEEXTENSIONLOOKUPSparse_noarg_option_ZCOMPILER_USEPAIRPOSFORMAT2ZCMAP_FORMATparse_cmap_formatZDO_NOT_TOUCH_CMAPc                   s   a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R"t%V t&R## )$Parserc                sL   \         P                  ! 4       V n        \        4       V n        \        4       V n        / V n        \        4       V n        \        4       V n	        \        4       V n
        R R uV n        V n        R V n        V P                  V4       V P                  4        R # N)astZVoltFiledoc_OrderedSymbolTableglyphs_SymbolTablegroups_anchors_scripts_langs_lookups_next_token_type_next_token_next_token_location_make_lexer_advance_lexer_)selfZpath   &&?/usr/lib64/python3.14/site-packages/fontTools/voltLib/parser.py__init__ZParser.__init__   sx    LLN	)+"}#!m#37/t/$(!    c                s   \        VR 4      '       d   \        VRR4      pVP                  4       pM/Tp\        VR4      ;_uu_ 4       pVP                  4       pRRR4       \	        XV4      V n        R#   + '       g   i     L#; i)readnameNZr)Zhasattrgetattrr&   r   r    lexer_)r!   Zfile_or_pathZfilenameZdataZfs   &&   r#   r   ZParser.make_lexer_$   sf    <((|VT:H$$&D#HlC((Avvx )D(+ )(s   A33B	c           	     s   V P                   P                  pV P                  e   V P                  4        V P                  \
        P                  4       9   d:   \        V \
        V P                  ,          4      pVP                  V! 4       4       Kz  V P                  R4      '       d    V P                   # \        RRP                  \        \
        P                  4       4      4      ,           V P                  4      hV P                   # )NENDz	Expected z, )r   
statementsr   r    
cur_token_PARSE_FUNCSkeysr(   appendis_cur_keyword_r   ZjoinZsortedcur_token_location_)r!   r+   Zfunc   &  r#   parseZParser.parse.   s    YY))
##/!+"2"2"44t[%AB!!$&)%%e,, yy	 #$))F;3C3C3E,F"GG,,  yyr%   c           	     s   V P                  R 4      '       g   Q hV P                  pV P                  4       pV P                  R4       V P	                  4       pV^ 8  d   \        RV P                  4      hRpV P                  R8X  dH   V P                  R4       V P	                  4       .pV^ ,          ^ 8  d   \        RV P                  4      hM2V P                  R8X  d"   V P                  R4       V P                  4       pRpV P                  R8X  d+   V P                  R4       V P                  4       pVR9   g   Q hRpV P                  R8X  d"   V P                  R4       V P	                  4       pV P                  R	4       V P                  P                  V4      e   \        R
W#3,          V4      h\        P                  ! W#WEWaR7      pV P                  P                  W'4       V# )r   ZIDzInvalid glyph IDNZUNICODEzInvalid glyph UNICODEZUNICODEVALUESZTYPEZ
COMPONENTSZ	END_GLYPHz#Glyph "%s" (gid %i) already definedlocation)ZBASEZLIGATUREZMARK	COMPONENT)r0   r1   expect_string_expect_keyword_expect_number_r   r   parse_unicode_values_expect_name_r   resolver   ZGlyphDefinitiondefine)r!   r5   r'   gidZgunicodeZgtypeZ
componentsZ	def_glyphs   &       r#   r   ZParser.parse_def_glyph_>   s   ##K0000++""$T"!!#7143K3KLLy(  +++-.H{Q"#:D<T<TUU 0  1113Hv%  (%%'EEEEE
|+  .,,.J[)<<%15CX  ''x

	 	D,r%   c                s   V P                  R 4      '       g   Q hV P                  pV P                  4       pRpV P                  R8X  d   V P	                  4       pV P                  R4       V P                  P                  V4      e   \        RV,          V4      h\        P                  ! W#VR7      pV P                  P                  W$4       V# )r   NENUMZ	END_GROUPzBGlyph group "%s" already defined, group names are case insensitiver4   )r0   r1   r7   r   parse_enum_r8   r   r<   r   r   ZGroupDefinitionr=   )r!   r5   r'   enumZ	def_group   &    r#   r   ZParser.parse_def_group_c   s    ##K0000++""$v%##%D[)<<%1359: 
 ''XF	D,r%   c                s   V P                  R 4      '       g   Q hV P                  pRpV P                  R8X  d"   V P                  R4       V P	                  4       pV P                  R4       V P	                  4       pV P
                  P                  V4      e   \        RV,          V4      hV P                  P                  4        . pV P                  R8w  d   V P                  4        V P                  4       pV P                  R4       V P                  P                  VP                  4      e    \        RVP                  : RV: R	2V4      hV P                  P                  VP                  V4       VP                  V4       K  V P                  R4       V P                  P                  4        \         P"                  ! W#WAR
7      pV P
                  P                  W64       V# )r   NNAMETAGz=Script "%s" already defined, script tags are case insensitiveZ
END_SCRIPTEND_LANGSYSz
Language "z" already defined in script "z%", language tags are case insensitiver4   )r0   r1   r   r8   r7   r   r<   r   r   enter_scoper    parse_langsys_tagr=   r/   
exit_scoper   ZScriptDefinition)r!   r5   r'   rH   ZlangsZlangZ
def_script   &      r#   r   ZParser.parse_def_script_u   s   ##L1111++v%  (&&(DU#!!#==  %13589 
 	!,.!&&(D  /{{""488,8"<@HHcK 
 KKtxx.LL\* ))$UN
S-r%   c                s   V P                  R 4      '       g   Q hV P                  pRpV P                  R8X  d"   V P                  R4       V P	                  4       pV P                  R4       V P	                  4       p. pV P                  R8w  dE   V P                  4        V P                  4       pV P                  R4       VP                  V4       KU  \        P                  ! W#WAR7      pV# )ZDEF_LANGSYSNrC   rD   rE   END_FEATUREr4   )
r0   r1   r   r8   r7   r    parse_feature_r/   r   ZLangSysDefinition)r!   r5   r'   rH   ZfeaturesfeatureZdef_langsysrJ   r#   rG   ZParser.parse_langsys_   s    ##M2222++v%  (&&(DU#!!#-/!))+G  /OOG$++DxSr%   c                s   V P                  R 4      '       g   Q hV P                  pV P                  R4       V P                  4       pV P                  R4       V P                  4       p. pV P                  R8w  d5   V P                  R4       V P                  4       pVP                  V4       KE  \        P                  ! W#WAR7      pV# )ZDEF_FEATURErC   rD   rK   ZLOOKUPr4   )r0   r1   r8   r7   r   r/   r   ZFeatureDefinition)r!   r5   r'   rH   ZlookupsZlookuprM   rJ   r#   rL   ZParser.parse_feature_   s    ##M2222++V$""$U#!!#-/  *((*FNN6"''7Nr%   c                s   V P                  R 4      '       g   Q hV P                  pV P                  4       pV^ ,          P                  4       '       g   \	        RV,          V4      hV P
                  P                  V4      e   \	        RV,          V4      hRpV P                  R8X  d   V P                  4        M#V P                  R8X  d   V P                  4        RpRpRpV P                  R8X  d   V P                  4        V P                  R	8X  d"   V P                  4        V P                  4       pMV P                  R
8X  d   V P                  4        MV P                  R8X  d   V P                  4        RpMpV P                  \        P                  8X  d   V P                  4       pM@\	        RV P                  ,          V4      hV P                  R8X  d   V P                  4        RpRpV P                  R8X  d+   V P                  R4       V P                  4       pVR9   g   Q hRpV P                  R8X  d   V P                  R4       RpRpV P                  R8X  d2   V P                  R4       V P                  4       P                  RR4      p. p	V P                  R9   d   V P                  4       p	K#  V P                  4       p
RpRpV
R8X  d   V P!                  V4      pM+V
R8X  d   V P#                  4       pM\	        RV
,          V4      h\$        P&                  ! VVVVVVVV	VVVR7      pV P
                  P)                  W-4       V# )r	   z)Lookup name "%s" must start with a letterNz>Lookup "%s" already defined, lookup names are case insensitiveTZPROCESS_BASEZ	SKIP_BASEFZPROCESS_MARKSZMARK_GLYPH_SETZALLZNONEz3Expected ALL, NONE, MARK_GLYPH_SET or an ID. Got %sZ
SKIP_MARKSZ	DIRECTIONZREVERSALZCOMMENTSz\nZ
AS_SUBSTITUTIONAS_POSITIONz/Expected AS_SUBSTITUTION or AS_POSITION. Got %sr4   )ZLTRZRTLEXCEPT_CONTEXTZ
IN_CONTEXT)r0   r1   r7   Zisalphar   r   r<   r   r    r   r    STRINGr8   r;   Zreplaceparse_context_parse_substitution_parse_position_r   ZLookupDefinitionr=   )r!   r5   r'   Zprocess_baseZprocess_marksZmark_glyph_setZ	directionreversalZcommentscontextZas_pos_or_subsubposZ
def_lookups   &             r#   r
   ZParser.parse_def_lookup_   s%   ##L1111++""$Aw  ;dBH  ==  &246:; 
 ~-!,! L.!#33##%!%!4!4!6!!U*##%!!V+##% %&&%,,6 $ 3 3 5" $ 5 57 
 -!!M	{*  -))+I...z)  ,Hz)  ,**,44UDAH"BB))+G))+--**84Cm+&&(CDV  ))

 	T.r%   c                s   V P                   p. pV P                  R9   d   RpRpV P                  4       pV P                  R8w  d   . p. pV P                  R9   dN   V P                  4       pV P                  4       pVR8X  d   VP	                  V4       KK  VP	                  V4       K^  V P                  R4       \        P                  ! WVWqR7      pVP	                  V4       K  V P                  R4       K  V# )rQ   NZEND_CONTEXTLEFTr4   rP   )rZ   ZRIGHT)r1   r   r;   parse_coverage_r/   r8   r   ZContextDefinition)	r!   r5   ZcontextsZsidecoverageZex_or_inZleftZrightrW   	   &        r#   rS   ZParser.parse_context_  s    ++"BBDH((*H=0&&*;;,,.D#335Hv~H-X.$$]3//E ($$]3r%   c                s   V P                  R 4      '       g   Q hV P                  p. p. pV P                  R8w  d   \        RV4      hV P                  R8X  dt   V P	                  R4       VP                  V P                  4       4       V P	                  R4       VP                  V P                  4       4       V P	                  R4       K  V P	                  R4       \        V Uu. uF  p\        V4      NK  	  up4      p\        V Uu. uF  p\        V4      NK  	  up4      pV^8  d   V^8  d   \        RV4      h\        \        \        V4      \        V4      4      4      pV^8X  d   V^8X  d   V UU	u. uF  qU F  qP                  4       NK  	  K  	  p
pp	\        \        V
4      4      \        V
4      8w  d   \        P                  ! WR7      pV# V'       d   \        P                   ! WR7      pV# \        P"                  ! WR7      p V# V^8X  d!   V^8  d   \        P$                  ! WR7      pV# V^8  d   V^8X  d   \        P&                  ! WR7      pX# u upi u upi u up	pi )rN   ZSUBzExpected SUBZWITHZEND_SUBZEND_SUBSTITUTIONzInvalid substitution typer4   )r0   r1   r   r   r8   r/   r[   ZmaxZlenZdictZziptupleZglyphSetZsetr   ZSubstitutionAlternateDefinitionZ+SubstitutionReverseChainingSingleDefinitionZSubstitutionSingleDefinitionZSubstitutionMultipleDefinitionZSubstitutionLigatureDefinition)r!   rV   r5   ZsrcZdestcovZmax_srcZmax_destZmappingZxZglyphsrX   s   &&          r#   rT   ZParser.parse_substitution_,  s   ##$56666++u$~x88%'  'JJt++-.  (KK,,./  +/03/3Cs3x3/0D1DSCD12 Q;8a<:HEEs5:uT{34a<HM /2?cs3ajjl3lcF?3v;3v;.99'U 
  IIC 
 ::7VC
 
	 \hl44WPC 
 q[X]44WPC
7 01 @s   %I	I$8 I)c                sv   V P                  R 4      '       g   Q hV P                  pV P                  4       pVR9  d   \        RV4      hVR8X  d   V P	                  4       pMGVR8X  d   V P                  4       pM/VR8X  d   V P                  4       pMVR8X  d   V P                  4       pV P                  R4       X# )rO   ATTACHATTACH_CURSIVEADJUST_PAIRADJUST_SINGLEz;Expected ATTACH, ATTACH_CURSIVE, ADJUST_PAIR, ADJUST_SINGLEZEND_POSITION)r`   ra   rb   rc   )	r0   r1   r;   r   parse_attach_parse_attach_cursive_parse_adjust_pair_parse_adjust_single_r8   )r!   r5   Zpos_typepositions   &   r#   rU   ZParser.parse_position_W  s    ##M2222++$$&WWMx  x))+H))113H&..0H(002H^,r%   c                s   V P                  R 4      '       g   Q hV P                  pV P                  4       p. pV P                  R4       V P                  R8w  dW   V P                  4       pV P                  R4       V P                  R4       V P                  4       pVP                  WE34       Kg  V P                  R4       \        P                  ! W#VR7      pV# )r`   TO
END_ATTACHATZANCHORr4   )	r0   r1   r[   r8   r   r7   r/   r   ZPositionAttachDefinition)r!   r5   r\   Zcoverage_tor_   Zanchor_namerh   rJ   r#   rd   ZParser.parse_attach_j  s    ##H----++'')T",.&&(C  &  *--/K12\*//H
 r%   c                s   V P                  R 4      '       g   Q hV P                  p. p. pV P                  R8w  d3   V P                  R4       VP	                  V P                  4       4       KC  V P                  R8w  d3   V P                  R4       VP	                  V P                  4       4       KC  V P                  R4       \        P                  ! W#VR7      pV# )ra   ZENTERZEXITrj   r4   )r0   r1   r   r8   r/   r[   r   ZPositionAttachCursiveDefinition)r!   r5   Zcoverages_exitZcoverages_enterrh   rB   r#   re   ZParser.parse_attach_cursive_|  s    ##$45555++')  (!!$"6"6"89,.  )""4#7#7#9:\*66h
 r%   c                s   V P                  R 4      '       g   Q hV P                  p. p. p/ pV P                  R8X  d4   V P                  4        V P	                  4       pVP                  V4       KD  V P                  R8X  d4   V P                  4        V P	                  4       pVP                  V4       KD  V P                  R8w  d[   V P                  4       pV P                  4       pV P                  R4       V P                  4       p	V P                  4       p
W3WGV3&   Kk  V P                  R4       \        P                  ! W#WAR7      pV# )rb   ZFIRSTZSECOND
END_ADJUSTBYr4   )r0   r1   r   r    r[   r/   r9   r8   
parse_pos_r   ZPositionAdjustPairDefinition)r!   r5   Zcoverages_1Zcoverages_2Zadjust_pairZ
coverage_1Z
coverage_2Zid_1Zid_2Zpos_1Zpos_2rh   s   &           r#   rf   ZParser.parse_adjust_pair_  s'   ##M2222++')!--/Jz*(*!--/Jz*,.&&(D&&(D  &OO%EOO%E).Kt%\*33k
 r%   c                sP   V P                  R 4      '       g   Q hV P                  p. pV P                  R8w  dF   V P                  4       pV P	                  R4       V P                  4       pVP                  W434       KV  V P	                  R4       \        P                  ! W!R7      pV# )rc   rl   rm   r4   )	r0   r1   r   r[   r8   rn   r/   r   ZPositionAdjustSingleDefinition)r!   r5   Zadjust_singleZ	coveragesrY   rh   s   &     r#   rg   ZParser.parse_adjust_single_  s    ##O4444++,.,,.I  &//#C  )!12\*55mWr%   c           
     s`   V P                  R 4      '       g   Q hV P                  pV P                  4       pV P                  R4       V P	                  4       pV P                  R4       V P                  4       pV P                  R4       V P	                  4       pW@P                  9   dK   V P                  V,          P                  V4      pVe%   VP                  V8X  d   \        RV,          V4      hV P                  R8X  d   RpV P                  4        MRpV P                  R4       V P                  4       pV P                  R	4       \        P                  ! W#WEWxVR
7      pW@P                  9  d   \        4       V P                  V&   V P                  V,          P!                  W&4       V# )r   ZONGLYPHr6   z>Anchor "%s" already defined, anchor names are case insensitiveZLOCKEDTFrk   Z
END_ANCHORr4   )r0   r1   r7   r8   r9   r;   r   r<   	componentr   r   r    rn   r   ZAnchorDefinitionr   r=   )	r!   r5   r'   r>   Z
glyph_namerp   ZanchorZlockedrY   r]   r#   r   ZParser.parse_def_anchor_  sx   ##L1111++""$T"!!#W%&&(
[)'')	&]]:.66t<F!f&6&6)&C"8:>? 
 x'F!FT"oo\*%%zfH
 ]]*(3DMM*%j!((6r%   c                s    V P                  4        V P                  R 4      '       g   Q hV P                  4       pV P                  R4       V P                  4       pW3# )	ADJUST_BYrk   )r    r0   r9   r8   )r!   
adjustmentsizer2   r#   parse_adjust_by_ZParser.parse_adjust_by_  sX    ##K0000((*
T"""$r%   c                s   V P                  4        V P                  pV P                  R 4      '       g   Q V4       hRpRpRp/ p/ p/ pV P                  R8X  dJ   V P                  4        V P	                  4       pV P                  R8X  d   V P                  4       w  rWV	&   K)  V P                  R8X  dJ   V P                  4        V P	                  4       pV P                  R8X  d   V P                  4       w  rWV	&   K)  V P                  R8X  dJ   V P                  4        V P	                  4       pV P                  R8X  d   V P                  4       w  rWV	&   K)  V P                  R4       \        P                  ! W#WEWg4      # )ZPOSNZADVrq   ZDXZDYZEND_POS)	r    r1   r0   r   r9   rt   r8   r   ZPos)
r!   r5   ZadvZdxZdyZadv_adjust_byZdx_adjust_byZdy_adjust_byrr   rs   s
   &         r#   rn   ZParser.parse_pos_  sa   ++##E**4H4*u$!%%'C""k1#'#8#8#: 
&0d#t#!$$&B""k1#'#8#8#: 
%/T"t#!$$&B""k1#'#8#8#: 
%/T"Y'wws<NNr%   c                s   V P                   p V P                  4       P                  R 4      pV Uu. uF  q3R8w  g   K  \        VR,          ^4      NK   	  ppT. 8w  d   T# R# u upi   \         d   p\        \        T4      T4      hRp?ii ; i)Z,Z :i   NNN)r1   r7   ZsplitZintZ
ValueErrorr   Zstr)r!   r5   Zunicode_valuesZuniZerrrB   r#   r:   ZParser.parse_unicode_values_   s    ++	3!00288=N:HV.3SUI.c#b'2..NV "02!5~?4? W 	3s3x22	3s-   #A' A"A"A' "A' 'B2BBc                s    V P                  R 4       V P                  p\        P                  ! V P	                  4       VR7      pV P                  R4       V# )r?   r4   ZEND_ENUM)r8   r1   r   ZEnumr[   )r!   r5   rA   r2   r#   r@   ZParser.parse_enum_	  sG    V$++xx,,.BZ(r%   c           	     s*   . pV P                   pV P                  R9   Edj   V P                  R8X  d$   V P                  4       pVP                  V4       KF  V P                  R 8X  dJ   V P	                  R 4       V P                  4       pVP                  \        P                  ! WBR7      4       K  V P                  R8X  dK   V P	                  R4       V P                  4       pVP                  \        P                  ! W@VR7      4       K  V P                  R8X  g   EK  V P	                  R4       V P                  4       pV P	                  R4       V P                  4       pVP                  \        P                  ! WVWR7      4       EK{  \        V4      # )ro   GROUPRANGEr?   r4   ri   )ro   ru   rv   r?   )r1   r   r@   r/   r8   r7   r   Z	GlyphNameZ	GroupNameZRanger^   )r!   r\   r5   rA   r'   startendrJ   r#   r[   ZParser.parse_coverage_  s0   ++"EE6)'')%!!W,$$W-**,d FG!!W,$$W-**,d8 LM!!W,$$W-++-$$T*))+		%d NOXr%   c                s8    V P                   P                  V4      # r   )r   r<   )r!   Z
group_namer"   r#   resolve_groupZParser.resolve_group'  s    ||##J//r%   c                s8    V P                   P                  W4      # r   )r   range)r!   rw   rx      &&&r#   glyph_rangeZParser.glyph_range*  s    ||!!%--r%   c                s    V P                   pV P                  pV P                  4       p\        P                  ! W#VR 7      pV# r4   r1   r,   r9   r   SettingDefinition)r!   r5   Z	ppem_namevaluesettingrB   r#   r   ZParser.parse_ppem_-  s;    ++OO	##%''	8Lr%   c                sj    V P                   pV P                  pR p\        P                  ! W#VR7      pV# )Tr4   )r1   r,   r   r   r!   r5   r'   r   r   rB   r#   r   ZParser.parse_noarg_option_4  s2    ++''hGr%   c                s    V P                   pV P                  pV P                  4       V P                  4       V P                  4       3p\        P                  ! W#VR 7      pV# r}   r~   r   rB   r#   r   ZParser.parse_cmap_format;  sT    ++$$&(;(;(=t?R?R?TU''hGr%   c                sh    V P                   \        P                  J ;'       d    V P                  V8H  # r   )cur_token_type_r    rC   r,   )r!   Zkr"   r#   r0   ZParser.is_cur_keyword_B  s(    $$

2NNA9MNr%   c                    V P                  4        V P                  \        P                  Jd   \	        R V P
                  4      hV P                  # )zExpected a string)r    r   r    rR   r   r1   r,   r!      &r#   r7   ZParser.expect_string_E  >    u||32D4L4LMMr%   c                s    V P                  4        V P                  \        P                  J d   V P                  V8X  d   V P                  # \        R V,          V P                  4      h)zExpected "%s"r    r   r    rC   r,   r   r1   )r!   Zkeywordr"   r#   r8   ZParser.expect_keyword_K  sM    5::-$//W2L??"?W4d6N6NOOr%   c                s    V P                  4        V P                  \        P                  J d   V P                  # \        R V P                  4      h)zExpected a namer   r   r   r#   r;   ZParser.expect_name_Q  s>    5::-??",d.F.FGGr%   c                r   )zExpected a number)r    r   r    ZNUMBERr   r1   r,   r   r   r#   r9   ZParser.expect_number_W  r   r%   c                sF   V P                   V P                  V P                  uV n        V n        V n         V P                  R 4      '       d   \        hV P                  P                  4       w  V n         V n        V n        R#   \         d    RRuT n         T n         R# i ; i)r*   N)
r   r   r   r   r,   r1   r0   ZStopIterationr)   Znextr   r   r#   r    ZParser.advance_lexer_]  s    !!%% 	Hdot/G
		C##E**##
   "	% ) 	C7;T3D!4#3	Cs   A
B B B )r   r,   r1   r   r   r   r   r   r)   r   r   r   r   r   N)'__name__
__module____qualname____firstlineno__r$   r   r3   r   r   r   rG   rL   r
   rS   rT   rU   rd   re   rf   rg   r   rt   rn   r:   r@   r[   ry   r|   r   r   r   r0   r7   r8   r;   r9   r    __static_attributes____classdictcell__Z__classdict__   @r#   r   r      s     , #J$!F$ Un6)V&$"6!F O@@.0.OPHC Cr%   r   c                   sB   a  ] tR tRt o R tR tR tR tR	R ltRt	V t
R# )
r   io  c                    / .V n         R # r   scopes_r   r   r#   r$   ZSymbolTable.__init__p      tr%   c                <    V P                   P                  / 4       R # r   r   r/   r   r   r#   rF   ZSymbolTable.enter_scopes      Br%   c                s:    V P                   P                  4        R # r   )r   Zpopr   r   r#   rI   ZSymbolTable.exit_scopev  s    r%   c                s0    W P                   R,          V&   R# )   Nir   )r!   r'   itemr{   r#   r=   ZSymbolTable.definey  s    !%Rr%   c                s    \        V P                  4       F   pVP                  V4      pV'       g   K  Vu # 	  V'       d7   X F0  pVP                  4       VP                  4       8X  g   K(  W5,          u # 	  R # r   )reversedr   ZgetZlower)r!   r'   case_insensitivescoper   Zkey   &&&   r#   r<   ZSymbolTable.resolve|  s\    dll+E99T?Dt , 99;$**,. :%  r%   r   N)T)r   r   r   r   r$   rF   rI   r=   r<   r   r   r   r   r#   r   r   o  s#      &	 	r%   r   c                   s<   a  ] tR tRt o R tR tRR ltR tRtV t	R# )	r   i  c                r   r   r   r   r   r#   r$   ZOrderedSymbolTable.__init__  r   r%   c                r   r   r   r   r   r#   rF   ZOrderedSymbolTable.enter_scope  r   r%   c                s4    \         P                  WVR 7       R# ))r   N)r   r<   )r!   r'   r   r{   r#   r<   ZOrderedSymbolTable.resolve  s    D9IJr%   c                sB   \        V P                  4       F  pW9   g   K  W#9   g   K  \        VP                  4       4      P	                  V4      p\        VP                  4       4      P	                  V4      p\        VP                  4       4      WE^,            u # 	  R# )r   N)r   r   Zlistr.   Zindex)r!   rw   rx   r   Z	start_idxZend_idxr   r#   rz   ZOrderedSymbolTable.range  ss    dll+E~#, .44U;	uzz|,2237EJJL))kBB	 ,
 r%   r   N)F)
r   r   r   r   r$   rF   r<   rz   r   r   r   r   r#   r   r     s      K r%   r   )ZfontTools.voltLib.astZvoltLibr   ZfontTools.voltLib.lexerr    ZfontTools.voltLib.errorr   Zior   r-   Zobjectr   r   r   ) r%   r#   <module>r      s    # # ) 0  ##%%%"$9 "7&. V	CV V	Cr& 2 r%   