С.В. КИБАНОВ Научный руководитель - Г.М. СЕРГИЕВСКИЙ, к.т.н., доцент И СЕМАНТИКИ ПРЕДМЕТНО-ОРИЕНТИРОВАННЫХ

реклама
С.В. КИБАНОВ
Научный руководитель - Г.М. СЕРГИЕВСКИЙ, к.т.н., доцент
Национальный исследовательский ядерный университет «МИФИ»
МЕТАЯЗЫК ДЛЯ СПЕЦИФИКАЦИИ СИНТАКСИСА
И СЕМАНТИКИ ПРЕДМЕТНО-ОРИЕНТИРОВАННЫХ
ЯЗЫКОВ
Рассматриваются актуальные методы спецификации синтаксиса и семантики
предметно-ориентированных языков, ориентированные на реализацию.
Обсуждаются возможности и преимущества предлагаемого метаязыка.
В реалиях современного мира растет популярность концепции
языково-ориентированного программирования. В рамках этой концепции
предполагается разработка предметно-ориентированного языка (DSL)
с дальнейшим использованием для решения задач конкретной предметной
области. К сожалению, существующие на данный момент системы
реализации подобных языков, такие как MS DSL Tools [1], страдают
от недостаточной эффективности методов спецификации DSL. Так,
спецификация на основе схем синтаксически управляемого перевода (СУсхем) [2], при всей своей высокой наглядности, обладает недостаточной
выразительной мощностью. С другой стороны, метод спецификации
с использованием атрибутных грамматик [3], в силу излишней свободы
спецификации, не дает требуемой эффективности реализуемых программ.
В качестве основных принципов для языка спецификации с точки
зрения интерпретации каждой конструкции такого языка, можно
выделить следующие:
1. Для каждой конструкции задается ассоциативная связь с другими
конструкциями языка;
2. Выделяются компоненты этой конструкции;
3. Описываются
правила
интерпретации
конструкции
с использованием контекста.
В ходе исследований был предложен язык, способный разрешить ряд
проблем современных систем. Метаязык спецификации DSL изначально
основывается на механизме атрибутных грамматик. Это обеспечивает
ассоциативную связь в рамках вхождения нетерминалов в правую часть
правила грамматики, связанного с нетерминалом левой части. Сами
вхождения нетерминалов в правила соответствуют компонентам
конструкций. При этом язык дополнительно включает в себя правила
интерпретации каждой конструкции языка с учетом контекста (состояния
памяти до и после интерпретации данной конструкции и ее
составляющих) , что реализуется с использованием входных и выходных
атрибутов в описании действий с компонентами конструкции, задаваемом
в выходной форме. Кроме того, в метаязык вводятся средства
рекурсивного обращения к другим конструкциям языка в выходной
форме. При таком расширении метаязык спецификации предметноориентированных языков
соответствует выделенным критериям и
успешно сочетает в себе принципы объектно- и синтаксическиориентированного программирования [4].
С точки зрения объектно-ориентированного программирования,
метаязык придерживается следующих принципов:
1. Синтаксическое
описание
реализуемого
языка
задается
определением типов (классов) с возможностью дополнительных
ограничений, выражаемых через условия на атрибуты (поля и свойства)
типов;
2. Конструируемые преобразования выражаются в функциональном
стиле в терминах операций над типовыми переменными, возможно,
использованием
дополнительных
атрибутов,
необходимых
для определения требуемых преобразований;
3. Процедуры формирования значений атрибутов (методы) задаются
с помощью «семантических» правил, сопоставляемых синтаксическим
правилам.
Следуя этим принципам, мы получаем алгоритмически полный
объектно-ориентированный
язык,
обеспечивающий
высокую
эффективность реализации программ на специфицированном языке DSL.
В настоящее время ведется разработка данного метаязыка, а также
продолжаются исследования, нацеленные на повышение эффективности
данной разработки.
1.
2.
3.
4.
Список литературы
Кознов Д. В. Основы визуального моделирования: Учебное пособие. М.: Интернетуниверситет информационных Технологий; БИНОМ. Лаборатория знаний, 2008,
с. 211-222
A. V. Aho and J. D. Ullman, The Theory of Parsing, Translation, and Compiling, Vol. 1,
Parsing. Prentice Hall, 1972, c. 215-223
A. V. Aho and J. D. Ullman, The Theory of Parsing, Translation, and Compiling, Vol. 2,
Compiling. Prentice-Hall, 1973, c. 777-781
Сергиевский Г. М., Волченков Н.Г. Функциональное и логическое программирование.
М.: Академия, 2010.
Скачать