С.В. КИБАНОВ Научный руководитель - Г.М. СЕРГИЕВСКИЙ, к.т.н., доцент Национальный исследовательский ядерный университет «МИФИ» МЕТАЯЗЫК ДЛЯ СПЕЦИФИКАЦИИ СИНТАКСИСА И СЕМАНТИКИ ПРЕДМЕТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКОВ Рассматриваются актуальные методы спецификации синтаксиса и семантики предметно-ориентированных языков, ориентированные на реализацию. Обсуждаются возможности и преимущества предлагаемого метаязыка. В реалиях современного мира растет популярность концепции языково-ориентированного программирования. В рамках этой концепции предполагается разработка предметно-ориентированного языка (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.