HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pdfminer/__pycache__/psparser.cpython-38.pyc
U

�R�]�C�	@s�ddlZddlZddlZddlmZddlmZe�e�Z	Gdd�de
�ZGdd�de�ZGd	d
�d
e�Z
Gdd�de�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Zee�Zee�ZejZejZed�Zed�Zed�Zed�Zed�Zed�Zdd�Z dd �Z!e�"d!�Z#e�"d"�Z$e�"d#�Z%e�"d$�Z&e�"d%�Z'e�"d&�Z(e�"d'�Z)e�"d(�Z*e�"d%�Z+e�"d)�Z,e�"d*�Z-d+d,d-d.d/d0d1d2d3�Z.Gd4d5�d5e�Z/Gd6d7�d7e/�Z0dS)8�N�)�settings)�choplistc@seZdZdS)�PSExceptionN��__name__�
__module__�__qualname__�r
r
�3/usr/lib/python3/dist-packages/pdfminer/psparser.pyrsrc@seZdZdS)�PSEOFNrr
r
r
rrsrc@seZdZdS)�
PSSyntaxErrorNrr
r
r
rr
sr
c@seZdZdS)�PSTypeErrorNrr
r
r
rrsrc@seZdZdS)�PSValueErrorNrr
r
r
rr"src@seZdZdZdS)�PSObjectz0Base class for all PS or PDF-related data types.N)rrr	�__doc__r
r
r
rr+src@s eZdZdZdd�Zdd�ZdS)�	PSLiteralaaA 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().
    cCs
||_dS�N��name��selfrr
r
r�__init__AszPSLiteral.__init__cCs|j}d|S�Nz/%rrrr
r
r�__repr__DszPSLiteral.__repr__N�rrr	rrrr
r
r
rr4src@s eZdZdZdd�Zdd�ZdS)�	PSKeywordaNA 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().
    cCs
||_dSrrrr
r
rrWszPSKeyword.__init__cCs|j}d|Srrrr
r
rr[szPSKeyword.__repr__Nrr
r
r
rrKs
rc@s eZdZdZdd�Zdd�ZdS)�
PSSymbolTablez�A utility class for storing PSLiteral/PSKeyword objects.

    Interned objects can be checked its identity with "is" operator.
    cCsi|_||_dSr��dict�klass)rr r
r
rriszPSSymbolTable.__init__cCs.||jkr|j|}n|�|�}||j|<|Srr)rrZlitr
r
r�internns



zPSSymbolTable.internN)rrr	rrr!r
r
r
rrbsr�{�}�[�]s<<s>>cCsRt|t�s&tjr td|f��qN|}n(|j}tjrNzt|d�}WnYnX|S)NzLiteral required: %r�utf-8)	�
isinstancerr�STRICTrr�six�PY3�str��xrr
r
r�literal_name�s
r.cCs@t|t�s$tjrtd|��q<|}n|j}tjr<t|dd�}|S)NzKeyword required: %rr&�ignore)	r'rrr(rrr)r*r+r,r
r
r�keyword_name�s
r0s[\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�r�(�)�\c@s�eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d5dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd
S)6�PSBaseParserzBMost basic PostScript parser that performs only tokenization.
    icCs||_|�d�dS�Nr)�fp�seek�rrCr
r
rr�s
zPSBaseParser.__init__cCsd|jj|j|jfS)Nz<%s: %r, bufpos=%d>)�	__class__rrC�bufpos�rr
r
rr�szPSBaseParser.__repr__cCsdSrr
rHr
r
r�flush�szPSBaseParser.flushcCs|��dSr)rIrHr
r
r�close�szPSBaseParser.closecCs|j|jSr)rG�charposrHr
r
r�tell�szPSBaseParser.tellN�PcCsL|j��}|s|j|j}|j�|�t�d||j�|��|j�|�dS)Nzpoll(%d): %r)rCrLrGrKrD�log�info�read)r�pos�nZpos0r
r
r�poll�s
zPSBaseParser.pollcCsHt�d|�|j�|�||_d|_d|_|j|_d|_	d|_
g|_dS)z0Seeks the parser to the given position.
        zseek: %r�rN)rN�debugrCrDrG�bufrK�_parse_main�_parse1�	_curtoken�_curtokenpos�_tokens�rrQr
r
rrD�szPSBaseParser.seekcCsH|jt|j�krdS|j��|_|j�|j�|_|js>td��d|_dS)NzUnexpected EOFr)	rK�lenrVrCrLrGrP�BUFSIZrrHr
r
r�fillbuf�szPSBaseParser.fillbufcCs�d}|j|j}d}|��|rV|j|j|jd�}|dkr�||7}|jd7_q�t�|j|j�}|r�||j|j|�d��7}|�d�|_|dd�dkr�d	}q�q�q||j|jd�7}t|j�|_qt�	d
||�||fS)z<Fetches a next line that ends either with \r or \n.
        rTFr�
