
    hTa                         S SK Js  Jr  S SKJr  S SKJr  S SKJr  SSSSS	S
S
S
SSSSS.r	 " S S\
5      r " S S\
5      r " S S\5      rg)    N)Lexer)VoltLibError)openparse_def_glyph_parse_def_group_parse_def_script_parse_def_lookup_parse_def_anchor_parse_ppem_parse_noarg_option_parse_cmap_format)	DEF_GLYPH	DEF_GROUP
DEF_SCRIPT
DEF_LOOKUP
DEF_ANCHOR	GRID_PPEMPRESENTATION_PPEMPPOSITIONING_PPEMCOMPILER_USEEXTENSIONLOOKUPSCOMPILER_USEPAIRPOSFORMAT2CMAP_FORMATDO_NOT_TOUCH_CMAPc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S#r%g$)%Parser   c                 J   [         R                  " 5       U l        [        5       U l        [        5       U l        0 U l        [        5       U l        [        5       U l	        [        5       U l
        Su  U l        U l        S U l        U R                  U5        U R                  5         g )NNN)astVoltFiledoc_OrderedSymbolTableglyphs_SymbolTablegroups_anchors_scripts_langs_lookups_next_token_type_next_token_next_token_location_make_lexer_advance_lexer_)selfpaths     J/var/www/html/env/lib/python3.13/site-packages/fontTools/voltLib/parser.py__init__Parser.__init__   sv    LLN	)+"}#!m#2>/t/$(!    c                     [        US5      (       a  [        USS 5      nUR                  5       nO'Un[        US5       nUR                  5       nS S S 5        [	        WU5      U l        g ! , (       d  f       N = f)Nreadnamer)hasattrgetattrr6   r   r   lexer_)r/   file_or_pathfilenamedatafs        r1   r-   Parser.make_lexer_$   sc    <((|VT:H$$&D#HlC(Avvx )D(+ )(s   A))
