прикольная лекция, красивая постановка задачи.
https://www.youtube.com/watch?v=PARloe1mPkc
на видео снят только лектор, поэтому презентацию надо брать отсюда:
http://old.compsciclub.ru/sites/defa...r_breslav.pptx
постановка задачи:
Есть код на исходном языке (например, на java), который генерирует строчку на другом "встроенном" языке (например, на sql). Создать инструмент, который, не запуская(!!!!) исходный код, ответит, является ли строка на "встроенном" языке синтаксически правильной для "встроенного" языка? А если не является, то указать в каких именно местах.
подход к решению задачи:
выполняется синтаксический анализ кода на исходном языке и строится регулярное выражение для строки встроенного языка. по регулярному выражению доказывается валидность для встроенного языка.
пример правильного Java-кода с синтаксическими ошибками в SQL:
Код:
public PreparedStatement selectOrders(int userId, boolean completedOnly, boolean ascOrder) {
String sql = "SELECT id, date, title," +
"FROM Orders" +
"WHERE (user_id=" + userId;
if (completedOnly)
sql += "AND (completed=FALSE)";
sql += "ORDER BY date";
sql += (ascOrder) ? "ASC" : "DESC";
return ConnectionProvider.conn.prepareStatement(sql);
}
красиво, черт возьми.
upd: с 1:03:30 демонстрируется как это работает вживую
https://youtu.be/PARloe1mPkc?t=1h3m30s