metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-11-21 01:44 pm

diff и смысл сравниваемых файлов

А вот скажите, есть ли какая-нибудь вариация diff, умеющая не только сравнивать текст, а кроме того, еще и пользоваться информацией о структуре или смысле этого текста?
Например, сравнение двух исходников было бы намного гуманнее, если сначала их оба отпарсить в AST, а потом только сравнивать - сразу прекратились бы всевозможные заморочки типа "поменяли порядок расположения методов, переформатировали код - diff показывает хрень".
Если сравнивать что-то вроде таблиц БД, то очевидно, что сначала надо сравнить их метаданные, построить (возможно, при помощи человекопользователя) трансформацию одной таблицы в другую, а потом уже с ее учетом сравнивать, "что изменилось в записях".
В принципе, наверно можно такое сделать, прикрутив между diff и файлами какие-то промежуточные фильтры.

[identity profile] sorhed.livejournal.com 2010-11-21 12:47 pm (UTC)(link)
А, кстати, если мне не изменяет память, то такой дифф есть в Darcs. Но только для хаскела, разумеется.

[identity profile] alexott.livejournal.com 2010-11-21 01:35 pm (UTC)(link)
на хаскеле насколько я помню есть несколько парсеров для разных языков, так что можно написать