r���N�
Tznextline: %r, %r)
rGrKr_rV�EOL�search�endr]rNrU)rZlinebufZlineposZeol�c�mr
r
r�nextline�s*zPSBaseParser.nextlineccs�|j�dd�|j��}d}d|kr�|}td||j�}|j�|�|j�||�}|sZq�t|�d�|�d��}|dkr�||}q||d�|V|d|�}d}qZqdS)ziFetches a next line backword.

        This is used to locate the trailers at the end of a file.
        r�rTrbr`raN)rCrDrL�maxr^rP�rfind)rrQrVZprevpos�srRr
r
r�revreadliness$
zPSBaseParser.revreadlinescCs\t�||�}|st|�S|�d�}|||d�}|j||_|dkr\d|_|j|_|dS|dkrzd|_|j	|_|dS|dks�|�
�r�||_|j|_|dS|dkr�||_|j|_|dS|�
�r�||_|j|_|dS|dk�rd|_d|_|j|_|dS|d	k�r"d|_|j|_|dS|d
k�rBd|_|j|_|dS|�t|��|dSdS)Nrr�%�/rTs-+�.r>�<�>)�NONSPCrdr]�startrGrZrY�_parse_commentrX�_parse_literal�isdigit�
_parse_number�_parse_float�isalpha�_parse_keyword�paren�
_parse_string�_parse_wopen�
_parse_wclose�
_add_token�KWD�rrl�irg�jrfr
r
rrW!sR



zPSBaseParser._parse_maincCs|j�|j|f�dSr)r[�appendrZ)r�objr
r
rr�MszPSBaseParser._add_tokencCsZt�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_|j|_|SrB)rcrdrYr]rtrWrX�rrlr�rgr�r
r
rruQs
zPSBaseParser._parse_commentcCs�t�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_|||d�}|dkr|d|_|j|_|dSzt|jd�|_WnYnX|�	t
|j��|j|_|S)Nrr�#rTr&)�END_LITERALrdrYr]rt�hex�_parse_literal_hexrXr+r��LITrWr�r
r
rrv]s$
zPSBaseParser._parse_literalcCsl|||d�}t�|�r>t|j�dkr>|j|7_|dS|jr`|jt�t|jd��7_|j|_	|S)Nrri�)
�HEX�matchr]r�rYr)�int2byte�intrvrX�rrlr�rfr
r
rr�qszPSBaseParser._parse_literal_hexcCs�t�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_|||d�}|dkr�|j|7_|j|_|dSz|�t|j��Wnt	k
r�YnX|j
|_|S)Nrrrp)�
END_NUMBERrdrYr]rtryrXr�r��
ValueErrorrWr�r
r
rrx{s"
zPSBaseParser._parse_numbercCs�t�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_z|�t|j��Wntk
rvYnX|j|_	|SrB)
r�rdrYr]rtr��floatr�rWrXr�r
r
rry�s
zPSBaseParser._parse_floatcCs�t�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_|jdkr^d}n|jdkrnd}n
t|j�}|�|�|j|_|S)NrstrueTsfalseF)	�END_KEYWORDrdrYr]rtr�r�rWrX�rrlr�rgr��tokenr
r
rr{�s




zPSBaseParser._parse_keywordcCs�t�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_|||d�}|dkr|d|_|j|_|dS|dkr�|jd7_|j|7_|dS|dkr�|jd8_|jr�|j|7_|dS|�	|j�|j
|_|dS)Nrrr@rTr>r?)�
END_STRINGrdrYr]rt�oct�_parse_string_1rXr|r�rWr�r
r
rr}�s.
zPSBaseParser._parse_stringcCs�|||d�}t�|�r>t|j�dkr>|j|7_|dS|jrl|jt�t|jd��7_|j|_	|S|t
kr�|jt�t
|�7_|j|_	|dS)Nr�r1)�
OCT_STRINGr�r]r�rYr)r�r�r}rX�
ESC_STRINGr�r
r
rr��szPSBaseParser._parse_string_1cCs@|||d�}|dkr4|�t�|j|_|d7}n|j|_|S)Nrrq)r��KEYWORD_DICT_BEGINrWrX�_parse_hexstringr�r
r
rr~�s

