Скачать 26.38 Kb.
|
СОЗДАНИЕ ДИАЛЕКТОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ГРАММАТИЧЕСКИХ АСПЕКТОВ 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]. В принципе, метаданные могут иметь произвольную структуру, а их семантика никак не фиксируется. Для реализации аспектов, позволяющих описывать диалекты, используются метаданные, описывающие модификации синтаксиса исходного языка: вставки, замены и удаления фрагментов правил. Статическая семантика диалекта (как и исходного языка) задается на основе схемы атрибутной трансляции. Грамматические аспекты позволяют модифицировать семантику исходного языка, внося изменения в правила вычисления атрибутов. Особый интерес представляют диалекты, не вносящие новых семантических понятий, поскольку их можно реализовывать строго на уровне грамматического определения, не дополняя набор семантических действий анализатора — только используя уже существующие. Описанный подход позволяет быстро создавать диалекты существующих языков, максимально используя уже разработанные части системы. С помощью этого подхода возможно как быстрое прототипирование, так и разработка полноценных языков, включая встроенные предметно-ориентированные языки и специализированные версии языков общего назначения. Список литературы
|
Основы информатики и вычислительной техники системы программирования Рассматриваются основные понятия языков программирования. Излагаются процедурный и объектный подходы в программировании. Более подробно... |
Конспект лекций доцента и. А. Волковой по курсу «системы программирования» Система программирования – комплекс программных инструментов и библиотек, который поддерживает создание и существование программного... |
||
Лабораторная работа №6 Итоговое задание «Логическое программирование на языке Visual Prolog» Получить практические навыки применения систем и языков логического программирования для построения систем, основанных на знаниях.... |
Обоснование выбора средств и методов разработки На данный момент существует огромное множество языков программирования с помощью которых можно написать данную дипломную работу.... |
||
Григорьев С. В.(5 курс, каф Системного программирования, спбГУ) Целью работы является разработка генератора анализаторов для языков, задаваемых произвольными (в том числе неоднозначными) контекстно-свободными... |
Рабочая программа по курсу «основы Программирования на языке ассемблер» Программа предназначена для обучения основам программирования на языке низкого уровня Ассемблере учащихся средних школ, учреждений... |
||
В этой лекции рассматриваются следующие вопросы: Основные идеи создания C# Видимо, это решение можно считать более или менее вынужденным, так как платформа. Net изначально предлагала значительно большую функциональность,... |
Программа управления базой Программа разработана для работы с базой данных Mysql. Информационный модуль работы с базой данных написан на языке программирования... |
||
Урок-конгресс «Русский язык в кругу славянских языков. Классификация... «Генеалогическое древо индоевропейских языков», географическая карта мира, схема «родословного древа славянских языков» (на доске... |
Практикум на ЭВМ технология программирования в среде С++ Трунов К. В., Рыков В. И. Методы и технологии С++. Технология программирования в среде С++. /Издание Башкирского ун-та. Уфа 2007.... |
Поиск на сайте Главная страница Литература Доклады Рефераты Курсовая работа Лекции |