Вы здесь

Синтаксический анализ для встроенных языков

Лекция
Предмет:
Дата записи:
01.03.11
Дата публикации:
27.02.11
Код для блога:

Разрабатывая программы 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. Препринт доступен без регистрации на домашней странице автора.

Страница лекции на сайте Computer Science Club

 

Дополнительные материалы: 
Файл 20110227_csseminar_alvor_breslav.pptx