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 : |
� ��_^@ � � � d dl mZ d� Zd� ZdS )� )�c_astc �� � t | j t j � � s| S t j g | j j � � }d}| j j pg D ]�}t |t j t j f� � r=|j � |� � t ||j � � |j d }�e|�|j � |� � ��|j � |� � ��|| _ | S )a� The 'case' statements in a 'switch' come out of parsing with one child node, so subsequent statements are just tucked to the parent Compound. Additionally, consecutive (fall-through) case statements come out messy. This is a peculiarity of the C grammar. The following: switch (myvar) { case 10: k = 10; p = k + 1; return 10; case 20: case 30: return 20; default: break; } Creates this tree (pseudo-dump): Switch ID: myvar Compound: Case 10: k = 10 p = k + 1 return 10 Case 20: Case 30: return 20 Default: break The goal of this transform is to fix this mess, turning it into the following: Switch ID: myvar Compound: Case 10: k = 10 p = k + 1 return 10 Case 20: Case 30: return 20 Default: break A fixed AST node is returned. The argument may be modified. N���)� isinstance�stmtr �Compound�coord�block_items�Case�Default�append�_extract_nested_case�stmts)�switch_node�new_compound� last_case�childs �=/usr/lib/python3.11/site-packages/pycparser/ast_transforms.py�fix_switch_casesr s� � �h �k�&���7�7� ��� �>�"�k�&6�&<�=�=�L� �I� �"�.�4�"� .� .���e�e�j�%�-�8�9�9� .� �$�+�+�E�2�2�2� ���(@�A�A�A�$�0��4�I�I� � ��(�/�/��6�6�6�6���&�&�u�-�-�-�-�#�K���� c �� � t | j d t j t j f� � rD|� | j � � � � � t |d |� � dS dS )z� Recursively extract consecutive Case statements that are made nested by the parser and add them to the stmts_list. � r N)r r r r r r �popr )� case_node� stmts_lists r r r c sl � � �)�/�!�$�u�z�5�=�&A�B�B� 9����)�/�-�-�/�/�0�0�0��Z��^�Z�8�8�8�8�8�9� 9r N)� r r r � r r �<module>r sE �� � � � � � �S� S� S�l9� 9� 9� 9� 9r