3030
3131class AST :
3232 def __init__ (self , networkx_tree : DiGraph , root : int ):
33- self .tree = networkx_tree
34- self .root = root
33+ self ._tree = networkx_tree
34+ self ._root = root
3535
3636 @staticmethod
3737 def build_from_javalang (javalang_ast_root : Node ) -> 'AST' :
@@ -45,15 +45,15 @@ def build_from_javalang(javalang_ast_root: Node) -> 'AST':
4545 def __str__ (self ) -> str :
4646 printed_graph = ''
4747 depth = 0
48- for _ , destination , edge_type in dfs_labeled_edges (self .tree , self .root ):
48+ for _ , destination , edge_type in dfs_labeled_edges (self ._tree , self ._root ):
4949 if edge_type == 'forward' :
5050 printed_graph += '| ' * depth
51- node_type = self .tree .nodes [destination ]['node_type' ]
51+ node_type = self ._tree .nodes [destination ]['node_type' ]
5252 printed_graph += str (node_type ) + ': '
5353 if node_type == ASTNodeType .STRING :
54- printed_graph += self .tree .nodes [destination ]['string' ] + ', '
54+ printed_graph += self ._tree .nodes [destination ]['string' ] + ', '
5555 printed_graph += f'node index = { destination } '
56- node_line = self .tree .nodes [destination ]['line' ]
56+ node_line = self ._tree .nodes [destination ]['line' ]
5757 if node_line is not None :
5858 printed_graph += f', line = { node_line } '
5959 printed_graph += '\n '
@@ -62,14 +62,14 @@ def __str__(self) -> str:
6262 depth -= 1
6363 return printed_graph
6464
65- def get_root (self ) -> ASTNode :
66- return ASTNode (self .tree , self .root )
65+ def root (self ) -> ASTNode :
66+ return ASTNode (self ._tree , self ._root )
6767
6868 def __iter__ (self ) -> Iterator [ASTNode ]:
69- for node_index in self .tree .nodes :
70- yield ASTNode (self .tree , node_index )
69+ for node_index in self ._tree .nodes :
70+ yield ASTNode (self ._tree , node_index )
7171
72- def get_subtrees (self , * root_type : ASTNodeType ) -> Iterator ['AST' ]:
72+ def subtrees (self , * root_type : ASTNodeType ) -> Iterator ['AST' ]:
7373 """
7474 Yields subtrees with given type of the root.
7575 If such subtrees are one including the other, only the larger one is
@@ -78,23 +78,23 @@ def get_subtrees(self, *root_type: ASTNodeType) -> Iterator['AST']:
7878 is_inside_subtree = False
7979 current_subtree_root = - 1 # all node indexes are positive
8080 subtree : List [int ] = []
81- for _ , destination , edge_type in dfs_labeled_edges (self .tree , self .root ):
81+ for _ , destination , edge_type in dfs_labeled_edges (self ._tree , self ._root ):
8282 if edge_type == 'forward' :
8383 if is_inside_subtree :
8484 subtree .append (destination )
85- elif self .tree .nodes [destination ]['node_type' ] in root_type :
85+ elif self ._tree .nodes [destination ]['node_type' ] in root_type :
8686 subtree .append (destination )
8787 is_inside_subtree = True
8888 current_subtree_root = destination
8989 elif edge_type == 'reverse' and destination == current_subtree_root :
9090 is_inside_subtree = False
91- yield AST (self .tree .subgraph (subtree ), current_subtree_root )
91+ yield AST (self ._tree .subgraph (subtree ), current_subtree_root )
9292 subtree = []
9393 current_subtree_root = - 1
9494
95- def get_subtree (self , node : ASTNode ) -> 'AST' :
96- subtree_nodes_indexes = dfs_preorder_nodes (self .tree , node .node_index )
97- subtree = self .tree .subgraph (subtree_nodes_indexes )
95+ def subtree (self , node : ASTNode ) -> 'AST' :
96+ subtree_nodes_indexes = dfs_preorder_nodes (self ._tree , node .node_index )
97+ subtree = self ._tree .subgraph (subtree_nodes_indexes )
9898 return AST (subtree , node .node_index )
9999
100100 def traverse (
@@ -104,31 +104,31 @@ def traverse(
104104 source_node : Optional [ASTNode ] = None ,
105105 undirected = False
106106 ):
107- traverse_graph = self .tree .to_undirected (as_view = True ) if undirected else self .tree
107+ traverse_graph = self ._tree .to_undirected (as_view = True ) if undirected else self ._tree
108108 if source_node is None :
109- source_node = self .get_root ()
109+ source_node = self .root ()
110110
111111 for _ , destination , edge_type in dfs_labeled_edges (traverse_graph , source_node .node_index ):
112112 if edge_type == 'forward' :
113- on_node_entering (ASTNode (self .tree , destination ))
113+ on_node_entering (ASTNode (self ._tree , destination ))
114114 elif edge_type == 'reverse' :
115- on_node_leaving (ASTNode (self .tree , destination ))
115+ on_node_leaving (ASTNode (self ._tree , destination ))
116116
117117 @deprecated (reason = 'Use ASTNode functionality instead.' )
118118 def children_with_type (self , node : int , child_type : ASTNodeType ) -> Iterator [int ]:
119119 """
120120 Yields children of node with given type.
121121 """
122- for child in self .tree .succ [node ]:
123- if self .tree .nodes [child ]['node_type' ] == child_type :
122+ for child in self ._tree .succ [node ]:
123+ if self ._tree .nodes [child ]['node_type' ] == child_type :
124124 yield child
125125
126126 @deprecated (reason = 'Use ASTNode functionality instead.' )
127127 def list_all_children_with_type (self , node : int , child_type : ASTNodeType ) -> List [int ]:
128128 list_node : List [int ] = []
129- for child in self .tree .succ [node ]:
129+ for child in self ._tree .succ [node ]:
130130 list_node = list_node + self .list_all_children_with_type (child , child_type )
131- if self .tree .nodes [child ]['node_type' ] == child_type :
131+ if self ._tree .nodes [child ]['node_type' ] == child_type :
132132 list_node .append (child )
133133 return sorted (list_node )
134134
@@ -140,68 +140,68 @@ def all_children_with_type(self, node: int, child_type: ASTNodeType) -> Iterator
140140 yield from self .list_all_children_with_type (node , child_type )
141141
142142 @deprecated (reason = 'Use ASTNode functionality instead.' )
143- def get_first_n_children_with_type (
143+ def first_n_children_with_type (
144144 self , node : int , child_type : ASTNodeType , quantity : int
145145 ) -> List [int ]:
146146 """
147147 Returns first quantity of children of node with type child_type.
148148 Resulted list is padded with None to length quantity.
149149 """
150150 children_with_type = (
151- child for child in self .tree .succ [node ] if self .get_type (child ) == child_type
151+ child for child in self ._tree .succ [node ] if self .type (child ) == child_type
152152 )
153153 children_with_type_padded = chain (children_with_type , repeat (None ))
154154 return list (islice (children_with_type_padded , 0 , quantity ))
155155
156156 @deprecated (reason = 'Use ASTNode functionality instead.' )
157- def get_binary_operation_name (self , node : int ) -> str :
158- assert self .get_type (node ) == ASTNodeType .BINARY_OPERATION
157+ def binary_operation_name (self , node : int ) -> str :
158+ assert self .type (node ) == ASTNodeType .BINARY_OPERATION
159159 name_node , = islice (self .children_with_type (node , ASTNodeType .STRING ), 1 )
160- return self .get_attr (name_node , 'string' )
160+ return self .attr (name_node , 'string' )
161161
162162 @deprecated (reason = 'Use ASTNode functionality instead.' )
163- def get_line_number_from_children (self , node : int ) -> int :
164- for child in self .tree .succ [node ]:
165- cur_line = self .get_attr (child , 'line' )
163+ def line_number_from_children (self , node : int ) -> int :
164+ for child in self ._tree .succ [node ]:
165+ cur_line = self .attr (child , 'line' )
166166 if cur_line is not None :
167167 return cur_line
168168 return 0
169169
170170 @deprecated (reason = 'Use get_proxy_nodes instead.' )
171- def get_nodes (self , type : Union [ASTNodeType , None ] = None ) -> Iterator [int ]:
172- for node in self .tree .nodes :
173- if type is None or self .tree .nodes [node ]['node_type' ] == type :
171+ def nodes (self , type : Union [ASTNodeType , None ] = None ) -> Iterator [int ]:
172+ for node in self ._tree .nodes :
173+ if type is None or self ._tree .nodes [node ]['node_type' ] == type :
174174 yield node
175175
176- def get_proxy_nodes (self , * types : ASTNodeType ) -> Iterator [ASTNode ]:
177- for node in self .tree .nodes :
178- if len (types ) == 0 or self .tree .nodes [node ]['node_type' ] in types :
179- yield ASTNode (self .tree , node )
176+ def proxy_nodes (self , * types : ASTNodeType ) -> Iterator [ASTNode ]:
177+ for node in self ._tree .nodes :
178+ if len (types ) == 0 or self ._tree .nodes [node ]['node_type' ] in types :
179+ yield ASTNode (self ._tree , node )
180180
181181 @deprecated (reason = 'Use ASTNode functionality instead.' )
182- def get_attr (self , node : int , attr_name : str , default_value : Any = None ) -> Any :
183- return self .tree .nodes [node ].get (attr_name , default_value )
182+ def attr (self , node : int , attr_name : str , default_value : Any = None ) -> Any :
183+ return self ._tree .nodes [node ].get (attr_name , default_value )
184184
185185 @deprecated (reason = 'Use ASTNode functionality instead.' )
186- def get_type (self , node : int ) -> ASTNodeType :
187- return self .get_attr (node , 'node_type' )
186+ def type (self , node : int ) -> ASTNodeType :
187+ return self .attr (node , 'node_type' )
188188
189189 @deprecated (reason = 'Use ASTNode functionality instead.' )
190- def get_method_invocation_params (self , invocation_node : int ) -> MethodInvocationParams :
191- assert self .get_type (invocation_node ) == ASTNodeType .METHOD_INVOCATION
190+ def method_invocation_params (self , invocation_node : int ) -> MethodInvocationParams :
191+ assert self .type (invocation_node ) == ASTNodeType .METHOD_INVOCATION
192192 # first two STRING nodes represent object and method names
193193 children = list (self .children_with_type (invocation_node , ASTNodeType .STRING ))
194194 if len (children ) == 1 :
195- return MethodInvocationParams ('' , self .get_attr (children [0 ], 'string' ))
195+ return MethodInvocationParams ('' , self .attr (children [0 ], 'string' ))
196196
197- return MethodInvocationParams (self .get_attr (children [0 ], 'string' ),
198- self .get_attr (children [1 ], 'string' ))
197+ return MethodInvocationParams (self .attr (children [0 ], 'string' ),
198+ self .attr (children [1 ], 'string' ))
199199
200200 @deprecated (reason = 'Use ASTNode functionality instead.' )
201- def get_member_reference_params (self , member_reference_node : int ) -> MemberReferenceParams :
202- assert self .get_type (member_reference_node ) == ASTNodeType .MEMBER_REFERENCE
201+ def member_reference_params (self , member_reference_node : int ) -> MemberReferenceParams :
202+ assert self .type (member_reference_node ) == ASTNodeType .MEMBER_REFERENCE
203203 params = [
204- self .get_attr (child , 'string' ) for child in
204+ self .attr (child , 'string' ) for child in
205205 self .children_with_type (member_reference_node , ASTNodeType .STRING )
206206 ]
207207
@@ -225,11 +225,11 @@ def get_member_reference_params(self, member_reference_node: int) -> MemberRefer
225225 return member_reference_params
226226
227227 @deprecated (reason = 'Use ASTNode functionality instead.' )
228- def get_binary_operation_params (self , binary_operation_node : int ) -> BinaryOperationParams :
229- assert self .get_type (binary_operation_node ) == ASTNodeType .BINARY_OPERATION
230- operation_node , left_side_node , right_side_node = self .tree .succ [binary_operation_node ]
228+ def binary_operation_params (self , binary_operation_node : int ) -> BinaryOperationParams :
229+ assert self .type (binary_operation_node ) == ASTNodeType .BINARY_OPERATION
230+ operation_node , left_side_node , right_side_node = self ._tree .succ [binary_operation_node ]
231231 return BinaryOperationParams (
232- self .get_attr (operation_node , 'string' ), left_side_node , right_side_node
232+ self .attr (operation_node , 'string' ), left_side_node , right_side_node
233233 )
234234
235235 @staticmethod
0 commit comments