История изменений
Исправление AndreyKl, (текущая версия) :
Aceler уже предложил в каком то виде.
Универсальное может что то и существует, я не слышал. Но для програмного кода, на правах идеи.
Надо строить абстрактное дерево как это делают компиляторы. Это позволит соотносить строки с узлами дерева, как бы они не сдвигались.
Т.е. если хочется понимать что это одна и та же строка «по смыслу» - ну, надо вычислять этот смысл, собственно. Мне так кажется.
Комменты в программе связывать с узлом программы. Если хочется каких-то фич для текста дополнительных - добавлять их из работы с текстом.
Исходная версия AndreyKl, :
гм, как идея, я так понял у тебя код программный,
Строй АСД как это делают компиляторы. Это позволит тебе соотносить строки с узлами дерева, как бы они не сдвигались.
Т.е. если ты хочешь понимать что это одна и та же строка «по смыслу» - ну, надо вычислять этот смысл, собственно. мне так кажется.
Кажется, расстояние левенштайна которое тут ниже советовали, не очень подходит из за твоего требования различать закрывающуюся фигурную скобку.