403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib/python3.11/site-packages/pycparser/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib/python3.11/site-packages/pycparser/__pycache__/c_generator.cpython-311.pyc
�

��_^<��.�ddlmZGd�de��ZdS)�)�c_astc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�ZdAd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z!d!�Z"d"�Z#d#�Z$d$�Z%d%�Z&d&�Z'd'�Z(d(�Z)d)�Z*d*�Z+d+�Z,d,�Z-d-�Z.d.�Z/d/�Z0d0�Z1d1�Z2d2�Z3d3�Z4d4�Z5d5�Z6d6�Z7d7�Z8d8�Z9dAd9�Z:d:�Z;gd;fd<�Z<d=�Z=d>�Z>d?�Z?d@S)B�
CGeneratorz� Uses the same visitor pattern as c_ast.NodeVisitor, but modified to
        return a value from each visit method, using string accumulation in
        generic_visit.
    c��d|_dS)N���indent_level��selfs �:/usr/lib/python3.11/site-packages/pycparser/c_generator.py�__init__zCGenerator.__init__s�������c��d|jzS�N� rr
s r�_make_indentzCGenerator._make_indents���T�&�&�&rc�^�d|jjz}t|||j��|��S)N�visit_)�	__class__�__name__�getattr�
generic_visit)r�node�methods   r�visitzCGenerator.visits0���D�N�3�3��8�w�t�V�T�%7�8�8��>�>�>rc�r��|�dSd��fd�|���D����S)N�c3�H�K�|]\}}��|��V��dS�N�r)�.0�c_name�crs   �r�	<genexpr>z+CGenerator.generic_visit.<locals>.<genexpr>#s1�����J�J�Y�V�Q�4�:�:�a�=�=�J�J�J�J�J�Jr)�join�children)rrs` rrzCGenerator.generic_visits<����<��2��7�7�J�J�J�J�$�-�-�/�/�J�J�J�J�J�Jrc��|jSr)�value�r�ns  r�visit_ConstantzCGenerator.visit_Constant%s	���w�rc��|jSr��namer)s  r�visit_IDzCGenerator.visit_ID(s	���v�
rc�2�d}|jr
|d|jzz
}|S)Nz#pragmar)�string)rr*�rets   r�visit_PragmazCGenerator.visit_Pragma+s&�����8�	"��3���>�!�C��
rc�|�|�|j��}|dz|�|j��zdzS)N�[�])�_parenthesize_unless_simpler.r�	subscript)rr*�arrrefs   r�visit_ArrayRefzCGenerator.visit_ArrayRef1s9���1�1�!�&�9�9����|�d�j�j���5�5�5��;�;rc��|�|j��}||jz|�|j��zSr)r7r.�typer�field)rr*�srefs   r�visit_StructRefzCGenerator.visit_StructRef5s6���/�/���7�7���a�f�}�t�z�z�!�'�2�2�2�2rc�|�|�|j��}|dz|�|j��zdzS)N�(�))r7r.r�args)rr*�frefs   r�visit_FuncCallzCGenerator.visit_FuncCall9s9���/�/���7�7���c�z�D�J�J�q�v�.�.�.��4�4rc���|�|j��}|jdkrd|zS|jdkrd|zS|jdkrd|�|j��zS|j�|��S)Nzp++z%s++zp--z%s--�sizeofz
sizeof(%s))r7�expr�opr)rr*�operands   r�
visit_UnaryOpzCGenerator.visit_UnaryOp=s|���2�2�1�6�:�:���4�5�=�=��G�#�#�
�T�U�]�]��G�#�#�
�T�X�
�
� �$�*�*�Q�V�"4�"4�4�4��T�T�7�7�+�+rc�����|j�fd���}��|j�fd���}|�d|j�d|��S)Nc�0����|��Sr��_is_simple_node��drs �r�<lambda>z+CGenerator.visit_BinaryOp.<locals>.<lambda>L����$�*>�*>�q�*A�*A�&A�rc�0����|��SrrNrPs �rrRz+CGenerator.visit_BinaryOp.<locals>.<lambda>NrSrr)�_parenthesize_if�left�rightrI)rr*�lval_str�rval_strs`   r�visit_BinaryOpzCGenerator.visit_BinaryOpJsj����(�(���A�A�A�A�C�C���(�(���A�A�A�A�C�C��%�X�X�q�t�t�t�X�X�6�6rc��|�|jd���}|�|j���d|j�d|��S)Nc�6�t|tj��Sr)�
isinstancer�
Assignment)r*s rrRz-CGenerator.visit_Assignment.<locals>.<lambda>Ts��j��E�4D�&E�&E�rr)rU�rvaluer�lvaluerI)rr*rYs   r�visit_AssignmentzCGenerator.visit_AssignmentQsO���(�(��H�E�E�G�G��"�Z�Z���1�1�1�1�1�4�4�4���B�Brc�6�d�|j��Sr)r%�namesr)s  r�visit_IdentifierTypezCGenerator.visit_IdentifierTypeWs���x�x��� � � rc��t|tj��rd|�|��zdzSt|tj��rd|�|��zdzS|�|��S)N�{�}rArB)r]r�InitListr�ExprListr)s  r�_visit_exprzCGenerator._visit_exprZsn���a���(�(�	!�����A���&��,�,�
��5�>�
*�
*�	!�����A���&��,�,��:�:�a�=�=� rFc���|r|jn|�|��}|jr |d|�|j��zz
}|jr |d|�|j��zz
}|S)Nz : � = )r.�_generate_decl�bitsizer�initrj)rr*�no_type�ss    r�
visit_DeclzCGenerator.visit_Declbst���9�A�F�F�4�#6�#6�q�#9�#9���9�8�a�5�4�:�:�a�i�#8�#8�8�8�a��6�	2�
���)�)�!�&�1�1�1�1�A��rc������|jd��}t|j��dkr4|dd��fd�|jdd�D����zz
}|S)Nrr�, c3�F�K�|]}��|d���V��dS)T)rpN)rr�r!�declrs  �rr$z,CGenerator.visit_DeclList.<locals>.<genexpr>osG�����"=�"=�(,�#'�/�/�$��/�"E�"E�"=�"=�"=�"=�"=�"=r)r�decls�lenr%�rr*rqs`  r�visit_DeclListzCGenerator.visit_DeclListls�����J�J�q�w�q�z�"�"���q�w�<�<�!���
���	�	�"=�"=�"=�"=�01������"=�"=�"=�=�=�=�
=�A��rc��d}|jr |d�|j��dzz
}||�|j��z
}|S)Nrr)�storager%�_generate_typer<rzs   r�
visit_TypedefzCGenerator.visit_TypedefssJ�����9�4�a�3�8�8�A�I�.�.��4�4�a�	�T�
 �
 ���
