
    iN              	          S SK r S SKrSSKJr  S r " S S\5      r " S S\5      r " S S	\5      r " S
 S\5      r	 " S S\5      r
 " S S5      r " S S\5      r " S S\5      r " S S5      r\" \5      r\" \5      r\R"                  r\R"                  r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      rS rS r\ R8                  " S5      r\ R8                  " S5      r\ R8                  " S 5      r\ R8                  " S!5      r \ R8                  " S"5      r!\ R8                  " S#5      r"\ R8                  " S$5      r#\ R8                  " S%5      r$\ R8                  " S"5      r%\ R8                  " S&5      r&\ R8                  " S'5      r'S(S)S*S+S,S-S.S/S0.r( " S1 S25      r) " S3 S4\)5      r*S SK+r+ " S5 S6\+RX                  5      r-\.S7:X  a  \+R^                  " 5         gg)8    N   )choplistc                       \ rS rSrSrg)PSException    N__name__
__module____qualname____firstlineno____static_attributes__r       D/home/kodi/my-venv/lib/python3.13/site-packages/pdfminer/psparser.pyr   r          r   r   c                       \ rS rSrSrg)PSEOF   r   Nr	   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PSSyntaxError   r   Nr	   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PSTypeError   r   Nr	   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PSValueError   r   Nr	   r   r   r   r   r      r   r   r   c                       \ rS rSrSrSrg)PSObject$   z0Base class for all PS or PDF-related data types.r   N)r
   r   r   r   __doc__r   r   r   r   r   r   $   s    :r   r   c                   $    \ rS rSrSrS rS rSrg)	PSLiteral-   aE  A class that represents a PostScript literal.

Postscript literals are used as identifiers, such as
variable names, property names and dictionary keys.
Literals are case sensitive and denoted by a preceding
slash sign (e.g. "/Name")

Note: Do not create an instance of PSLiteral directly.
Always use PSLiteralTable.intern().
c                     Xl         g Nnameselfr(   s     r   __init__PSLiteral.__init__:   
    	r   c                      SU R                   -  $ )Nz/%rr'   r*   s    r   __repr__PSLiteral.__repr__>   s    tyy  r   r'   Nr
   r   r   r   r!   r+   r0   r   r   r   r   r#   r#   -   s    	!r   r#   c                   $    \ rS rSrSrS rS rSrg)	PSKeywordD   a6  A class that represents a PostScript keyword.

PostScript keywords are a dozen of predefined words.
Commands and directives in PostScript are expressed by keywords.
They are also used to denote the content boundaries.

Note: Do not create an instance of PSKeyword directly.
Always use PSKeywordTable.intern().
c                     Xl         g r&   r'   r)   s     r   r+   PSKeyword.__init__P   r-   r   c                 8    U R                   R                  S5      $ )Nascii)r(   decoder/   s    r   r0   PSKeyword.__repr__T   s    yy((r   r'   Nr2   r   r   r   r4   r4   D   s    )r   r4   c                   $    \ rS rSrSrS rS rSrg)PSSymbolTableZ   z{A utility class for storing PSLiteral/PSKeyword objects.

Interned objects can be checked its identity with "is" operator.
c                     0 U l         Xl        g r&   dictklass)r*   rB   s     r   r+   PSSymbolTable.__init__a   s    	
r   c                     XR                   ;   a  U R                   U   nU$ U R                  U5      nX R                   U'   U$ r&   r@   )r*   r(   lits      r   internPSSymbolTable.internf   s@    99))D/C 
 **T"C!IIdO
r   r@   N)r
   r   r   r   r!   r+   rF   r   r   r   r   r=   r=   Z   s    

r   r=      {   }   [   ]   <<   >>c                     [        U [        5      (       d%  [        (       a  [        SU < 35      e[	        U 5      $ U R
                  $ )NzLiteral required: )
isinstancer#   STRICTr   strr(   xs    r   literal_namerT   z   4    a##6;<<q6M66Mr   c                     [        U [        5      (       d%  [        (       a  [        SU < 35      e[	        U 5      $ U R
                  $ )NzKeyword required: )rO   r4   rP   r   rQ   r(   rR   s    r   keyword_namerW      rU   r   s   [\r\n]s   \ss   \Ss   [0-9a-fA-F]s   [#/%\[\]()<>{}\s]s   [^\s0-9a-fA-F]s   [0-9a-fA-F]{2}|.s   [^0-9]s   [()\134]s   [0-7]      	   
         (   )   \)   b   t   n   f   rr]   r^   r_   c                       \ rS rSrSrSrSrS rS rS r	S r
S	 rSS j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
) PSBaseParser   zBMost basic PostScript parser that performs only tokenization.
    i   r   c                 2    Xl         U R                  S5        g Nr   )fpseekr*   rj   s     r   r+   PSBaseParser.__init__   s    		!r   c                 b    SU R                   R                  U R                  U R                  4-  $ )Nz<%s: %r, bufpos=%d>)	__class__r
   rj   bufposr/   s    r   r0   PSBaseParser.__repr__   s&    $(?(?$++'VVVr   c                     g r&   r   r/   s    r   flushPSBaseParser.flush       r   c                 $    U R                  5         g r&   )rs   r/   s    r   closePSBaseParser.close   s    

r   c                 4    U R                   U R                  -   $ r&   )rp   charposr/   s    r   tellPSBaseParser.tell   s    {{4<<''r   Nc                 J   U R                   R                  5       nU(       d  U R                  U R                  -   nU R                   R	                  U5        [
        R                  " SXR                   R                  U5      4-  5        U R                   R	                  U5        g )Nzpoll(%d): %r)rj   r{   rp   rz   rk   logginginforead)r*   posnpos0s       r   pollPSBaseParser.poll   si    ww||~++dll*CS^sGGLLO&<<=Tr   c                    U R                   (       a  [        R                   " SU-  5        U R                  R                  U5        Xl        SU l        SU l        U R                  U l        SU l	        SU l
        / U l        g)z0Seeks the parser to the given position.
        zseek: %rr   r   N)debugr~   rj   rk   rp   bufrz   _parse_main_parse1	_curtoken_curtokenpos_tokensr*   r   s     r   rk   PSBaseParser.seek   se     ::MM*s*+S''r   c                 $   U R                   [        U R                  5      :  a  g U R                  R	                  5       U l        U R                  R                  U R                  5      U l        U R                  (       d  [        S5      eSU l         g )NzUnexpected EOFr   )	rz   lenr   rj   r{   rp   r   BUFSIZr   r/   s    r   fillbufPSBaseParser.fillbuf   s_    <<#dhh-'gglln77<<,xx())r   c                    SnU R                   U R                  -   nSn U R                  5         U(       aF  U R                  U R                  U R                  S-    nUS:X  a  X-  nU =R                  S-  sl        O[        R                  U R                  U R                  5      nU(       aM  XR                  U R                  UR                  S5       -  nUR                  S5      U l        USS S:X  a  S	nO6O8XR                  U R                  S -  n[        U R                  5      U l        GM  U R                  (       a  [        R                  " S
U< SU< 35        X!4$ )z<Fetches a next line that ends either with \r or \n.
        r   Fr   rZ   r   Nr\   Tz
nextline: z, )
rp   rz   r   r   EOLsearchendr   r   r~   )r*   linebuflineposeolcms         r   nextlinePSBaseParser.nextline   s    ++,LLNHHT\\$,,q.9:LGLLA%L

488T\\2A88DLLq:: uuQx23<5(C88DLLM22"488}' ( ::MMAB!!r   c              #     #    U R                   R                  SS5        U R                   R                  5       nSnSU:  a  Un[        SXR                  -
  5      nU R                   R                  U5        U R                   R                  X1-
  5      nU(       d   g [        UR                  S5      UR                  S5      5      nUS:X  a  XB-   nOXES U-   v   USU nSnMG  SU:  a  M  g7f)zYFetches a next line backward.

This is used to locate the trailers at the end of a file.
r      r   r\   rZ   r   N)rj   rk   r{   maxr   r   rfind)r*   r   r   prevpossr   s         r   revreadlinesPSBaseParser.revreadlines   s     
 	Qgglln#gGa[[)CGGLLW[)A 	 77'CeCibqE  #g 	s   C(C-,C-c                 f   [         R                  X5      nU(       d  [        U5      $ UR                  S5      nXUS-    nU R                  U-   U l        US:X  a  SU l        U R                  U l        US-   $ US:X  a  SU l        U R                  U l        US-   $ US;   d  UR                  5       (       a  XPl        U R                  U l        US-   $ US:X  a  XPl        U R                  U l        US-   $ UR                  5       (       a  XPl        U R                  U l        US-   $ US:X  a$  SU l        SU l        U R                   U l        US-   $ US	:X  a  SU l        U R"                  U l        US-   $ US
:X  a  SU l        U R$                  U l        US-   $ U R'                  [)        U5      5        US-   $ )Nr   r      %   /r   s   -+   .r]      <   >)NONSPCr   r   startrp   r   r   _parse_commentr   _parse_literalisdigit_parse_number_parse_floatisalpha_parse_keywordparen_parse_string_parse_wopen_parse_wclose
_add_tokenKWDr*   r   ir   jr   s         r   r   PSBaseParser._parse_main  s   MM!q6MGGAJ!H KKM9!DN..DLQ3J$Y DN..DLQ3J%Z199;;N--DLQ3J$YN,,DLQ3JYY[[N..DLQ3J$Y DNDJ--DLQ3J$Y DN,,DLQ3J$Y DN--DLQ3JOOCF#Q3Jr   c                 R    U R                   R                  U R                  U45        g r&   )r   appendr   )r*   objs     r   r   PSBaseParser._add_tokenA  s"    T..45r   c                    [         R                  X5      nU(       d.  U =R                  XS  -  sl        U R                  [	        U5      4$ UR                  S5      nU =R                  XU -  sl        U R                  U l        U$ ri   )r   r   r   r   r   r   r   r   r*   r   r   r   r   s        r   r   PSBaseParser._parse_commentE  sm    JJqNNae#N''Q00GGAJ!a& '' r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a  SU l        U R                  U l        US-   $  U R                  R                  S5      nU R                  [        U5      5        U R                  U l        U$ ! [         a    [        (       a  e Sn NGf = f)Nr   r      #r   zutf-8 )END_LITERALr   r   r   r   hex_parse_literal_hexr   r:   UnicodeDecodeErrorrP   r   LITr   )r*   r   r   r   r   r   utokens          r   r   PSBaseParser._parse_literalQ  s    q$NNae#Nq6MGGAJ!a& !H9DH22DLQ3J	^^**73F
 	F$'' " 	vuF	s   C C54C5c                 z   XUS-    n[         R                  U5      (       a3  [        U R                  5      S:  a  U =R                  U-  sl        US-   $ U R                  (       a4   U =R                  [        [        U R                  S5      /5      -  sl        U R                  U l	        U$ ! [         a     Nf = f)Nr   r      )
HEXmatchr   r   r   bytesint
ValueErrorr   r   r*   r   r   r   s       r   r   PSBaseParser._parse_literal_hexi  s    !H99Q<<CMA-HHMHQ3J88%TXXr):(;"<< **  s   '3B- -
B:9B:c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a+  U =R                  U-  sl        U R
                  U l        US-   $  U R                  [        U R                  5      5        U R                  U l        U$ ! [         a     Nf = f)Nr   r   r   )
END_NUMBERr   r   r   r   r   r   r   r   r   r   r   s         r   r   PSBaseParser._parse_numberv  s    a#NNae#Nq6MGGAJ!a& !H9NNaN,,DLQ3J	OOC/0 ''  		s    $C 
C$#C$c                 ^   [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl         U R                  [        U R                  5      5        U R                  U l	        U$ ! [         a     Nf = fri   )
r   r   r   r   r   r   floatr   r   r   r   s        r   r   PSBaseParser._parse_float  s    a#NNae#Nq6MGGAJ!a& 	OOE$..12 ''  		s   ($B 
B,+B,c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        U R                  S:X  a  SnO(U R                  S:X  a  SnO[        U R                  5      nU R                  U5        U R                  U l        U$ )Nr   s   trueTs   falseF)	END_KEYWORDr   r   r   r   r   r   r   r   r*   r   r   r   r   tokens         r   r   PSBaseParser._parse_keyword  s    q$NNae#Nq6MGGAJ!a& >>W$E^^x'E'E''r   c                 z   [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl        XUS-    nUS:X  a  SU l        U R                  U l        US-   $ US:X  a/  U =R                  S-  sl        U =R                  U-  sl        US-   $ US:X  a@  U =R                  S-  sl        U R                  (       a  U =R                  U-  sl        US-   $ U R                  U R                  5        U R                  U l        US-   $ )Nr   r   r_   r   r]   r^   )
END_STRINGr   r   r   r   oct_parse_string_1r   r   r   r   r   s         r   r   PSBaseParser._parse_string  s   a#NNae#Nq6MGGAJ!a& !H:DH//DLQ3J9JJ!OJNNaNQ3J9JJ!OJzz!#s
'''s
r   c                    XUS-    n[         R                  U5      (       a3  [        U R                  5      S:  a  U =R                  U-  sl        US-   $ U R                  (       aG   U =R                  [        [        U R                  S5      /5      -  sl        U R                  U l	        U$ U[        ;   a  U =R                  [        U   -  sl        U R                  U l	        US-   $ ! [         a     N[f = f)Nr         )
OCT_STRINGr   r   r   r   r   r   r   r   r   
ESC_STRINGr   s       r   r   PSBaseParser._parse_string_1  s    !HA3txx=1#4HHMHQ3J88%TXXq)9(:";;  --DLH
?NNjm+N))s
  s   '3C) )
C65C6c                     XUS-    nUS:X  a-  U R                  [        5        U R                  U l        US-  nU$ U R                  U l        U$ )Nr   r   )r   KEYWORD_DICT_BEGINr   r   _parse_hexstringr   s       r   r   PSBaseParser._parse_wopen  sT    !H9OO./++DLFA   00DLr   c                 v    XUS-    nUS:X  a  U R                  [        5        US-  nU R                  U l        U$ )Nr   r   )r   KEYWORD_DICT_ENDr   r   r   s       r   r   PSBaseParser._parse_wclose  s>    !H9OO,-FA''r   c                    [         R                  X5      nU(       d"  U =R                  XS  -  sl        [        U5      $ UR	                  S5      nU =R                  XU -  sl         [
        R                  S [        R                  SU R                  5      5      nU R                  U5        U R                  U l        U$ ! [         a     Nf = f)Nr   c                 L    [        [        U R                  S5      S5      /5      $ )Nr   r   )r   r   group)r   s    r   <lambda>/PSBaseParser._parse_hexstring.<locals>.<lambda>  s    5#aggaj"2E1F+Gr   r   )END_HEX_STRINGr   r   r   r   HEX_PAIRsubSPCr   r   r   r   r   s         r   r   PSBaseParser._parse_hexstring  s    !!!'NNae#Nq6MGGAJ!a& 	LL!G!$dnn!=?EOOE" ''  		s   (AC 
CCc                 P   U R                   (       dN  U R                  5         U R                  U R                  U R                  5      U l        U R                   (       d  MN  U R                   R                  S5      nU R                  (       a  [        R                  " SU< 35        U$ )Nr   znexttoken: )r   r   r   r   rz   popr   r~   )r*   r   s     r   	nexttokenPSBaseParser.nexttoken  sh    ,,LLN<<$,,?DL ,,,   #::MMU45r   )r   r   r   r   r   rp   rz   rj   r   r   r   )NP   ) r
   r   r   r   r!   r   r   r+   r0   rs   rw   r{   r   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   rf   rf      s    FE
W("	"<2*X
0&"2" r   rf   c                   V    \ 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)PSStackParseri   c                 N    [         R                  X5        U R                  5         g r&   )rf   r+   resetrl   s     r   r+   PSStackParser.__init__  s    d'

r   c                 <    / U l         S U l        / U l        / U l        g r&   )contextcurtypecurstackresultsr/   s    r   r  PSStackParser.reset  s!    r   c                 N    [         R                  X5        U R                  5         g r&   )rf   rk   r  r   s     r   rk   PSStackParser.seek  s    $$

r   c                 :    U R                   R                  U5        g r&   )r  extendr*   objss     r   pushPSStackParser.push  s    T"r   c                 F    U R                   U* S  n/ U R                   U* S & U$ r&   r  )r*   r   r  s      r   r  PSStackParser.pop  s+    }}aRS!qbcr   c                 ,    U R                   n/ U l         U$ r&   r  r  s     r   popallPSStackParser.popall  s    }}r   c                     U R                   (       a  [        R                   " SU< 35        U R                  R                  U5        g )Nzadd_results: )r   r~   r  r  r  s     r   add_resultsPSStackParser.add_results!  s-    ::MMt56D!r   c                     U R                   R                  XR                  U R                  45        U/ sU l        U l        U R                  (       a  [
        R                  " SU< SU< 35        g )Nzstart_type: pos=, type=)r  r   r  r  r   r~   )r*   r   types      r   
start_typePSStackParser.start_type'  sL    S,,>?)-r%t}::MM3EFr   c                 b   U R                   U:w  a  [        SU R                   < SU< 35      eU R                   VVs/ s H  u  p#UPM	     nnnU R                  R	                  5       u  oPl         U l        U R
                  (       a"  [        R
                  " SU< SU< SU< 35        XT4$ s  snnf )NzType mismatch: z != zend_type: pos=r%  z, objs=)r  r   r  r  r  r   r~   )r*   r&  _r   r  r   s         r   end_typePSStackParser.end_type.  s~    <<44<<NOO$(MM2MM2-1\\-=-=-?*lDM::MM#tTRS{	 3s   B+c                     g r&   r   )r*   r   r   s      r   
do_keywordPSStackParser.do_keyword7  ru   r   c                 J   U R                   (       Gd  U R                  5       u  p[        U[        [        [
        [        [        45      (       a  U R                  X45        GOnU[        :X  a  U R                  US5        GOPU[        :X  a#   U R                  U R                  S5      5        GO#U[        :X  a  U R                  US5        GOU[         :X  ad   U R                  S5      u  p[#        U5      S-  S:w  a  [%        SU< 35      e['        S [)        SU5       5       5      nU R                  X45        OU[*        :X  a  U R                  US5        OzU[,        :X  a"   U R                  U R                  S5      5        ONU R.                  (       a,  [0        R.                  " SU< S	U< S
U R2                  < 35        U R5                  X5        U R6                  (       a  GM  U R9                  5         U R                   (       d  GM  U R                   R;                  S5      nU R.                  (       a  [0        R.                  " SU< 35        U$ ! [         a    [        (       a  e  Nf = f! [         a    [        (       a  e  Nf = f! [         a    [        (       a  e  Nf = f)zYields a list of objects.

Returns keywords, literals, strings, numbers, arrays and dictionaries.
Arrays and dictionaries are represented as Python lists and dictionaries.
adr   r   zInvalid dictionary construct: c              3   J   #    U  H  u  pUc  M
  [        U5      U4v   M     g 7fr&   )rT   ).0kvs      r   	<genexpr>+PSStackParser.nextobject.<locals>.<genexpr>Z  s#     c@QfqUV1l1oq1@Qs   	##pzdo_keyword: pos=z, token=z, stack=znextobject: )r  r  rO   r   r   boolr   r#   r  KEYWORD_ARRAY_BEGINr'  KEYWORD_ARRAY_ENDr+  r   rP   r   r   r   r   rA   r   KEYWORD_PROC_BEGINKEYWORD_PROC_ENDr   r~   r  r.  r  rs   r  )r*   r   r   r  r2  r   s         r   
nextobjectPSStackParser.nextobject:  s    ,,,>>+LS%#udE9!EFF		3,'--S)++IIdmmC01 ,,S)**	"&--"4KS4y1})+RV,XYYcD@QccAIIsh' ,,S)**IIdmmC01
 ::MM#&t}}#> ?+||

c ,,,d llq!::MMc34
Q # v  # v  # v s7    I A"I- " J	 I*)I*-JJ	J"!J")r  r  r  r  N)r
   r   r   r   r+   r  rk   r  r  r  r"  r'  r+  r.  r?  r   r   r   r   r	  r	     s9    



;r   r	  c                      \ rS rSrSr/ S\" S5      4PS\" S5      4PS\" S5      4PS	\" S
5      4PS\" S5      4PS\" S5      4PS\" S5      4PS\" S5      4PS\" S5      4PSPSPSPSPSPSPSPSPSPSPSPS PS!PS"PS#PS$PS%PS&PS'\" S(5      4PS)\" S5      4PS*\" S+5      4PS,\" S-5      4PS.PS/\" S05      4PS1\" S25      4PS3\" S45      4PS5\" S65      4PS7PS8PS9\" S:5      4PS;\" S<5      4PS=\" S>5      4PS?\" S@5      4PSAPSB\" SC5      4PrS\" S5      4S\" S5      4S\" S5      4S\" S5      4SSSSSSSSSSSS S!S"S#S$S%S&S)\" S5      4S*\" S+5      4S,SD/4S5SESF/4S=S@SG04/rSH r	SI r
SJ rSK rSLrgM)NTestPSBaseParseri}  s  %!PS
begin end
 "  @ #
/a/BCD /Some_Name /foo#5f#xbaa
0 +1 -2 .5 1.234
(abc) () (abc ( def ) ghi)
(def\040\0\0404ghi) (bach\\slask) (foo\nbaa)
(this % is not a comment.)
(foo
baa)
(foo\
baa)
<> <20> < 40 4020 >
<abcd00
12345>
func/a/b{(c)do*}def
[ 1 (z) ! ]
<< /foo (bar) >>
   s   beginr   s   endr      "r      @   r   r   r1     BCD   	Some_Name)   foo_xbaa)6   r   )8   r   );   )>   g      ?)A   gX9v?)G   s   abc)M   r   )r  s   abc ( def ) ghi)b   s
   def   4ghi)v   s
   bach\slask)      foo
baa)   s   this % is not a comment.)   rX  )   s   foobaa)   r   )       )   s   @@ )   s    4   s   func      b   rH   )      c   s   do*   rI      s   def   rJ   )   r   )      z      !   rK   i  rL   i  foo)i
     bari  rM   rg  r   rn  rs  c                     SSK Jn   " S S[        5      nU" U" U5      5      n/ n  UR                  UR	                  5       5        M!  ! [
         a     U$ f = f)Nr   BytesIOc                       \ rS rSrS rSrg)-TestPSBaseParser.get_tokens.<locals>.MyParseri  c                 >    U R                   " U R                  5       6   g r&   r"  r  r/   s    r   rs   3TestPSBaseParser.get_tokens.<locals>.MyParser.flush        $++-0r   r   Nr
   r   r   r   rs   r   r   r   r   MyParserrx        1r   r~  )iorv  rf   r   r  r   r*   r   rv  r~  parserrs         r   
get_tokensTestPSBaseParser.get_tokens  s_    	1| 	1 '!*%	))+,  		   "A	 	
AAc                     SSK Jn   " S S[        5      nU" U" U5      5      n/ n  UR                  UR	                  5       5        M!  ! [
         a     U$ f = f)Nr   ru  c                       \ rS rSrS rSrg).TestPSBaseParser.get_objects.<locals>.MyParseri  c                 >    U R                   " U R                  5       6   g r&   rz  r/   s    r   rs   4TestPSBaseParser.get_objects.<locals>.MyParser.flush  r|  r   r   Nr}  r   r   r   r~  r    r  r   r~  )r  rv  r	  r   r?  r   r  s         r   get_objectsTestPSBaseParser.get_objects  s_    	1} 	1 '!*%	**,-  		r  c                     U R                  U R                  5      n[        U5        U R                  XR                  5        g r&   )r  TESTDATAprintassertEqualTOKENS)r*   tokenss     r   test_1TestPSBaseParser.test_1  s0    /f-r   c                     U R                  U R                  5      n[        U5        U R                  XR                  5        g r&   )r  r  r  r  OBJSr  s     r   test_2TestPSBaseParser.test_2  s2    .dyy)r   r   N)r
   r   r   r   r  r   r   r  r  r  r  r  r  r   r   r   r   rB  rB  }  s/   H(#h-s6{+.0#d)_?A3t9o	3t9oCH~(*CJ'7:<c+>N9O 
3z? % '. 08 :C 	  	 "+	 -E	
 
 4
 6H ) += ?O    - /N CL  S? .1#c(O CI $ '*3v;%7 ;>s4y9I CK D	* -5 7B EHTCS CI c%j) -0U+< ?L CJF  
3s8nr3u:&S-=(>	3z?Wgx<,D35G(*<>N+}.M
CHoSXtfaY7G
UFO	Dr   rB  __main__)0rer~   utilsr   rP   	Exceptionr   r   r   r   r   r   r#   r4   r=   PSLiteralTablePSKeywordTablerF   r   r   r=  r>  r;  r<  r   r   rT   rW   compiler   r  r   r   r   r   r   r   r   r   r   r   rf   r	  unittestTestCaserB  r
   mainr   r   r   <module>r     s   	  	

	) 		K 		K 		+ 		; 		 	! !.) ), ( y)y)Y t9 $i I Z u:  	jjjj	F	jj!jj././::*+ZZ
#
jj./ZZ%
ZZ	"

w
T%
\ \BuL up 
Xx(( Xt zMMO r   