Добрый день. Имеется такая задача: допустим, есть два исходника одной и той же программы(задачи). Язык заранее известен. Один исходник выдает правильный результат, второй нет. Необходимо сравнить их и программно понять, почему первый проходит, а второй нет.
Например:
1.
int c;
cin >> c;
...
if (c == 1)
2.
long long c;
cin >> c;
...
if (c != 1)
Пусть второй код будет правильный, тогда причина почему первый не проходит в типе переменной c и знака сравнения.
Мои идеи, как это все реализовать. Для начала реализовать аналог diff. Далее для полученных строк построить синтаксическое дерево(с помощью antlr, например). Чтобы была возможность определить тип переменной. И уже сравнить два дерева.
Возможно, есть другие идеи как это все реализовать. У кого какие мысли?