in experimental/piranha_playground/rule_inference/static_inference.py [0:0]
def simplify_query(self, capture_group):
"""
Simplify a query removing all the children of capture_group and replacing it with a wildcard node.
This should be replaced with Piranha at some point.
:param capture_group: The capture group to simplify.
"""
comby = Comby()
match = f"(:[[node_name]] :[_]) {capture_group}"
rewrite = f"(:[[node_name]]) {capture_group}"
self.query_str = comby.rewrite(self.query_str, match, rewrite)
# Now for every child of capture_group, we need to remove equality checks from the query
stack = [self.capture_groups[capture_group]]
while stack:
first = stack.pop()
to_remove = next(
key for key, value in self.capture_groups.items() if value == first
)
match = f"(#eq? {to_remove} :[_])"
self.query_str = comby.rewrite(self.query_str, match, "")
self.capture_groups.pop(to_remove, None)
for child in first.named_children:
stack.append(child)