(�
(�(���rc��d|�|jd���zdz}|dz|�|j��zS)NrAF��
emit_declnamerBr)r~�to_typer7rHrzs   r�
visit_CastzCGenerator.visit_CastysE���$�%�%�a�i�u�%�E�E�E��K���3�w��9�9�!�&�A�A�A�Arc��g}|jD]*}|�|�|�����+d�|��S�Nrt��exprs�appendrjr%�rr*�visited_subexprsrHs    r�visit_ExprListzCGenerator.visit_ExprList}�Q�����G�	<�	<�D��#�#�D�$4�$4�T�$:�$:�;�;�;�;��y�y�)�*�*�*rc��g}|jD]*}|�|�|�����+d�|��Sr�r�r�s    r�visit_InitListzCGenerator.visit_InitList�r�rc�0�|�|d���S)N�enumr-��_generate_struct_union_enumr)s  r�
visit_EnumzCGenerator.visit_Enum�s���/�/���/�?�?�?rc��|js.d�|���|j���Sd�|���|j|�|j�����S)Nz{indent}{name},
)�indentr.z{indent}{name} = {value},
)r�r.r()r(�formatrr.rr)s  r�visit_EnumeratorzCGenerator.visit_Enumerator�s����w�
	�&�-�-��(�(�*�*��V�.���
�
1�7�7��(�(�*�*��V��j�j���)�)�8���
rc�����|j��}d�_��|j��}|jr7d��fd�|jD����}|dz|zdz|zdzS|dz|zdzS)Nr�;
c3�B�K�|]}��|��V��dSrr )r!�prs  �rr$z+CGenerator.visit_FuncDef.<locals>.<genexpr>�s-�����!G�!G�A�$�*�*�Q�-�-�!G�!G�!G�!G�!G�!Gr�
)rrwr	�body�param_declsr%)rr*rwr��knrdeclss`    r�
visit_FuncDefzCGenerator.visit_FuncDef�s�����z�z�!�&�!�!������z�z�!�&�!�!���=�	-��z�z�!G�!G�!G�!G���!G�!G�!G�G�G�H��$�;��)�E�1�D�8�4�?�?��$�;��%��,�,rc�&�d}|jD]�}t|tj��r||�|��z
}�5t|tj��r||�|��dzz
}�k||�|��dzz
}��|S)Nrr�r�)�extr]r�FuncDefr�Pragma)rr*rqr�s    r�
visit_FileASTzCGenerator.visit_FileAST�s������5�	-�	-�C��#�u�}�-�-�
-��T�Z�Z��_�_�$����C���.�.�
-��T�Z�Z��_�_�t�+�+����T�Z�Z��_�_�u�,�,����rc�
������dz}�xjdz
c_|jr)|d��fd�|jD����z
}�xjdzc_|����dzz
}|S)N�{
�rc3�B�K�|]}��|��V��dSr��_generate_stmt)r!�stmtrs  �rr$z,CGenerator.visit_Compound.<locals>.<genexpr>�s1�����M�M�t��,�,�T�2�2�M�M�M�M�M�Mrz}
)rr	�block_itemsr%rzs`  r�visit_CompoundzCGenerator.visit_Compound�s���������%�'�����Q�����=�	N�
����M�M�M�M�q�}�M�M�M�M�M�M�A����Q����	�T�
�
�
 �
 �5�
(�(���rc�~�d|�|j��zdz|�|j��zdzS)NrAz){rg)rr<ror)s  r�visit_CompoundLiteralz CGenerator.visit_CompoundLiteral�s8���T�Z�Z���'�'�'�$�.����A�F�1C�1C�C�c�I�Irc��dS)N�;�r)s  r�visit_EmptyStatementzCGenerator.visit_EmptyStatement�s���src�P��d��fd�|jD����S)Nrtc3�B�K�|]}��|��V��dSrr )r!�paramrs  �rr$z-CGenerator.visit_ParamList.<locals>.<genexpr>�s/�����A�A�u����E�*�*�A�A�A�A�A�Ar)r%�paramsr)s` r�visit_ParamListzCGenerator.visit_ParamList�s,����y�y�A�A�A�A���A�A�A�A�A�Arc�^�d}|jr |d|�|j��zz
}|dzS)N�returnrr�)rHrrzs   r�visit_ReturnzCGenerator.visit_Return�s4�����6�0�1��d�j�j���0�0�0�0�1��3�w�rc��dS)Nzbreak;r�r)s  r�visit_BreakzCGenerator.visit_Break�s���xrc��dS)Nz	continue;r�r)s  r�visit_ContinuezCGenerator.visit_Continue�s���{rc���d|�|j��zdz}|d|�|j��zdzz
}|d|�|j��zdzz
}|S)NrAz) ? z) : rB)rj�cond�iftrue�iffalserzs   r�visit_TernaryOpzCGenerator.visit_TernaryOp�sn��
�4�#�#�A�F�+�+�
+�f�
4��	�S�4�#�#�A�H�-�-�
-��
6�6��	�S�4�#�#�A�I�.�.�
.��
4�4���rc��d}|jr||�|j��z
}|dz
}||�|jd���z
}|jr9||���dzz
}||�|jd���z
}|S)Nzif (�)
T��
add_indentzelse
)r�rr�r�r�rrzs   r�visit_IfzCGenerator.visit_If�s������6�*�1��
�
�1�6�*�*�*�1�	�U�
��	�T�
 �
 ���d�
 �
