УДК 681
О. Г. ШАРОВ, А. Н. АФАНАСЬЕВ
ТРАНСЛИРУЮЩАЯ АВТОМАТНАЯ ГРАФИЧЕСКАЯ ГРАММАТИКА
Предлагается формализм автоматной транслирующей графической грамматики, позволяющей формировать отображения диаграмм графических языков в терминах иных графических, либо текстовых языков.
Ключевые слова: графический язык, грамматика, модель.
ЯУТ-грамматика - это транслирующая грамматика, позволяющая производить синтаксически управляемую трансляцию диаграмм графического языка в текстовые и графические формальные (целевые) описания. Для удобства определения грамматики и последующей реализации на её базе инструментальных средств, грамматика, по типу целевого языка, подразделяется на два вида:
ЯУТЧ-грамматика. Грамматика, для которой целевым является текстовое формальное описание (программы на языке программирования, текст на языке спецификаций и т. п.).
ЯУТ§-грамматика. Грамматика, позволяющая формировать выходные цепочки в терминах графических языков.
11УТ-грамматика является развитием ЯУ -грамматики, в которой продукции схемы грамматики расширены для хранения в них соответствия в терминах целевого формального описания, а внутренняя память хранит информацию, необходимую для процесса трансформации.
ОПРЕДЕЛЕНИЕ ЯУТ^ГРАММАТИКИ
ЯУТЧ-грамматикой языка Ь (О) называется упорядоченная семёрка непустых множеств
в = {У9и91:Л,м,я,г0)9
где
1. V - алфавит операций над внутренней памятью базового языка;
2. I/ - алфавит операций над внутренней памятью, используемый целевым языком;
3. Е - терминальный алфавит графического языка являющийся объединением множеств его графических объектов и связей (множество примитивов графического языка);
4. 2 _ квазитермальный алфавит, являющийся расширением терминального алфавита, состоит из:
• квазитермов графических объектов,
О. Г. Шаров, А. Н. Афанасьев, 2007
• квазитермов графических объектов, имеющих более одного входа,
• квазитермов связей - меток с определёнными для них семантическими различиями,
• квазитерма, определяющего отсутствие связей - меток;
5. М = ТТ и ТЫ - объединение алфавитов терминальных (77) и нетерминальных (ГА0 символов целевого языка.
К = {гь / =0,1} - схема грамматики в (множество имен комплексов продукций, причем каждый комплекс г, состоит из подмножества Ру продукций г, =у = 1, УД
6. го е Л — аксиома КУ - грамматики (начальный комплекс продукций), гкеЯ - заключительный комплекс продукций.
Продукция Р{1 е /;. имеет вид
где ^ХУц...,?,,) - /7-арное отношение, определяющее вид операции над внутренней памятью в зависимости от у е {0,1,2,3};
- оператор модификации, определённым образом изменяющий вид операции над памятью базового (целевого) языка, причём
¡л е {0,1,2};
гт - имя комплекса продукции - приёмника; X - отображение квазитерма в терминах целевого языка (набор символов т еМ).
Методика построения ЯУТЧ-грамматики расширяет методику построения ЯУ-грамматики на этапе синтеза следующими шагами: 1) определение отображения квазитерма в терминах целевого языка для каждой продукции, т. к. один и тот же квазитерм в зависимости от контекста может интерпретироваться разным набором символов целевого языка;
2) определение операций над внутренней памятью для элементов целевого языка. На этапе анализа устранение недетерминированности и неопределённости производится по аналогии с соответствующими операциями ЯУ-грамматики.
А вот задача минимизация грамматики претерпевает некоторые изменения и для ЯУМ-грамматики осуществляется как циклическое применение двух типов минимизаций:
1) минимизация количества состояний;
2) минимизация отображений.
Этап минимизации количества состояний соответствует этапу минимизации ЯУ-грамматики. Однако в данном случае эквивалентными состояниями считаются состояния, у которых, кроме одинаковых продолжений распознаваемой цепочки справа и операций над внутренней памятью, одинаковыми являются транслирующие операции над внутренней памятью и отображения в терминах целевого языка. Сама процедура минимизации остается неизменной.
Минимизация отображений предполагает поиск и свертку эквивалентных цепочек символов терминального и нетерминального алфавитов целевого языка. В качестве возможных эквивалентных фрагментов могут использоваться цепочки, не содержащие символов, для которых необходимо применять операции над внутренней памятью.
Специфика трансляции в текстовый целевой язык состоит в том, что символы результирующей цепочки должны быть выстроены в определённой последовательности. Положительного эффекта при решении этой проблемы можно добиться использованием стеков для хранения информации о связях меток, исходящих из объектов с более чем одним выходом.
ОПРЕДЕЛЕНИЕ ЯУТ§-ГРАММАТИКИ
^\П^-грамматикой языка Ь (в) называется упорядоченная восьмёрка непустых множеств
где
1. V-алфавит операций над внутренней памятью базового языка;
2. и - алфавит операций над внутренней памятью, используемый целевым языком;
3. £ - терминальный алфавит графического языка, являющийся объединением множеств его графических объектов и связей (множество примитивов графического языка);
4. £ - квазитермальный алфавит, являющийся расширением терминального алфавита, строится по аналогии с квазитермальным алфавитом ЯУТ1-грамматики;
5. М = ТТ и ТЫ - объединение алфавитов терминальных (77) и нетерминальных (77У) символов целевого языка;
6. Р = ^епега1е_трЩ(), §епега1е_ои1ри1(), 5е1ес1_оЩрЩ(), 5йск_соппес1юп_рот15()} -множество транслирующих функций по работе с элементами множества М\
7. Я = {ги / =0,1} - схема грамматики в;
8. го е Я - аксиома ЯУ-грамматики (начальный комплекс продукций), гк еЯ - заключительный комплекс продукций.
• RVTg-гpaммaтикy можно назвать расширением КУТ1-грамматики для графических языков. Она наследует правила формирования продукций грамматики, а также все этапы синтеза и анализа грамматики. Отличием является то, что элементы множества М- это графические примитивы. Некоторые из них, а именно, графические объекты, содержащие более одного входа или выхода, могут быть нагружены транслирующими функциями из множества Т7 для обеспечения соответствия входов и выходов таких объектов базового и целевого языков.
Назначение транслирующих функций и выполняемые ими операции описаны ниже: ® geпerateJnput() - генерация точек соединения для входящих связей. Выполняется при первичном анализе графических объектов, содержащих более одного входа;
• generate_output() - генерация точек соединения для исходящих связей. Выполняется при первичном анализе графических объектов, содержащих более одного выхода.
® 8е!ес1_оЩри1() - выбор исходящей точки соеди-
• нения элемента в качестве продолжателя цепочки целевого языка. Применение этой функции (назовем её событийной) осуществляется после генерации точек соединения для исходящих связей, выбирается она из сгенерированных точек. В общем случае алгоритм выбора не регламентируется, т. е. выбор является случайным;
• 5^ск_соппес1;юп_рот15() - связывание точек соединения связи и объекта. Событийная функция, выполняемая при вторичном анализе графических объектов, содержащих более одного входа. Производит связывание входящей связи
с точкой соединения объекта, информация о которой хранится во внутренней памяти. Наличие этих функций позволяет сформировать алгоритм построения выходной цепочки, основными операциями в котором являются выбор точки - продолжателя анализа для объектов, содержащих более одного выхода, и компоновка целостной последовательности из уже проанализированных объектов, содержащих более одного входа и связываемых с ними анализируемых объектов.
Алгоритм трансляции строится на базе следующих правил:
1. На количество входных и выходных точек соединения отображений ограничений не накладывается.
2. Для каждого отображения, кроме начального и конечного, существует, как минимум, по одной входной и выходной точке соединения, а для начальных и конечных отображений - минимум по одной выходной и входной точке соединения соответственно, которые задают направление построения диаграммы в терминах целевого языка.
3. Точки соединения отображения, не подпадающие под действия условия п. 2, аккумулируются в памяти. Входные точки соединения будут задействованы при вторичном анализе графического объекта. Выходные точки соединения будут востребованы в тупиковых ситуациях, когда явных продолжателей трансляции диаграммы нет (см. табл. 1 правила 3-6).
ПРИМЕРЫ КУТ-ГРАММАТИК
Для наглядности Ю/Т-грамматика была реализована для базового языка ПГСА, в качестве целового текстового языка выбран язык ПЛСА (см. табл. 1), а в качестве целевого графического языка - язык сетей Петри (см. табл. 2). В столбцах таблиц приняты следующие сокращения: К - комплекс, КП - комплекс -приёмник, О - отображение. В табл. 2 в столбце О указаны ссылки на рис. 1.
ЯУТ-отношения «*» и «**» проверяют состояние лент памяти и стеков после анализа последнего символа. Трансляция считается корректно завершённой при условии, что эти отношения выполняются. Отношение, помеченное символом «*», одинаково для обеих грамматик и выглядит как
*= \У,(е1ш,е2п\е3т,е4ш,2а(1)) &
& \У3(та(1)>2, та(2)=ка(,)Х
Таблица 1. Пример ЯУТ^грамматики ___(ПГСА -> ПЛСА)
№ К Квази- К ЯУЛ-отношение о
пп терм П синтакс. гранслир.
1 г0 А0 Г| 0 0 А0
2 П ге1 Гз 0 0
3 г2 1аЬе1Р гз \У2(Ь1т) \У2ОЬ(4))
4 1аЬе1ш Гз ШЬгт) )1
5 1аЬе1К Гз \У2(Ь3т) ]!
6 1аЬе1ь Гз \У2(Ь4т)/ \У3(т'(2)= к1(3)) к'(3)) }|/к 1
7 по 1аЬе1 Гк * **
8 гз А Г] 0 0 А
9 Р П W1(i!(4)) Р(1
10 \У Г2 \¥1(11(1), 12т)/ \У2(е'<|>) М^Г'5')
] 1 Ж Г2 \У,(241V w(i
12 К Г] Wз(k> 1) W1(it(6,) [\/к]1
13 Ь Г2 ЛУ2(е,(2)) ^ 1 w{¡
14 Ь ь А« Ш,(тс(т'(2)) / \У3(т,(2) < к1(3)) W2(it(/,)
10 Ак Г2 0 0 Ак
11 Гк 0 0
Таблица 2. Пример ЯУТ§ - грамматики
(ПГСА —> сети Петри)
№ К Квази- К ЛУТ^-отношение О
пп терм П синтакс. транслир.
1 г0 А0 Г| 0 0 а
2 П ге1 Гз 0 0 е
3 г2 1аЬе1Р Гз W2(b,m) \¥2(Ь11т) е
4 1аЬе1^< Гз \У2(Ь2т) \У2(Ь12т) е
5 1аЬе1я г3 \У2(Ь3т) \¥2(Ьит) е
6 1аЬе^ Гз W2(b4m)/ ХУ3(т,(2)= к,(3)) W2(b14m) е
7 по 1аЬе1 Гк * **
8 Гз А Г| 0 0 б
9 Р Г| \¥,(11т) Ш,(1Ит) в
10 XV Г2 \^2(е'( 1') г
11 Ж Г2 W1(2t<l,)/ W2(lt(п) W2(ll(",)& Ш,(0,(И))
12 Я Г1 w1(t зт*к)/ Wз(k>l) ж
13 ь Г2 ^2(е'<2)) 114т) 3
14 ь Г2 \¥,(тс(тн") / Wз(mt(2) < к,(3)) WI(dec(шt(,^))
15 Ак Г2 0 0 д
16 Гк 0 0
Для ЯУП-грамматики отношение «**» не содержит операций с памятью, т. е. ** = Ш.А для 11\ГП-грамматики отношение проверяет пустоту во всех стеках и очередях, т. е. **= \У2(е11т,е 12т,е1 Зт,е14т,2а( 1&
& ^/2(та(П) = 0, ша(|2) = 0)
а б в г
д е ж з
Рис. 1. Отображения символов ПГСА в терминах
сетей Петри
РЕАЛИЗАЦИЯ И ИСПОЛЬЗОВАНИЕ ЯУТ-ГРАММАТИК
В настоящее время реализовано инструментальное средство, позволяющее строить параллельные графические схемы алгоритмов (ПГСА) и производить их синтаксически ориентированную трансляцию в па-
раллельные логические схемы алгоритмов (ПЛСА), на базе ЯУТ^фамматики.
Ведутся работы по изучению возможности применения транслирующей грамматики в качестве инструментария для получения денотационной и операционной семантик диаграмм графических языков, а также её использования в инструментальных средствах, поддерживающих формирование диаграмм графических языков с переменной (динамической) семантикой.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Шаров, О. Г. Автоматная графическая грамматика / О. Г. Шаров, А. Н. Афанасьев // Вестник Ульяновского государственного технического университета. - 2005. - №1. - С. 54- 56.
2. Шаров О. Г. Синтаксически ориентированная реализация графических языков на основе автоматных графических грамматик / О. Г. Шаров, А. Н. Афанасьев // Программирование. - 2005. -№6. - С. 56-66.
Шаров Олег Геннадьевич, магистр техники и технологии, аспирант кафедры «Вычислительная техника».
Афанасьев Ачександр Николаевич, кандидат технических наук, доцент кафедры «Вычислительная техника».