zPSBaseParser._parse_wopencCs6|||d�}|dkr*|�t�|d7}|j|_|S)Nrrr)r��KEYWORD_DICT_ENDrWrXr�r
r
rr�s
zPSBaseParser._parse_wclosecCs~t�||�}|s.|j||d�7_t|�S|�d�}|j|||�7_t�dd�t�d|j��}|�|�|j	|_
|S)NrcSst�t|�d�d��S)Nrr�)r)r�r��group)rgr
r
r�<lambda>�rTz/PSBaseParser._parse_hexstring.<locals>.<lambda>rT)�END_HEX_STRINGrdrYr]rt�HEX_PAIR�sub�SPCr�rWrXr�r
r
rr��s

zPSBaseParser._parse_hexstringcCs>|js"|��|�|j|j�|_q|j�d�}t�d|�|S)Nrz
nexttoken: %r)r[r_rXrVrK�poprNrU)rr�r
r
r�	nexttoken�szPSBaseParser.nexttoken)NrM)rrr	rr^rrrIrJrLrSrDr_rhrmrWr�rurvr�rxryr{r}r�r~rr�r�r
r
r
rrA�s4
	,

rAc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�
PSStackParsercCst�||�|��dSr)rAr�resetrEr
r
rr�szPSStackParser.__init__cCsg|_d|_g|_g|_dSr)�context�curtype�curstack�resultsrHr
r
rr�s
zPSStackParser.resetcCst�||�|��dSr)rArDr�r\r
r
rrDszPSStackParser.seekcGs|j�|�dSr)r��extend�r�objsr
r
r�pushszPSStackParser.pushcCs$|j|d�}g|j|d�<|Sr�r�)rrRr�r
r
rr�szPSStackParser.popcCs|j}g|_|Srr�r�r
r
r�popallszPSStackParser.popallcGs8zt�d|�Wnt�d�YnX|j�|�dS)Nzadd_results: %rz!add_results: (unprintable object))rNrUr�r�r�r
r
r�add_resultsszPSStackParser.add_resultscCs6|j�||j|jf�|g|_|_t�d||�dS)Nzstart_type: pos=%r, type=%r)r�r�r�r�rNrU)rrQ�typer
r
r�
start_type&szPSStackParser.start_typecCsX|j|krtd|j|f��dd�|jD�}|j��\}|_|_t�d|||�||fS)NzType mismatch: %r != %rcSsg|]\}}|�qSr
r
)�.0�_r�r
r
r�
<listcomp>/sz*PSStackParser.end_type.<locals>.<listcomp>z"end_type: pos=%r, type=%r, objs=%r)r�rr�r�r�rNrU)rr�r�rQr
r
r�end_type,s
zPSStackParser.end_typecCsdSrr
)rrQr�r
r
r�
do_keyword4szPSStackParser.do_keywordcCs&|j�s�|��\}}t|tjtttjtjt	f�rB|�
||f��n�|tkrZ|�|d��n~|t
kr�z|�
|�d��Wntk
r�tjr��YnX�n@|tkr�|�|d��n(|tk�r2zT|�d�\}}t|�ddkr�td|��tdd�td|�D��}|�
||f�Wn tk
�r.tj�r*�YnXn�|tk�rJ|�|d�n�|tk�r�z|�
|�d��Wn tk
�r�tj�r��YnXnLt|t��r�t�d	|||j�|�||�n t�d
|||j�|�||��|j �r�qq|�!�q|j�"d�}zt�d|�Wnt�d�YnX|S)
z�Yields a list of objects.

        Returns keywords, literals, strings, numbers, arrays and dictionaries.
        Arrays and dictionaries are represented as Python lists and dictionaries.
        �a�drirz Invalid dictionary construct: %rcss&|]\}}|dk	rt|�|fVqdSr)r.)r��k�vr
r
r�	<genexpr>Wsz+PSStackParser.nextobject.<locals>.<genexpr>�pz&do_keyword: pos=%r, token=%r, stack=%rz)unknown token: pos=%r, token=%r, stack=%rznextobject: %rz nextobject: (unprintable object))#r�r�r'r)Z
integer_typesr��boolZstring_typesZbinary_typerr��KEYWORD_ARRAY_BEGINr��KEYWORD_ARRAY_ENDr�rrr(r�r�r]r
rr�KEYWORD_PROC_BEGIN�KEYWORD_PROC_ENDrrNrUr�r��errorr�rIr�)rrQr�r�r�r�r
r
r�
nextobject7s^





zPSStackParser.nextobjectN)rrr	rr�rDr�r�r�r�r�r�r�r�r
r
r
rr��sr�)1�reZloggingr)�rZutilsrZ	getLoggerrrN�	Exceptionrrr
rr�objectrrrrZPSLiteralTableZPSKeywordTabler!r�r�r�r�r�r�r�r�r.r0�compilercr�rsr�r�r�r�r�r�r�r�r�rAr�r
r
r
r�<module>sT
		










Q