Город: Тест Санкт-Петербург Новосибирск Казань Язык: Русский English

Синтаксический анализ для "встроенных" языков (Андрей Бреслав, кафедра Высшей математики СПбГУ ИТМО)
Computer Science семинар

Что: Лекция
Когда: Воскресенье, 27 февраля 2011, 15:35–17:10
Где: ПОМИ РАН
Слайды: csseminar_lecture_270211.pdf

Описание

Разрабатывая программы Java, Python, PHP и т.д., мы зачастую используем несколько языков одновременно: в нашем коде на языке общего назначения, например, Java, встечаются вкрапления других языков, например, регулярные выражения, пути в файловой системе и другие URI, SQL-запросы, тэги XML и HTML. Особенно часто это происходит при разработке вэб-приложений и приложений уровня предприятия, то есть при выполнении работы, в которой, по многим оценкам, занято большинство программистов на планете.

Как происходит взаимодействие программы на Java и кода на SQL или HTML? Очень часто "малый" язык используется внутри строковых литералов, например, при работе с базой данных с использованием стандартной библиотеки JDBC, SQL-запросы в программе на Java могут выглядеть так:

connection.prepareStatement("SELECT * FROM People" + whereClause);

Такой подход универсален: любой текстовый язык можно "встроить" в Java, заключив в двойные кавычки. Однако есть одна проблема: компилятор Java полностью игнорирует содержимое строковых литералов, и поэтому все ошибки (опечатки в именах, забытые скобки и т.д.) обнаруживаются только на стадии выполнения программы.

В докладе будет рассказано об алгоритмах, позволяющих статически (не запуская программу) гарантировать, что все строки в Java-программе, содержащие код на SQL или каком-то другом языке, не содержат синтаксических ошибок. Работа этих алгоритмов будет продемонстрирована примерах, заимствованных из реальных проектов. Также будут предложены возможные темы для бакалаврских и магистерских работ в данной области.

Работа выполнена в Университете Тарту и исследовательском центе STACC (Эстония) в соавторстве с А. Аннамаа и В. Вене.

Литература:

Обзорная статья по теме доклада: An interactive tool for analyzing embedded SQL queries, APLAS 2010, LNCS 6461, pp. 131-138, 2010. Препринт доступен без регистрации на домашней странице автора.

Видео