A7c           	         U R                   R                  nU R                  b  U R                  5         U R                  [
        R                  5       ;   a4  [        U [
        U R                     5      nUR                  U" 5       5        OfU R                  S5      (       a   U R                   $ [        SSR                  [        [
        R                  5       5      5      -   U R                  5      eU R                  b  M  U R                   $ )NENDz	Expected z, )r!   
statementsr*   r.   
cur_token_PARSE_FUNCSkeysr:   appendis_cur_keyword_r   joinsortedcur_token_location_)r/   rC   funcs      r1   parseParser.parse.   s    YY))
##/!+"2"2"44t[%AB!!$&)%%e,, yy	 #$))F;3C3C3E,F"GG,,  ##/ yyr4   c           	         U R                  S5      (       d   eU R                  nU R                  5       nU R                  S5        U R	                  5       nUS:  a  [        SU R                  5      eS nU R                  S:X  aB  U R                  S5        U R	                  5       /nUS   S:  a  [        SU R                  5      eO1U R                  S:X  a!  U R                  S5        U R                  5       nS nU R                  S:X  a)  U R                  S5        U R                  5       nUS	;   d   eS nU R                  S
:X  a!  U R                  S
5        U R	                  5       nU R                  S5        U R                  R                  U5      b  [        SX#4-  U5      e[        R                  " X#XEXaS9nU R                  R                  X'5        U$ )Nr   IDr   zInvalid glyph IDUNICODEzInvalid glyph UNICODEUNICODEVALUESTYPE)BASELIGATUREMARK	COMPONENT
COMPONENTS	END_GLYPHz#Glyph "%s" (gid %i) already definedlocation)rH   rK   expect_string_expect_keyword_expect_number_r   r+   parse_unicode_values_expect_name_r#   resolver   GlyphDefinitiondefine)r/   r[   r7   gidgunicodegtype
components	def_glyphs           r1   r   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,r4   c                    U R                  S5      (       d   eU R                  nU R                  5       nS nU R                  S:X  a  U R	                  5       nU R                  S5        U R                  R                  U5      b  [        SU-  U5      e[        R                  " X#US9nU R                  R                  X$5        U$ )Nr   ENUM	END_GROUPzBGlyph group "%s" already defined, group names are case insensitiverZ   )rH   rK   r\   r+   parse_enum_r]   r%   ra   r   r   GroupDefinitionrc   )r/   r[   r7   enum	def_groups        r1   r   Parser.parse_def_group_c   s    ##K0000++""$v%##%D[)<<%1359: 
 ''XF	D,r4   c                    U R                  S5      (       d   eU R                  nS nU R                  S:X  a!  U R                  S5        U R	                  5       nU R                  S5        U R	                  5       nU R
                  R                  U5      b  [        SU-  U5      eU R                  R                  5         / nU R                  S:w  a  U R                  5         U R                  5       nU R                  S5        U R                  R                  UR                  5      b  [        SUR                  < SU< S	3U5      eU R                  R                  UR                  U5        UR                  U5        U R                  S:w  a  M  U R                  S5        U R                  R                  5         [         R"                  " X#XAS
9nU R
                  R                  X65        U$ )Nr   NAMETAGz=Script "%s" already defined, script tags are case insensitive
END_SCRIPTEND_LANGSYSz
Language "z" already defined in script "z%", language tags are case insensitiverZ   )rH   rK   r+   r]   r\   r'   ra   r   r(   enter_scoper.   parse_langsys_tagrc   rG   
exit_scoper   ScriptDefinition)r/   r[   r7   ry   langslang
def_scripts          r1   r   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-r4   c                    U R                  S5      (       d   eU R                  nS nU R                  S:X  a!  U R                  S5        U R	                  5       nU R                  S5        U R	                  5       n/ nU R                  S:w  aT  U R                  5         U R                  5       nU R                  S5        UR                  U5        U R                  S:w  a  MT  [        R                  " X#XAS9nU$ )NDEF_LANGSYSrs   rt   rv   END_FEATURErZ   )
rH   rK   r+   r]   r\   r.   parse_feature_rG   r   LangSysDefinition)r/   r[   r7   ry   featuresfeaturedef_langsyss          r1   rx   Parser.parse_langsys_   s    ##M2222++v%  (&&(DU#!!#-/!))+G  /OOG$	 -/
 ++DxSr4   c                    U R                  S5      (       d   eU R                  nU R                  S5        U R                  5       nU R                  S5        U R                  5       n/ nU R                  S:w  aD  U R                  S5        U R                  5       nUR                  U5        U R                  S:w  a  MD  [        R                  " X#XAS9nU$ )NDEF_FEATURErs   rt   r   LOOKUPrZ   )rH   rK   r]   r\   r+   rG   r   FeatureDefinition)r/   r[   r7   ry   lookupslookupr   s          r1   r   Parser.parse_feature_   s    ##M2222++V$""$U#!!#-/  *((*FNN6"	 -/
 ''7Nr4   c                 f   U R                  S5      (       d   eU R                  nU R                  5       nUS   R                  5       (       d  [	        SU-  U5      eU R
                  R                  U5      b  [	        SU-  U5      eSnU R                  S:X  a  U R                  5         O"U R                  S:X  a  U R                  5         SnSnS nU R                  S	:X  a  U R                  5         U R                  S
:X  a!  U R                  5         U R                  5       nOU R                  S:X  a  U R                  5         OU R                  S:X  a  U R                  5         SnOjU R                  [        R                  :X  a  U R                  5       nO;[	        SU R                  -  U5      eU R                  S:X  a  U R                  5         SnS nU R                  S:X  a)  U R                  S5        U R                  5       nUS;   d   eS nU R                  S:X  a  U R                  S5        SnS nU R                  S:X  a1  U R                  S5        U R                  5       R                  SS5      n/ n	U R                  S;   a"  U R                  5       n	U R                  S;   a  M"  U R                  5       n
S nS nU
S:X  a  U R!                  U5      nO&U
S:X  a  U R#                  5       nO[	        SU
-  U5      e[$        R&                  " UUUUUUUU	UUUS9nU R
                  R)                  X-5        U$ )Nr   r   z)Lookup name "%s" must start with a letterz>Lookup "%s" already defined, lookup names are case insensitiveTPROCESS_BASE	SKIP_BASEFPROCESS_MARKSMARK_GLYPH_SETALLNONEz3Expected ALL, NONE, MARK_GLYPH_SET or an ID. Got %s
SKIP_MARKS	DIRECTION)LTRRTLREVERSALCOMMENTSz\n
EXCEPT_CONTEXT
IN_CONTEXTAS_SUBSTITUTIONAS_POSITIONz/Expected AS_SUBSTITUTION or AS_POSITION. Got %srZ   )rH   rK   r\   isalphar   r)   ra   r+   r.   r*   r   STRINGr]   r`   replaceparse_context_parse_substitution_parse_position_r   LookupDefinitionrc   )r/   r[   r7   process_baseprocess_marksmark_glyph_set	directionreversalcommentscontextas_pos_or_subsubpos
def_lookups                 r1   r	   Parser.parse_def_lookup_   s6   ##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 "BB))+--**84Cm+&&(CDV  ))

 	T.r4   c                    U R                   n/ nU R                  S;   a  S nS nU R                  5       nU R                  S:w  a  / n/ nU R                  S;   a[  U R                  5       nU R                  5       nUS:X  a  UR	                  U5        OUR	                  U5        U R                  S;   a  M[  U R                  S5        [        R                  " XVXqS9nUR	                  U5        OU R                  S5        U R                  S;   a  M  U$ )Nr   END_CONTEXT)LEFTRIGHTr   rZ   )rK   r+   r`   parse_coverage_rG   r]   r   ContextDefinition)	r/   r[   contextssidecoverageex_or_inleftrightr   s	            r1   r   Parser.parse_context_  s   ++"BBDH((*H=0&&*;;,,.D#335Hv~H-X. &&*;; $$]3//E ($$]3+ "BB, r4   c                 &   U R                  S5      (       d   eU R                  n/ n/ nU R                  S:w  a  [        SU5      eU R                  S:X  a  U R	                  S5        UR                  U R                  5       5        U R	                  S5        UR                  U R                  5       5        U R	                  S5        U R                  S:X  a  M  U R	                  S5        [        U Vs/ s H  n[        U5      PM     sn5      n[        U Vs/ s H  n[        U5      PM     sn5      nUS:  a  US:  d  U(       a  US:  d  US:  a  [        SU5      e[        [        [        U5      [        U5      5      5      nUS:X  a:  US:X  a4  U(       a  [        R                  " XS	9n	U	$ [        R                  " XS	9n	 U	$ US:X  a  US:  a  [        R                  " XS	9n	U	$ US:  a  US:X  a  [        R                   " XS	9n	W	$ s  snf s  snf )
Nr   SUBzExpected SUBWITHEND_SUBEND_SUBSTITUTION   zInvalid substitution typerZ   )rH   rK   r+   r   r]   rG   r   maxlendictziptupler   +SubstitutionReverseChainingSingleDefinitionSubstitutionSingleDefinitionSubstitutionMultipleDefinitionSubstitutionLigatureDefinition)
r/   r   r[   srcdestcovmax_srcmax_destmappingr   s
             r1   r   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aKHqL'A+A:HEEs5:uT{34a<HMEE 
 66wR
 
	 \hl44WPC 
 q[X]44WPC
' 01s   2H	Hc                 j   U R                  S5      (       d   eU R                  nU R                  5       nUS;  a  [        SU5      eUS:X  a  U R	                  5       nODUS:X  a  U R                  5       nO-US:X  a  U R                  5       nOUS:X  a  U R                  5       nU R                  S5        W$ )	Nr   )ATTACHATTACH_CURSIVEADJUST_PAIRADJUST_SINGLEz;Expected ATTACH, ATTACH_CURSIVE, ADJUST_PAIR, ADJUST_SINGLEr   r   r   r   END_POSITION)	rH   rK   r`   r   parse_attach_parse_attach_cursive_parse_adjust_pair_parse_adjust_single_r]   )r/   r[   pos_typepositions       r1   r   Parser.parse_position_O  s    ##M2222++$$&WWMx  x))+H))113H&..0H(002H^,r4   c                    U R                  S5      (       d   eU R                  nU R                  5       n/ nU R                  S5        U R                  S:w  af  U R                  5       nU R                  S5        U R                  S5        U R                  5       nUR                  XE45        U R                  S:w  a  Mf  U R                  S5        [        R                  " X#US9nU$ )Nr   TO
END_ATTACHATANCHORrZ   )	rH   rK   r   r]   r+   r\   rG   r   PositionAttachDefinition)r/   r[   r   coverage_tor   anchor_namer   s          r1   r   Parser.parse_attach_b  s    ##H----++'')T",.&&(C  &  *--/K12 ,. 	\*//H
 r4   c                    U R                  S5      (       d   eU R                  n/ n/ nU R                  S:w  aB  U R                  S5        UR	                  U R                  5       5        U R                  S:w  a  MB  U R                  S:w  aB  U R                  S5        UR	                  U R                  5       5        U R                  S:w  a  MB  U R                  S5        [        R                  " X#US9nU$ )Nr   ENTEREXITr   rZ   )rH   rK   r+   r]   rG   r   r   PositionAttachCursiveDefinition)r/   r[   coverages_exitcoverages_enterr   s        r1   r   Parser.parse_attach_cursive_t  s    ##$45555++')  (!!$"6"6"89 ') ,.  )""4#7#7#9: ,. 	\*66h
 r4   c                    U R                  S5      (       d   eU R                  n/ n/ n0 nU R                  S:X  aC  U R                  5         U R	                  5       nUR                  U5        U R                  S:X  a  MC  U R                  S:X  aC  U R                  5         U R	                  5       nUR                  U5        U R                  S:X  a  MC  U R                  S:w  aj  U R                  5       nU R                  5       nU R                  S5        U R                  5       n	U R                  5       n
X4XGU4'   U R                  S:w  a  Mj  U R                  S5        [        R                  " X#XAS9nU$ )Nr   FIRSTSECOND
END_ADJUSTBYrZ   )rH   rK   r+   r.   r   rG   r^   r]   
parse_pos_r   PositionAdjustPairDefinition)r/   r[   coverages_1coverages_2adjust_pair
coverage_1
coverage_2id_1id_2pos_1pos_2r   s               r1   r   Parser.parse_adjust_pair_  s]   ##M2222++')!--/Jz* ') (*!--/Jz* (* ,.&&(D&&(D  &OO%EOO%E).Kt% ,. 	\*33k
 r4   c                 f   U R                  S5      (       d   eU R                  n/ nU R                  S:w  aU  U R                  5       nU R	                  S5        U R                  5       nUR                  X445        U R                  S:w  a  MU  U R	                  S5        [        R                  " X!S9nU$ )Nr   r   r   rZ   )	rH   rK   r+   r   r]   r   rG   r   PositionAdjustSingleDefinition)r/   r[   adjust_single	coveragesr   r   s         r1   r   Parser.parse_adjust_single_  s    ##O4444++,.,,.I  &//#C  )!12	 ,.
 	\*55mWr4   c           
      6   U R                  S5      (       d   eU R                  nU R                  5       nU R                  S5        U R	                  5       nU R                  S5        U R                  5       nU R                  S5        U R	                  5       nX@R                  ;   a@  U R                  U   R                  U5      nUb  UR                  U:X  a  [        SU-  U5      eU R                  S:X  a  SnU R                  5         OSnU R                  S	5        U R                  5       nU R                  S
5        [        R                  " X#XEXxUS9nX@R                  ;  a  [        5       U R                  U'   U R                  U   R!                  X&5        U$ )Nr   ONGLYPHrW   z>Anchor "%s" already defined, anchor names are case insensitiveLOCKEDTFr   
END_ANCHORrZ   )rH   rK   r\   r]   r^   r`   r&   ra   	componentr   r+   r.   r   r   AnchorDefinitionr$   rc   )	r/   r[   r7   rd   
glyph_namer  anchorlockedr   s	            r1   r
   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r4   c                     U R                  5         U R                  S5      (       d   eU R                  5       nU R                  S5        U R                  5       nX4$ )N	ADJUST_BYr   )r.   rH   r^   r]   )r/   
adjustmentsizes      r1   parse_adjust_by_Parser.parse_adjust_by_  sX    ##K0000((*
T"""$r4   c                 N   U R                  5         U R                  nU R                  S5      (       d   U5       eS nS nS n0 n0 n0 nU R                  S:X  aX  U R                  5         U R	                  5       nU R                  S:X  a(  U R                  5       u  pXU	'   U R                  S:X  a  M(  U R                  S:X  aX  U R                  5         U R	                  5       nU R                  S:X  a(  U R                  5       u  pXU	'   U R                  S:X  a  M(  U R                  S:X  aX  U R                  5         U R	                  5       nU R                  S:X  a(  U R                  5       u  pXU	'   U R                  S:X  a  M(  U R                  S5        [        R                  " X#XEXg5      $ )NPOSADVr  DXDYEND_POS)	r.   rK   rH   r+   r^   r  r]   r   Pos)
r/   r[   advdxdyadv_adjust_bydx_adjust_bydy_adjust_byr  r  s
             r1   r   Parser.parse_pos_  s   ++##E**4H4*u$!%%'C""k1#'#8#8#: 
&0d# ""k1 t#!$$&B""k1#'#8#8#: 
%/T" ""k1 t#!$$&B""k1#'#8#8#: 
%/T" ""k1 	Y'wws<NNr4   c                    U R                   n U R                  5       R                  S5      nU Vs/ s H  o3S:w  d  M
  [        USS  S5      PM     nnU/ :w  a  U$ S $ s  snf ! [         a  n[        [        U5      U5      eS nAff = f)N,       )rK   r\   splitint
ValueErrorr   str)r/   r[   unicode_valuesunierrs        r1   r_   Parser.parse_unicode_values_  s    ++	3!00288=N:HV.3SUI.c#ab'2..NV "02!5~?4? W 	3s3x22	3s-   #A" 	AAA" A" "
B,BBc                     U R                  S5        U R                  n[        R                  " U R	                  5       US9nU R                  S5        U$ )Nrk   rZ   END_ENUM)r]   rK   r   Enumr   )r/   r[   ro   s      r1   rm   Parser.parse_enum_  sG    V$++xx,,.BZ(r4   c           	      $   / nU R                   nU R                  S;   Gag  U R                  S:X  a#  U R                  5       nUR                  U5        GO!U R                  S:X  aE  U R	                  S5        U R                  5       nUR                  [        R                  " XBS95        OU R                  S:X  aF  U R	                  S5        U R                  5       nUR                  [        R                  " X@US95        OvU R                  S:X  af  U R	                  S5        U R                  5       nU R	                  S5        U R                  5       nUR                  [        R                  " XVXS95        U R                  S;   a  GMg  [        U5      $ )N)r  GROUPRANGErk   rk   r  rZ   r=  r>  r   )rK   r+   rm   rG   r]   r\   r   	GlyphName	GroupNameRanger   )r/   r   r[   ro   r7   startends          r1   r   Parser.parse_coverage_  sC   ++"EE6)'')%!!W,$$W-**,d FG!!W,$$W-**,d8 LM!!W,$$W-++-$$T*))+		%d NO# "EE$ Xr4   c                 8    U R                   R                  U5      $ N)r%   ra   )r/   
group_names     r1   resolve_groupParser.resolve_group  s    ||##J//r4   c                 8    U R                   R                  X5      $ rF  )r#   range)r/   rB  rC  s      r1   glyph_rangeParser.glyph_range"  s    ||!!%--r4   c                     U R                   nU R                  nU R                  5       n[        R                  " X#US9nU$ NrZ   rK   rD   r^   r   SettingDefinition)r/   r[   	ppem_namevaluesettings        r1   r   Parser.parse_ppem_%  s;    ++OO	##%''	8Lr4   c                 d    U R                   nU R                  nSn[        R                  " X#US9nU$ )NTrZ   )rK   rD   r   rQ  r/   r[   r7   rS  rT  s        r1   r   Parser.parse_noarg_option_,  s2    ++''hGr4   c                     U R                   nU R                  nU R                  5       U R                  5       U R                  5       4n[        R                  " X#US9nU$ rO  rP  rW  s        r1   r   Parser.parse_cmap_format3  sT    ++$$&(;(;(=t?R?R?TU''hGr4   c                 f    U R                   [        R                  L =(       a    U R                  U:H  $ rF  )cur_token_type_r   rs   rD   )r/   ks     r1   rH   Parser.is_cur_keyword_:  s%    $$

2NA9MNr4   c                     U R                  5         U R                  [        R                  La  [	        SU R
                  5      eU R                  $ )NzExpected a string)r.   r\  r   r   r   rK   rD   r/   s    r1   r\   Parser.expect_string_=  >    u||32D4L4LMMr4   c                     U R                  5         U R                  [        R                  L a  U R                  U:X  a  U R                  $ [        SU-  U R                  5      e)NzExpected "%s"r.   r\  r   rs   rD   r   rK   )r/   keywords     r1   r]   Parser.expect_keyword_C  sM    5::-$//W2L??"?W4d6N6NOOr4   c                     U R                  5         U R                  [        R                  L a  U R                  $ [        SU R                  5      e)NzExpected a namerd  r`  s    r1   r`   Parser.expect_name_I  s>    5::-??",d.F.FGGr4   c                     U R                  5         U R                  [        R                  La  [	        SU R
                  5      eU R                  $ )NzExpected a number)r.   r\  r   NUMBERr   rK   rD   r`  s    r1   r^   Parser.expect_number_O  rb  r4   c                 >   U R                   U R                  U R                  sU l        U l        U l         U R                  S5      (       a  [        eU R                  R                  5       u  U l         U l        U l        g ! [         a    Su  U l         U l         g f = f)NrB   r   )
r*   r+   r,   r\  rD   rK   rH   StopIterationr;   nextr`  s    r1   r.   Parser.advance_lexer_U  s    !!%% 	Hdot/G
		C##E**##
   "	% ) 	C6B3D!4#3	Cs   A	B   BB)r&   rD   rK   r\  r!   r#   r%   r(   r;   r)   r+   r,   r*   r'   N)&__name__
__module____qualname____firstlineno__r2   r-   rM   r   r   r   rx   r   r	   r   r   r   r   r   r   r   r
   r  r   r_   rm   r   rH  rL  r   r   r   rH   r\   r]   r`   r^   r.   __static_attributes__ r4   r1   r   r      s    , #J$!F$ Un6!F&$"6!F O@@.0.OPHCr4   r   c                   6    \ rS rSrS rS rS rS rS	S jrSr	g)
r$   ig  c                     0 /U l         g rF  scopes_r`  s    r1   r2   SymbolTable.__init__h      tr4   c                 :    U R                   R                  0 5        g rF  ry  rG   r`  s    r1   rw   SymbolTable.enter_scopek      Br4   c                 8    U R                   R                  5         g rF  )ry  popr`  s    r1   rz   SymbolTable.exit_scopen  s    r4   c                 &    X R                   S   U'   g )Nrx  )r/   r7   items      r1   rc   SymbolTable.defineq  s    !%Rr4   c                     [        U R                  5       H  nUR                  U5      nU(       d  M  Us  $    U(       a1  W H+  nUR                  5       UR                  5       :X  d  M'  X5   s  $    g rF  )reversedry  getlower)r/   r7   case_insensitivescoper  keys         r1   ra   SymbolTable.resolvet  s\    dll+E99T?Dt , 99;$**,. :%  r4   rx  N)T)
rp  rq  rr  rs  r2   rw   rz   rc   ra   rt  ru  r4   r1   r$   r$   g  s     &	r4   r$   c                   0    \ rS rSrS rS rSS jrS rSrg)	r"   i  c                     0 /U l         g rF  rx  r`  s    r1   r2   OrderedSymbolTable.__init__  r{  r4   c                 :    U R                   R                  0 5        g rF  r}  r`  s    r1   rw   OrderedSymbolTable.enter_scope  r  r4   c                 ,    [         R                  XUS9  g )N)r  )r$   ra   )r/   r7   r  s      r1   ra   OrderedSymbolTable.resolve  s    D9IJr4   c                 4   [        U R                  5       H  nX;   d  M
  X#;   d  M  [        UR                  5       5      R	                  U5      n[        UR                  5       5      R	                  U5      n[        UR                  5       5      XES-    s  $    g )Nr   )r  ry  listrF   index)r/   rB  rC  r  	start_idxend_idxs         r1   rK  OrderedSymbolTable.range  ss    dll+E~#, .44U;	uzz|,2237EJJL))kBB	 ,
 r4   rx  N)F)	rp  rq  rr  rs  r2   rw   ra   rK  rt  ru  r4   r1   r"   r"     s     Kr4   r"   )fontTools.voltLib.astvoltLibr   fontTools.voltLib.lexerr   fontTools.voltLib.errorr   ior   rE   objectr   r$   r"   ru  r4   r1   <module>r     sj    # # ) 0  $#%%%&&$9"7&. N	CV N	Cb& 2 r4   