Данное приложение позволяет выбрать из множества PSI деревьев только те поддеревья,
которые удовлетворяют некоторым требованиям. Например, мы можем найти только те
деревья в которых есть 3 функции FUN, внутри каждой из которых находится не менее 5 вызовов RETURN.
Необходимый формат PSI описывается в формате json. Для каждого объекта необходимо указать
его тип "type", а также минимальное число повторений "min". Кроме того есть опциональный
параметр "children", в котором можно задать ограничения на структура поддерева.
Например, данный пример находит наименьшее поддерево, в котором есть 3 IF, в каждом
из которых хотя бы по 5 TRY:
{
"type": "IF",
"min": 3,
"children": [
{
"type": "TRY",
"min": 5
}
]
}
Однако сущетсвует ограничение. Каждый тип в шаблоне может присутствовать не более 1 раза. В противном случае будет исключение.
-iили-inputпапка с деревьями-oили-outputпуть до папки, в которую записывать результат-featuresjson файл с описанием структуры поддеревьев
java -jar ./find-features-in-psi.jar -i ./trees -o ./trees_with_features --pattern features.json