Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3
Føªj; ã @ s0 d dl mZ dd„ Zdd„ Zdd„ Zdd „ Zd
S )é )Úc_astc C s® t | tjƒst‚t | jtjƒs"| S tjg | jjƒ}d}xl| jjpBg D ]\}t |tjtj fƒr~|jj
|ƒ t||jƒ |jd }qD|dkr”|jj
|ƒ qD|jj
|ƒ qDW || _| 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.
Nr éÿÿÿÿ)
Ú
isinstancer ZSwitchÚAssertionErrorÚstmtZCompoundZcoordZblock_itemsÚCaseÚDefaultÚappendÚ_extract_nested_caseÚstmts)Zswitch_nodeZnew_compoundZ last_caseÚchild© r
ú=/tmp/pip-build-_d5lkt3n/pycparser/pycparser/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
c s r
c C s„ xt | ƒ\} }|sP qW | }x0t|tjƒsLy
|j}W q tk
rH | S X qW d|jkrnd| jkrn| jjdƒ |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 }xP|dk r^t|tjƒr0d|jkr0P y|}|}|j }W q tk
rZ | dfS X qW t|tjƒspt‚|j |_ d|j jkr’|j jjdƒ | 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"
r N)Ú r r r
r r r
r
r
r Ú
s V