ЯЗЫКИ ПРОГРАММИРОВАНИЯ С РАСШИРЯЕМЫМ СИНТАКСИСОМ П.В. Егоров Екатеринбург, Июнь 2006.

Презентация:



Advertisements
Похожие презентации
Язык высокого уровня компилятор Программа компиляторов Сделал:Студент группы:Ис-2о(очная)Воротов Валентин.
Advertisements

ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
Интерактивная языконезависимая система поиска шаблонов и дубликатов в программном коде Куделевский Евгений Валерьевич, 545 группа Научный руководитель:
Функциональное программирование Лекция 11. Содержание Анализ искусственных и естественных языков Метапрограммирование: Quotations 2.
Текстовый язык автоматного программирования В. С. Гуров, М. А. Мазин, А. А. Шалыто.
Челябинск 2006 г. 1 Разработка SQL компилятора для СУБД «ОМЕГА» Докладчик Губин Максим Владимирович Научный руководитель Соколинский Леонид Борисович.
Нововведения в C++11 Докладывает: Сорокина Маргарита.
Теория языков программирования и методы трансляции Тема 1 Основные концепции.
Семантический анализ КC-грамматики, с помощью которых описывают синтаксис языков программирования, не позволяют задавать контекстные условия (КУ), имеющиеся.
П РЕОБРАЗОВАНИЕ ПРОГРАММ НА ЯЗЫКЕ C-DVM В ПРОГРАММЫ ДЛЯ КЛАСТЕРОВ выполнила: студентка 527 группы Коваленко Алина Игоревна научный руководитель: профессор,
Теория языков программирования и методы трансляции Тема 3 Лексический анализ.
PL/SQL Триггеры (INSERT, UPDATE, DELETE). Определение Три́ггер базы данных (англ. trigger) это хранимая процедура особого типа, которую пользователь не.
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Системы программирования Средства создания программ Интегрированные системы программированияИнтегрированные системы программирования Среды быстрого проектирования.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 2.
Теория компиляторов-1. Л.71 Классическая теория компиляторов Лекция 7.
Лекция 15 Лекция 15 Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный.
Лекция 1 Введение в программирование и язык C. Машинный код Машинный код или машинный язык система команд (набор кодов операций) конкретной вычислительной.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Транксрипт:

ЯЗЫКИ ПРОГРАММИРОВАНИЯ С РАСШИРЯЕМЫМ СИНТАКСИСОМ П.В. Егоров Екатеринбург, Июнь 2006

Расширение языков Классические способы расширения: Библиотеки функций (Pascal, С, …) Расширение типов (ООП) В данной работе: Расширение синтаксиса

syntax Sql; string personName = Иван; SqlQuery q = sql(select count(*) from Persons where name = $personName); int IvansCount = connection.Execute(q); Пример

Удобство синтаксиса Проверки на этапе компиляции Возможность гибкой поддержки многих технологий и парадигм Что это даёт?

S Q L S Q L Трансляция исходные коды лексический анализатор поток лексем синтаксический анализатор внутреннее представление … исполняемый файл расширяемый лексический анализатор S Q L расширяемый синтаксический анализатор … syntax Sql; B E G I N E N D «BEGIN» «END»

Лексический анализатор Классические способы построения: На базе регулярных выражений и конечных автоматов (LEX) «Подглядывающий» ЛА

Гибкая динамическая настройка лексического анализатора Добавлении нового типа лексем конфликт с добавленными ранее лексемами Пример:

Синтаксический анализатор СА управляется формальной грамматикой Суть расширения – модификация формальной грамматики Как же её модифицировать?

Синтаксический анализатор Совместимость расширения исходный синтаксический анализатор расширенный синтаксический анализатор исходные коды программ ы (лексемы) исходные коды программ ы (лексемы) внутреннее представлени е внутреннее представлени е

Синтаксический анализатор Расширение Расширение – последовательность преобразований грамматики G1 T 1 G2 … T n Gn Каждое преобразование сохраняет совместимость Система безопасных преобразований

Практические результаты Реализованы (на языке Java): Расширяемый «подглядывающий» ЛА Расширяемый предсказывающий LL(1) синтаксический анализатор Для модельного языка Pascal-S разработана грамматика ядра и ряд его независимых расширений

ВЫВОДЫ Языки программирования с расширяемым синтаксисом являются практически реализуемыми! За этим подходом будущее!?..

Вопросы?