cython

Форк
0
/
FlowControl.pxd 
97 строк · 2.4 Кб
1
cimport cython
2

3
from .Visitor cimport CythonTransform, TreeVisitor
4

5
cdef class ControlBlock:
6
    cdef public set children
7
    cdef public set parents
8
    cdef public set positions
9
    cdef public list stats
10
    cdef public dict gen
11
    cdef public set bounded
12

13
    # Big integer bitsets
14
    cdef public object i_input
15
    cdef public object i_output
16
    cdef public object i_gen
17
    cdef public object i_kill
18
    cdef public object i_state
19

20
    cpdef bint empty(self)
21
    cpdef detach(self)
22
    cpdef add_child(self, block)
23

24
cdef class ExitBlock(ControlBlock):
25
    cpdef bint empty(self)
26

27
cdef class NameAssignment:
28
    cdef public bint is_arg
29
    cdef public bint is_deletion
30
    cdef public object lhs
31
    cdef public object rhs
32
    cdef public object entry
33
    cdef public object pos
34
    cdef public set refs
35
    cdef public object bit
36
    cdef public object inferred_type
37
    cdef public object rhs_scope
38

39
cdef class AssignmentList:
40
    cdef public object bit
41
    cdef public object mask
42
    cdef public list stats
43

44
cdef class AssignmentCollector(TreeVisitor):
45
    cdef list assignments
46

47
@cython.final
48
cdef class ControlFlow:
49
    cdef public set blocks
50
    cdef public set entries
51
    cdef public list loops
52
    cdef public list exceptions
53

54
    cdef public ControlBlock entry_point
55
    cdef public ExitBlock exit_point
56
    cdef public ControlBlock block
57

58
    cdef public dict assmts
59

60
    cdef public Py_ssize_t in_try_block
61

62
    cpdef newblock(self, ControlBlock parent=*)
63
    cpdef nextblock(self, ControlBlock parent=*)
64
    cpdef bint is_tracked(self, entry)
65
    cpdef bint is_statically_assigned(self, entry)
66
    cpdef mark_position(self, node)
67
    cpdef mark_assignment(self, lhs, rhs, entry, rhs_scope=*)
68
    cpdef mark_argument(self, lhs, rhs, entry)
69
    cpdef mark_deletion(self, node, entry)
70
    cpdef mark_reference(self, node, entry)
71
    cpdef normalize(self)
72
    cpdef initialize(self)
73
    cpdef set map_one(self, istate, entry)
74
    cdef reaching_definitions(self)
75

76
cdef class Uninitialized:
77
    pass
78

79
cdef class Unknown:
80
    pass
81

82
cdef class MessageCollection:
83
    cdef set messages
84

85
@cython.final
86
cdef class ControlFlowAnalysis(CythonTransform):
87
    cdef object gv_ctx
88
    cdef object constant_folder
89
    cdef set reductions
90
    cdef list stack  # a stack of (env, flow) tuples
91
    cdef object env
92
    cdef ControlFlow flow
93
    cdef object object_expr
94
    cdef bint in_inplace_assignment
95

96
    cpdef mark_assignment(self, lhs, rhs=*, rhs_scope=*)
97
    cpdef mark_position(self, node)
98

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.