;�
;�;���9�	A�
��"�"�$�$�x�/�/�A�
��$�$�Q�Y�4�$�@�@�@�A��rc�J�d}|jr||�|j��z
}|dz
}|jr |d|�|j��zz
}|dz
}|jr |d|�|j��zz
}|dz
}||�|jd���z
}|S)Nzfor (r�rr�Tr�)rorr��nextr�r�rzs   r�	visit_ForzCGenerator.visit_For�s������6�*�1��
�
�1�6�*�*�*�1�	�S����6�0�1��d�j�j���0�0�0�0�1�	�S����6�0�1��d�j�j���0�0�0�0�1�	�U�
��	�T�
 �
 ���D�
 �
9�
9�9���rc��d}|jr||�|j��z
}|dz
}||�|jd���z
}|S)N�while (r�Tr�)r�rr�r�rzs   r�visit_WhilezCGenerator.visit_While�sS�����6�*�1��
�
�1�6�*�*�*�1�	�U�
��	�T�
 �
 ���D�
 �
9�
9�9���rc���d}||�|jd���z
}||���dzz
}|jr||�|j��z
}|dz
}|S)Nzdo
Tr�r�z);)r�r�rr�rrzs   r�
visit_DoWhilezCGenerator.visit_DoWhile�sn����	�T�
 �
 ���D�
 �
9�
9�9��	�T�
�
�
 �
 �9�
,�,���6�*�1��
�
�1�6�*�*�*�1�	�T�	���rc��d|�|j��zdz}||�|jd���z
}|S)Nzswitch (r�Tr�)rr�r�r�rzs   r�visit_SwitchzCGenerator.visit_Switch�sC������A�F�+�+�+�e�3��	�T�
 �
 ���D�
 �
9�
9�9���rc��d|�|j��zdz}|jD]}||�|d���z
}�|S)Nzcase �:
Tr�)rrH�stmtsr��rr*rqr�s    r�
visit_CasezCGenerator.visit_Case�sT���d�j�j���(�(�(�5�0���G�	<�	<�D�
��$�$�T�d�$�;�;�;�A�A��rc�R�d}|jD]}||�|d���z
}�|S)Nz	default:
Tr�)r�r�r�s    r�
visit_DefaultzCGenerator.visit_Defaults<�����G�	<�	<�D�
��$�$�T�d�$�;�;�;�A�A��rc�L�|jdz|�|j��zS)Nr�)r.r�r�r)s  r�visit_LabelzCGenerator.visit_Labels#���v��~�� 3� 3�A�F� ;� ;�;�;rc��d|jzdzS)Nzgoto r�r-r)s  r�
visit_GotozCGenerator.visit_Goto
s������#�%�%rc��dS)Nz...r�r)s  r�visit_EllipsisParamzCGenerator.visit_EllipsisParam
s���urc�.�|�|d��S)N�structr�r)s  r�visit_StructzCGenerator.visit_Structs���/�/��8�<�<�<rc�6�|�|j��Sr)r~r<r)s  r�visit_TypenamezCGenerator.visit_Typenames���"�"�1�6�*�*�*rc�.�|�|d��S)N�unionr�r)s  r�visit_UnionzCGenerator.visit_Unions���/�/��7�;�;�;rc���d}|jD]H}t|tj��r|d|jzz
}�*|d|�|��zdzz
}�I|d|�|j��zz
}|S)Nr�.r5r6rl)r.r]r�IDrrjrH)rr*rqr.s    r�visit_NamedInitializerz!CGenerator.visit_NamedInitializers������F�	2�	2�D��$���)�)�
2��S�4�9�_�$����S�4�:�:�d�+�+�+�c�1�1���	�U�T�%�%�a�f�-�-�
-�-���rc�,�|�|��Sr�r~r)s  r�visit_FuncDeclzCGenerator.visit_FuncDecl#s���"�"�1�%�%�%rc�0�|�|d���S�NFr�r�r)s  r�visit_ArrayDeclzCGenerator.visit_ArrayDecl&����"�"�1�E�"�:�:�:rc�0�|�|d���Sr�r�r)s  r�visit_TypeDeclzCGenerator.visit_TypeDecl)r�rc�0�|�|d���Sr�r�r)s  r�
visit_PtrDeclzCGenerator.visit_PtrDecl,r�rc�h�|dvr|j}|j}n$|dksJ�|j�dn|jj}|j}|dz|jpdz}|�i|dz
}||���z
}|xjdz
c_|dz
}|||��z
}|xjdzc_||���d	zz
}|S)
zq Generates code for structs, unions, and enums. name should be
            'struct', 'union', or 'enum'.
        )r�r�r�Nrrr�r�r�rg)rx�_generate_struct_union_body�values�enumerators�_generate_enum_bodyr.rr	)rr*r.�members�
