Skip to content

AndreySmirdin/find-features-in-psi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Feature Finder

Данное приложение позволяет выбрать из множества PSI деревьев только те поддеревья, которые удовлетворяют некоторым требованиям. Например, мы можем найти только те деревья в которых есть 3 функции FUN, внутри каждой из которых находится не менее 5 вызовов RETURN.

Фильтр PSI

Необходимый формат PSI описывается в формате json. Для каждого объекта необходимо указать его тип "type", а также минимальное число повторений "min". Кроме того есть опциональный параметр "children", в котором можно задать ограничения на структура поддерева.

Например, данный пример находит наименьшее поддерево, в котором есть 3 IF, в каждом из которых хотя бы по 5 TRY:

{
    "type": "IF",
    "min": 3, 
    "children": [
        {
            "type": "TRY",
            "min": 5
        }
    ]
}

Однако сущетсвует ограничение. Каждый тип в шаблоне может присутствовать не более 1 раза. В противном случае будет исключение.

Аргуементы программы

  • -i или -input папка с деревьями
  • -o или -output путь до папки, в которую записывать результат
  • -features json файл с описанием структуры поддеревьев

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

java -jar ./find-features-in-psi.jar -i ./trees -o ./trees_with_features --pattern features.json

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages