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




Скачать 26.38 Kb.
Название Создание диалектов языков программирования с использованием грамматических аспектов
Дата публикации 15.09.2014
Размер 26.38 Kb.
Тип Документы
literature-edu.ru > Лекции > Документы
СОЗДАНИЕ ДИАЛЕКТОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ С
ИСПОЛЬЗОВАНИЕМ ГРАММАТИЧЕСКИХ АСПЕКТОВ

A.A. Бреслав
Санкт-Петербургский государственный университет информационных
технологий, механики и оптики, Санкт-Петербург, Россия
Некоторые языки программирования можно описать как модификации других языков, вносящие небольшие изменения в синтаксис и (или) семантику. Такие языки называют диалектами. Диалекты языков программирования встречаются довольно часто: практически каждая СУБД использует свой диалект SQL, язык Java 5 можно рассматривать как диалект Java 1.4, генераторы синтаксических анализаторов используют диалекты нотации Бэкуса-Науэра и т. д.

Мотивацией к созданию диалектов может служить специализация языка для решения определенного круга задач, например, введение в язык C (или другой императивный язык) конструкций для параллельного программирования, контроля безопасности или векторизованных вычислений. Распространение метаданных в популярных языках (Java, C#) говорит о росте потребностей индустрии в этом направлении.

Другим примером служит разработка встроенных предметно-ориентированных языков (Embedded DSLs), очень распространенных в мире функциональных и динамических языков программирования [1, 2], а так же в языке C++ [3]. Введение таких языков представляет собой по сути создание диалектов того языка, в который происходит встраивание. Поскольку большинство используемых языков программирования не предназначены для этого, получающиеся языки нередко обладают серьезными недостатками: от неудобного синтаксиса до потери производительности (либо создаваемого кода, либо компилятора).

Мы представляем подход к созданию диалектов на основе ранее созданных языков. Этот подход реализуется в рамках инструментального средства Grammatic [4]. Синтаксис диалекта определяется на основе синтаксиса исходного языка с помощью грамматических аспектов — средства, концепция которого основана на идеях аспектно-ориентированного программирования [5].

В общем случае грамматический аспект представляет собой набор правил, сопоставляющих составным частям грамматики наборы атрибутов — метаданные. Это соответствует встраиванию кода (weaving) в точках присоединения (point cuts) в языке AspectJ [6]. В принципе, метаданные могут иметь произвольную структуру, а их семантика никак не фиксируется. Для реализации аспектов, позволяющих описывать диалекты, используются метаданные, описывающие модификации синтаксиса исходного языка: вставки, замены и удаления фрагментов правил.

Статическая семантика диалекта (как и исходного языка) задается на основе схемы атрибутной трансляции. Грамматические аспекты позволяют модифицировать семантику исходного языка, внося изменения в правила вычисления атрибутов. Особый интерес представляют диалекты, не вносящие новых семантических понятий, поскольку их можно реализовывать строго на уровне грамматического определения, не дополняя набор семантических действий анализатора — только используя уже существующие.

Описанный подход позволяет быстро создавать диалекты существующих языков, максимально используя уже разработанные части системы. С помощью этого подхода возможно как быстрое прототипирование, так и разработка полноценных языков, включая встроенные предметно-ориентированные языки и специализированные версии языков общего назначения.

Список литературы


  1. Augustsson L., Mansell H., Sittampalam G. Paradise: a two-stage DSL embedded in Haskell // ICFP '08: Proceeding of the 13th ACM SIGPLAN international conference on Functional programming. Victoria, BC, Canada. 2008. С. 225 — 228.

  2. Cunningham H. C. Reflexive metaprogramming in Ruby // Journal of Computing Sciences in Colleges. 2007. Vol. 22(5). C. 145 — 156.

  3. Czarnecki K., O'Donnell J. T., Striegnitz J., Taha W. DSL Implementation in MetaOCaml, Template Haskell, and C++ // Proceedings of the Domain-Specific Program Generation. 2003. С. 52 — 72.

  4. Бреслав А. А., Попов И. Ю. Применение принципов MDD и аспектно-ориентированного программирования к разработке ПО, связанного с формальными грамматиками // Научно-технический вестник / СПбГУ ИТМО. 2008. Вып. 57. С. 87 –97.

  5. 1.Kiczales G., Lamping J., Lopes C., Hugunin J., Hilsdale E., Boyapati C. Aspect-oriented programming // Xerox Corporation, 2002.

  6. Kiczales G., Hilsdale E., Hugunin J., Kersten M., Palm J., Griswold W. G. An overview of AspectJ // Proceedings of the 15th European Conference on Object-Oriented Programming. London, Springer-Verlag, 2001. С. 327 – 353.

Добавить документ в свой блог или на сайт

Похожие:

Создание диалектов языков программирования с использованием грамматических аспектов icon Основы информатики и вычислительной техники системы программирования
Рассматриваются основные понятия языков программирования. Излагаются процедурный и объектный подходы в программировании. Более подробно...
Создание диалектов языков программирования с использованием грамматических аспектов icon Конспект лекций доцента и. А. Волковой по курсу «системы программирования»
Система программирования – комплекс программных инструментов и библиотек, который поддерживает создание и существование программного...
Создание диалектов языков программирования с использованием грамматических аспектов icon Лабораторная работа №6 Итоговое задание «Логическое программирование на языке Visual Prolog»
Получить практические навыки применения систем и языков логического программирования для построения систем, основанных на знаниях....
Создание диалектов языков программирования с использованием грамматических аспектов icon Обоснование выбора средств и методов разработки
На данный момент существует огромное множество языков программирования с помощью которых можно написать данную дипломную работу....
Создание диалектов языков программирования с использованием грамматических аспектов icon Григорьев С. В.(5 курс, каф Системного программирования, спбГУ)
Целью работы является разработка генератора анализаторов для языков, задаваемых произвольными (в том числе неоднозначными) контекстно-свободными...
Создание диалектов языков программирования с использованием грамматических аспектов icon Рабочая программа по курсу «основы Программирования на языке ассемблер»
Программа предназначена для обучения основам программирования на языке низкого уровня Ассемблере учащихся средних школ, учреждений...
Создание диалектов языков программирования с использованием грамматических аспектов icon В этой лекции рассматриваются следующие вопросы: Основные идеи создания C#
Видимо, это решение можно считать более или менее вынужденным, так как платформа. Net изначально предлагала значительно большую функциональность,...
Создание диалектов языков программирования с использованием грамматических аспектов icon Программа управления базой
Программа разработана для работы с базой данных Mysql. Информационный модуль работы с базой данных написан на языке программирования...
Создание диалектов языков программирования с использованием грамматических аспектов icon Урок-конгресс «Русский язык в кругу славянских языков. Классификация...
«Генеалогическое древо индоевропейских языков», географическая карта мира, схема «родословного древа славянских языков» (на доске...
Создание диалектов языков программирования с использованием грамматических аспектов icon Практикум на ЭВМ технология программирования в среде С++
Трунов К. В., Рыков В. И. Методы и технологии С++. Технология программирования в среде С++. /Издание Башкирского ун-та. Уфа 2007....
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции