Т-грамматика с подпрограммами

Рассмотрим Т-грамматику для условных операторов. Граммати­ка описывает перевод сокращенных и полных условных операто­ров в ПОЛИЗ, например оператора вида if A then В else С; в ПОЛИЗ вида А т1УПЛ В m2БП m1:С т2, где А — логическое выражение, Z и С — любые операторы, в том числе и условные. Ясно, что элементы А, В и С в ПОЛИЗ оператора также будут запи­саны в ПОЛИЗ.

Представим грамматику G = (VT, Vn,P, S) условного опера­тора некоторого языка программирования правилами (табл. 4.2). Это входная грамматика, в которой VT= {if then, else, z, p, ;}, VN= {U,K,H,M,O}, S = U- аксиома. Для обозримости иллю­страций полагаем, что логическое выражение р и не условный оператор z описываются в других грамматиках и считаются уже разобранными синтаксическими конструкциями. Поэтому они включены в множество терминалов VN.

 

Таблица 5.1 Правила грамматики условного оператора

 

Номер правила Входная грамматика G Транслирующая грамматика GT
U->if K U->if K
К->рН K->p[xo]H
Н -> then О М; H->then[x1]O M [x3];
М -> else О М -> else [X2] О
M-> М ->
O->U O->U
0->z O->z [x0]

 

Теперь запишем Т-грамматику, пополнив входную грамма­тику операционными символами. Операционные символы под­берем, исходя из сравнения форм исходных операторов и соот­ветствующих им форм ПОЛИЗ. Возможный вариант правил R для Т-грамматики GT = (VT, VN, , Р, S) показан в табл. 5.2.1. В этой грамматике = {[х0], [х1], [х2], [х3]}, a VT, VN и U имеют тот же смысл, что и во входной грамматике. Операционные символы по сути своей являются подпрограммами, которые выполняют­ся в темпе синтаксического анализа и осуществляют следующие действия:

- [x0] - копирует текущий входной символ (терминал) в вы­ходную строку;

- [x1] - создает очередную метку mj, дописывает в выходную строку цепочку mj УПЛ и помещает mj. в вершину стека меток;

- [x2] - создает очередную метку mj+1, дописывает в выходную строку цепочку mj+1БПmj:, где тj— метка в вершине стека меток, и замещает в стеке метку mi: меткой mj+1:;

- [х3] - выталкивает метку тk из вершины стека меток в выходную строку.

Транслирующая грамматика GT описывает активные цепоч­ки. Так, входному оператору if a then b else с; будет соответство­вать активная цепочка if a [x0] then[x1] b[x0] else[x2] c[x0] [x3].








Дата добавления: 2016-03-27; просмотров: 542;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.