body_functionrqs      rr�z&CGenerator._generate_struct_union_enum/s����&�&�&��g�G� �<�M�M��6�>�>�>�>��h�.�d�d�A�H�4H�G� �4�M��3�J�!�&�,�B�'����
��I�A�
��"�"�$�$�$�A�����"���
��J�A�
���w�'�'�'�A�����"���
��"�"�$�$�s�*�*�A��rc�F��d��fd�|D����S)Nrc3�B�K�|]}��|��V��dSrr�rvs  �rr$z9CGenerator._generate_struct_union_body.<locals>.<genexpr>Hs1�����E�E�T�t�*�*�4�0�0�E�E�E�E�E�Er�r%�rr�s` rr�z&CGenerator._generate_struct_union_bodyGs*����w�w�E�E�E�E�W�E�E�E�E�E�Erc�\��d��fd�|D����dd�dzS)Nrc3�B�K�|]}��|��V��dSrr )r!r(rs  �rr$z1CGenerator._generate_enum_body.<locals>.<genexpr>Ls/�����>�>�U�t�z�z�%�(�(�>�>�>�>�>�>r���r�rrs` rr�zCGenerator._generate_enum_bodyJs8����w�w�>�>�>�>�g�>�>�>�>�>�s��s�C�d�J�Jrc�j�t|��}|r|xjdz
c_|���}|r|xjdzc_|tjtjtjtjtjtj	tj
tjtjtj
tjtjtjf
vr||�|��zdzS|tjfvr|�|��S||�|��zdzS)z� Generation from a statement node. This method exists as a wrapper
            for individual visit_* methods to handle different treatment of
            some statements in this context.
        r�r�r�)r<r	rr�Declr^�Cast�UnaryOp�BinaryOp�	TernaryOp�FuncCall�ArrayRef�	StructRef�Constantr��Typedefrir�Compound)rr*r��typr�s     rr�zCGenerator._generate_stmtNs���
�1�g�g���-�t�(�(�A�-�(�(��"�"�$�$���-�t�(�(�A�-�(�(���
�E�,�e�j�%�-���������������5�=���	 � � ��D�J�J�q�M�M�)�E�1�1�
�U�^�%�
%�
%�
�:�:�a�=�=� ��D�J�J�q�M�M�)�D�0�0rc���d}|jrd�|j��dz}|jr |d�|j��dzz
}||�|j��z
}|S)z& Generation from a Decl node.
        rr)�funcspecr%r}r~r<rzs   rrmzCGenerator._generate_decljsk��
���:�5�3�8�8�A�J�/�/�#�5�q��9�4�a�3�8�8�A�I�.�.��4�4�a�	�T�
 �
 ���
