Server IP : 184.154.167.98 / Your IP : 3.17.187.254 Web Server : Apache System : Linux pink.dnsnetservice.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 User : puertode ( 1767) PHP Version : 8.2.26 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /lib/python3.6/site-packages/pycparser/__pycache__/ |
Upload File : |
3 g�wU� � @ s d dl mZ dd� Zdd� ZdS )� )�c_astc C s� t | tj�st�t | jtj�s"| S tjg | jj�}d}xh| jjD ]\}t |tjtj f�rz|jj |� t||j� |jd }q@|dkr�|jj |� q@|jj |� q@W || _| 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 it 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. Nr ���) � isinstancer ZSwitch�AssertionErrorZstmtZCompoundZcoordZblock_items�Case�Default�append�_extract_nested_case�stmts)Zswitch_nodeZnew_compoundZ last_caseZchild� r �$/usr/lib/python3.6/ast_transforms.py�fix_switch_cases s 3r c C s: t | jd tjtjf�r6|j| jj� � t|d |� dS )z� Recursively extract consecutive Case statements that are made nested by the parser and add them to the stmts_list. � r Nr )r r r r r r �popr )Z case_nodeZ stmts_listr r r r b s r N)� r r r r r r r �<module> s U