![]() |
#1 |
Участник
|
прикольная лекция, красивая постановка задачи.
прикольная лекция, красивая постановка задачи.
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 Последний раз редактировалось mazzy; 17.11.2015 в 08:28. |
|
|
За это сообщение автора поблагодарили: gl00mie (1), SOVA (1), Дмитрий А.А. (1). |