(�
(�(���rTc��t|��}|tjk�r�d}|jr |d�|j��dzz
}||�|j��z
}|jr	|r|jnd}t|��D�]\\}}t|tj	��r~|dkr+t||dz
tj
��rd|zdz}|dz
}|jr |d�|j��dzz
}||�|j��dzz
}��t|tj
��rV|dkr+t||dz
tj
��rd|zdz}|d|�|j��zdzz
}��t|tj
��r4|jr(d	d�|j���|rd|znd��}��Wd
|z}��^|r|d|zz
}|S|tjkr|�|j��S|tjkr|�|j|���S|tjkrd�|j��dzS|tj	tj
tj
fvr!|�|j||gz|���S|�|��S)z� Recursive generation from a type node. n is the type node.
            modifiers collects the PtrDecl, ArrayDecl and FuncDecl modifiers
            encountered on the way down to a TypeDecl, to allow proper
            generation from it.
        rrrrrArBr5r6z* �*r�)r<r�TypeDecl�qualsr%r�declname�	enumerater]�	ArrayDecl�PtrDecl�	dim_quals�dim�FuncDeclrCr	rm�Typenamer~�IdentifierTyperc)	rr*�	modifiersr�rrq�nstr�i�modifiers	         rr~zCGenerator._generate_typess����1�g�g���%�.� � ��A��w�4��S�X�X�a�g�.�.��4�4��
����A�F�#�#�#�A�!"��E�
�E�1�:�:�2�D�
 )��3�3�
*�
*���8��h���8�8�*��Q���"�9�Q��U�#3�U�]�C�C��#&��:��#3�D��C�K�D��)�C������);� <� <�s� B�B���D�J�J�x�|�4�4�s�:�:�D�D���%�.�9�9�
*��Q���"�9�Q��U�#3�U�]�C�C��#&��:��#3�D��C�$�*�*�X�]�";�";�;�c�A�A�D�D���%�-�8�8�*��~�*�*�+.�8�8�H�N�+C�+C�+C�9=�+E�3��:�:�2�+E� G��� #�T�z����$�Q�#��*�_�Q��H�
�E�J�
�
��&�&�q�v�.�.�.�
�E�N�
"�
"��&�&�q�v�}�&�M�M�M�
�E�(�
(�
(��8�8�A�G�$�$�s�*�*�
�U�_�e�m�U�^�D�
D�
D��&�&�q�v�y�A�3��7D�'�F�F�
F��:�:�a�=�=� rc�V�|�|��}||��rd|zdzS|S)z� Visits 'n' and returns its string representation, parenthesized
            if the condition function applied to the node returns True.
        rArB)rj)rr*�	conditionrqs    rrUzCGenerator._parenthesize_if�s:��
���Q�����9�Q�<�<�	���7�S�=� ��Hrc�6����|�fd���S)z. Common use case for _parenthesize_if
        c�0����|��SrrNrPs �rrRz8CGenerator._parenthesize_unless_simple.<locals>.<lambda>�s���d�6J�6J�1�6M�6M�2M�r)rUr)s` rr7z&CGenerator._parenthesize_unless_simple�s%����$�$�Q�(M�(M�(M�(M�N�N�Nrc��t|tjtjtjtjtjf��S)z~ Returns True for nodes that are "simple" - i.e. nodes that always
            have higher precedence than operators.
        )r]rrr�rrrr)s  rrOzCGenerator._is_simple_node�s5���!�e�n�e�h���#�o�u�~�?�@�@�	@rN)F)@r�
__module__�__qualname__�__doc__r
rrrr+r/r3r:r?rErKrZrardrjrrr{rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rmr~rUr7rOr�rrrrs������������'�'�'�?�?�?�K�K�K����������<�<�<�3�3�3�5�5�5�,�,�,�7�7�7�C�C�C�!�!�!�!�!�!�����������B�B�B�+�+�+�+�+�+�@�@�@����-�-�-�	�	�	����J�J�J����B�B�B����
������������	�	�	����������
������<�<�<�&�&�&����=�=�=�+�+�+�<�<�<����&�&�&�;�;�;�;�;�;�;�;�;����0F�F�F�K�K�K�1�1�1�1�8���+-�d�3!�3!�3!�3!�j���O�O�O�
@�@�@�@�@rrN)rr�objectrr�rr�<module>r1sa��������p@�p@�p@�p@�p@��p@�p@�p@�p@�p@r

Youez - 2016 - github.com/yon3zu
LinuXploit