Наш SD Smart Differencer сравнивает две исходные программы в соответствии с их точным грамматическим синтаксисом и структурой, а не в соответствии с необработанный текст. Он делает это путем синтаксического анализа (SQL) исходного кода, как это сделал бы компилятор, и сравнения соответствующих структур данных компилятора (например, абстрактных синтаксических деревьев). Следовательно, SmartDifference не заботится о новых строках, пробелах или промежуточных комментариях.
Он сообщает о различиях не в терминах разрывов строк, а в терминах структур языка программирования (переменные, выражения, операторы, блоки, функции, ...) и в терминах, близких к намерениям программиста (удаление, вставка, перемещение, копирование, переименовать) вместо вставки или удаления строки.
SQL (как и многие другие имена компьютерных языков) - это название семейства компьютерных языков, которые похожи по синтаксису, но различаются в деталях. Итак, для Smart Differencer имеет значение какой диалект SQL вы используете. У нас есть внешние интерфейсы SQL (следовательно, SmartDifferncers) для PLSQL и SQL2011. В той мере, в какой ваш SQL не выходит за рамки любого из них, Smart Differencer может работать на вас; в той мере, в какой вы используете дополнительные возможности SQL Server или Postgres, SmartDifferencer в настоящее время не может вам помочь. [Мы разрабатываем языковые синтаксические анализаторы как часть нашего бизнеса, поэтому я полагаю, что это скорее вопрос задержки, чем никогда].
Хотя OP подробно расспрашивал о SQL, его вопрос в заголовке не зависит от языка. SmartDifferencers уже существуют для многих других широко используемых языков, кроме SQL: C, C ++, C #, Java, ...
person
Ira Baxter
schedule
05.11.2010