@@ -19,10 +19,10 @@ def __init__(self, node: Tree):
19
19
20
20
def _load_sub_statements (self ):
21
21
if self .kind == "class_def" :
22
- pass
23
- elif self .kind == "property_body_def" :
24
- pass
25
- elif self .kind in ["func_def" , "static_func_def" ]:
22
+ raise NotImplementedError
23
+ if self .kind == "property_body_def" :
24
+ raise NotImplementedError
25
+ if self .kind in ["func_def" , "static_func_def" ]:
26
26
self .sub_statements = [Statement (n ) for n in self .lark_node .children [1 :]]
27
27
elif self .kind == "if_stmt" :
28
28
for branch in self .lark_node .children :
@@ -31,16 +31,22 @@ def _load_sub_statements(self):
31
31
else :
32
32
self .sub_statements += [Statement (n ) for n in branch .children ]
33
33
elif self .kind == "while_stmt" :
34
- pass
34
+ self . sub_statements = [ Statement ( n ) for n in self . lark_node . children [ 1 :]]
35
35
elif self .kind == "for_stmt" :
36
- pass
36
+ self . sub_statements = [ Statement ( n ) for n in self . lark_node . children [ 2 :]]
37
37
elif self .kind == "match_stmt" :
38
- pass
38
+ for branch in self .lark_node .children :
39
+ self .sub_statements += [Statement (n ) for n in branch .children [1 :]]
39
40
for sub_statement in self .sub_statements :
40
41
self .all_sub_statements += [
41
42
sub_statement
42
43
] + sub_statement .all_sub_statements
43
44
45
+ def __repr__ (self ):
46
+ return "Statement({}:{}:{})" .format (
47
+ self .lark_node .data , self .lark_node .line , self .lark_node .column
48
+ )
49
+
44
50
45
51
# pylint: disable=too-few-public-methods
46
52
class Parameter :
@@ -50,15 +56,15 @@ def __init__(self, node: Tree):
50
56
self .name = node .children [0 ].value
51
57
52
58
53
- # TODO: inherit from statement
54
59
# pylint: disable=too-few-public-methods
55
- class Function :
60
+ class Function ( Statement ) :
56
61
"""Abstract representation of function"""
57
62
58
63
def __init__ (self , func_def : Tree ):
59
- self . lark_node = func_def
64
+ super (). __init__ ( func_def )
60
65
self .name = ""
61
66
self .parameters = [] # type: List[Parameter]
67
+ self .all_statements = [self ] + self .all_sub_statements # type: ignore
62
68
63
69
self ._load_data_from_func_def (func_def )
64
70
@@ -72,8 +78,6 @@ def _load_data_from_func_def(self, func_def: Tree) -> None:
72
78
for c in func_args .children # type: ignore
73
79
if c .data != "trailing_comma"
74
80
]
75
- slf = Statement (self .lark_node )
76
- self .all_statements = [slf ] + slf .all_sub_statements
77
81
78
82
79
83
# pylint: disable=too-few-public-methods
0 commit comments