Crc press баспасы Taylor & Francis баспа тобы


Атрибутивті грамматикалар



Pdf көрінісі
бет12/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   ...   8   9   10   11   12   13   14   15   ...   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)


3.2.4 Атрибутивті грамматикалар
Грамматикадағы  өнімдік  қағидалар  сәулеттің  нақты  түрінде  тиімді 
орындау үшін қателерді тиімді өңдеу, бағалау, шектеулерді ерекшелеу 
және төменгі деңгейдегі код генерациясына арналған әр түрлі атрибут-
тармен байланысты болуы мүмкін. Әр түрлі сәулетшілер қабат өлшемі, 
қатардың рұқсат етілген өлшемі, идентификатордағы символдардың ең 
жоғарғы саны және с.с. өнімдік қағидаларға әр түрлі шектеулер қояды. 
Сонымен қатар, әр өнімдік қағиданың синтаксистік талдау ағашының 
төменгі деңгейлі кодын генерациялау үшін пайдаланылатын қандай да 
бір мағынасы бар. Өнімдік қағиданың атрибуты сәулеттің шектелуін не-
месе тілді әзірлеушілер салған шектеуді және талдау барысында гене-
рирлейтін талдау ағашының ең төменгі кодын генерациялауға қажетті 
өнімдік қағида мағынасын көрсетеді.
Мысалы, тіл 16 биттік, 32 биттік немесе 64 биттік машинада орында-
луы үшін толықтырылуы мүмкін. Прагматикалық себебі мен тиімділік 
тұрғысынан әзірлеушілер ауыспалыдағы рұқсат етілген символдардың 
санын шектеуі мүмкін. Осындай түрде сөз өлшемінің негізінде толық 
санның немесе жүзбелі нүктесі бар санның мағынасы сәулетке байла-
нысты ең жоғарғы мағынамен шектелуі тиіс.Синтаксистің анықтамала-
рында  бұл  шектеулер  (немесе  атрибуттар),  сондай-ақ  грамматиканың 
бөлігі болып табылады және өнімдік қағидалармен бірге анықтаалады.
Өнімдік қағидамен байланысты атрибуттарды талдауда шектеулер тиісті 
түрде орындалғанына көз жеткізу үшін синтаксистік талдау ағашы бой-
ынша жоғары және төмен қозғалуы тиіс. Атрибуттардың таралуы сон-
дай-ақ кодтың аралық генерациясында және егер, атрибуттар бұзылған 
жағдайда ерекшеліктерді өңдеу үшін кодында пайдалы. 
3.7-мысал
3.2-кесте екі өнімдік қағиданы және тиісті енгізілген өнімдік қағидалар-
ды көрсетеді. 
<Тұтас сан>1 дескрипторы сол жақтағы тұтас санды, ал <тұтас сан>2 
дескрипторы  оң жақтағы тұтас санды білдіреді. Мағына функциясы 10 

122
негіз бойынша тұтас сан мағынасын береді, ұзындығы функциясы тұтас 
санды цифрды білдіреді, ал өлшем функциясы қатардағы белгілер са-
нын білдіреді.
1- қағидаға  арналған  атрибуттар  «тұтас  сан»  тұтас  санның  мағына-
сы  −  231  до +  231 −  1 аралығындағы шектелуі мүмкін; ұзындықпен
((<тұтас сан>1) белгіленген сол жақтағы тұтас сандық цифр саны оң
жақтағы  тұтас  сандық  цифр  санына  қарағанда  бір  бірлікке  көп;  сол
жақтағы <тұтас сан>1 тұтас санның мағынасы 10 болып табылады.
тұтас  сан  мағынасы  <тұтас  сан>2  оң  жақта  +  цифр  мағынасы
<цифр>оң  жақта.  Балама  ретінде,  егер  <тұтас  сан> <цифр>  ретінде
анықталса, онда мағына<тұтас сан> <цифр> параметрінің мағынасы
сияқты болады.
2-қағида тиімділік тұрғысынан <идентификатор> элементінің өлшемі-
не шектеулер қояды. Шектеу идентификатор өлшемі 255-тен аз немесе
тең болуын, ал идентификатордың сол жақ өлшемінің қатардың оң жақ
бөлігі өлшеміне қарағанда бір бірлікке артық болғанын қадағалайды.
3.2-кесте. Атрибуттық грамматикадағы өнімдік қағидалар мысалдары
Кесте 3.2
Examples  of  Production  Rules  in  an  Attribute  Grammar  -  Төлсипатты 
грамматикадағы өндірістік ережелердің мысалдары
Production rule – Өндірістік ереже
Production rule with attributes – Өндірістік ереже атрибуттарымен

123
--<сан>; attributes – атрибуттар; value – құны; length 
– ұзындығы;  - <идентификатор>;  - <әріп>; size-of
() – (<идентификатордын>) мөлшері.
3.2.5 Гиперқағида мен Мета-анықтамалар 
Синтаксис  қағидалары  өнімдік  қағидалардағы  жалпы  картинаны  жи-
нап, мәнерлі қылуға болады. Екі қосымша қағида пайдаланылады: (1) 
гиперқағида  және(2)  мета-анықтамалар.  Гиперқағида  жалпы  схема 
бойынша  бірнеше  өнімдік  қағидаларды  абстракциялайды,  ал  мета-а-
нықтамалар  гиперқағидаларда  орналасқан  бірнеше  анықтамаларды 
көрсетеді. Гиперқағидаға мета-анықтамаларды қоя отырып, балама үл-
гілерге  ие  бірнеше  өнімдік  қағидаларды  алуға  болады.  Мысалы,  <ке-
зектілік>  бағдарламалау  тілінің  грамматикасында  көптеген  өнімдік 
қағидалар бойынша жалпы шаблон болып табылады және мына түрдегі 
гиперқағида ретінде өрнектелуі мүмкін:
<жүйелілік>: <анықтама>’;’ <жүйелілік>| 𝜀-гиперқағида
 <Анықтама> терминалды емес символын анықтауға арналған мета-а-
нықтама төменде келтірілген. Оң жақтағы өрнек атау түсінікті.
<анықтама>   :: <формалды параметр>   | <өзекті параметр>|
<хабарландыру>   | <оператор>  -мета-анықтама
Гиперқағидада  бір  рет  бір  мета-анықтаманы  қолдана  отырып,  төрт 
өнімдік қағида құрылады. Тек бір мета-анықтама өнімдік қағидалардың 
генерациясындағы  гиперқағидағы  барлық  анықтамаларға  параллельді 
бір  рет  қолданылады;  екі  немесе  одан  көп  мета-анықтамалар  сол  ги-
перқағидада бір уақытта қолданыла алмайды. Өндірістің төрт қағидасы:
<формалды параметрдің реттілігі >::= <формалды-параметр>’;’
< формалды параметрдің реттілігі >| 𝜀
<формалды параметрдің реттілігі>::= <нақты параметр> ’;’
<формалды параметрдің реттілігі>|𝜀
<хабарландыру реттілігі >::= <хабарландыру>   ‘; ’ 
<хабарландыру реттілігі >|𝜀
ператорлардың реттілігі>::= <оператор>   ‘;’
<операторлардың реттілігі >| 𝜀
Грамматикада өнімдік қағидаларды гиперқағидалардан және метақағи-
далардан ерекшелеу қажет. Сол жақтағы және оң жақтағы гиперқағида-
ларда ‘:’ бөлу белгісі пайдаланылады, БНП-дегі өнімдік қағидаларда оң 
жақ бөлікті сол жақтан бөлетін ‘::=’ белгісі басым. 

124
3.2.6 Абстрактылы синтаксис
Деректер абстракциясы мен бағдарламалау тілдері сыныбына арналған 
басқарма  абстракциясының  құрамын  түсіну  мақсатында  синтаксис 
қағидалары  деректер  мен  басқару  абстракциясын  пайдалану  есебінен 
қысқартылады. Мысалы, біз бағдарламаларды, блоктарды, итерациялар-
ды, таңдау операторларын, тағайындау операторларын, командаларды, 
өрнектерді, хабарландыруларды, формалды параметрлерді, нақты пара-
метрлерді, нақты параметрлерді, идентификаторларды, анықтамаларды, 
ауысу  операторларының  литералдары  мен  секвенсорларын,  деректер 
түрін сипаттайтын өрнектерді және т.б. пайдалану арқылы бағдарлама-
лау тілінің конструкциясын абстракциялай аламыз.
 Бұл абстракциялар бағдарламалау тілдеріндегі маңызды резервтелген 
сөздері бар абстрактілік синтаксис қағидаларының көмегімен анықтала-
ды. Абстрактілі синтаксис қағидалары бағдарламалау тілінің граммати-
касына арналған өнімдік қағидалар жинағынан ерекшеленеді. Бағдарла-
малаудың барлық тілі үшін әмбебап болып табылатын идентификатор-
лар, сандар, тұтас сандар, цифрлар, өрнектер, қатарлар және оператор 
басымдықтары сияқты төменгі деңгейдегі кейбір анықтамалар ескеріл-
мейді, себебі олар бағдарламалау тілін түсінуге ақпарат қоспайды. Сол 
себеп бойынша төменгі деңгейлі литералдар, бөлінгіштер мен кідірістер 
ескерілмейді. Абстрактілі синтаксис қысқа және абстракциялар туралы 
бағдарламашылардың білімінің көмегімен конструкцияны түсіндіреді. 
Абстракциялық синтакис қағидаларында оларға тән төменгі деңгейдегі 
ерекшеліктерді өткізу нәтижесінде туындаған белгісіздіктер жасалады. 
Соған  қарамастан,  ол  қысқа,  терминалды  емес  символдар  пішімінде 
бағдарламалау  тіліндегі  деректер  және  басқарудың  абстракциясымен 
байланысты және бағдарламалау тілінің негізінен тұрады.
3.8-мысал
1-мағыналарды,  хабарландыруларды,  өрнектерді  және  командаларды
басқарудың абстракциясына арналған абстрактілі синтакис қағидалары
3.6-суретте  көрсетілгендей  бағдарламалаудың  императивті  тілдерінің
негізгі кластары үшін анықталуы мүмкін.
Абстрактілі  синтаксис  қағидалары  1-мағына  абстракциясы  құрылым-
ның  нақты  алаңы,  идентификаторы  немесе  индексті  ауыспалы  болуы
мүмкін  (<l-мағына>  ‘[‘<өрнек>’]’жазылады).  Абстрактілі  өрнек  лите-
рал, идентификатор, 1-мағына, өрнектің бинарлық операторлар немесе
унарлы оператормен қосылған жақшадағы екі өрнек болуы мүмкін.
Бағдарламалаудың аталған тіліндегі команда абстракциясы фигуралық
жақшалардағы,  тағайындау  операторларындағы,  команда  реттілігінде-

125
гі блок, шартты оператор, WHILE циклі, DO-WHILE циклі, FOR циклі 
немесе ресімді шақыру болуы мүмкін.Сонымен қатар, ол {if,then,else,
do,while,‘{,’and‘},’for} резервтелген сөздерді және тілдің бөлігі болып 
табылатын басқа конструкцияны хабарлайды. Соған қарамастан, төмен-
гі деңгейдегі басқа ерекшеліктер алынды. Мысалы, <өрнек> арналған 
абстрактілі синтаксис қағидаларын анықтаудағы оператор анықтамасы 
операторлардың әр түрлі басымдықтары мен әр түрлі өрнек арасында: 
арифметикалық  салыстырғанда  логикалық  арасында  айырмашылығы 
жоқ. 
<l-мағына>::=  <идентификатор>  |  <идентификатор>.<l-мағына>  | 
<l-мағына>’ [‘<өрнек>’]
<хабарландырулар>::=  variable<идентификатор><ауыспалы  түрін  си-
паттайтын өрнек>  |
<ауыспалы түрін сипаттайтын өрнек> [<санвые>] |
structure{<ауыспалы түрін сипаттайтын өрнек>} <идентификатор> |
void<идентификатор> ( <формалды параметрлер>) |
<идентификатор>функция<идентификатор> ( <формалды параметр-
лер>  )
<өрнек>::=  <литерал>|  <идентификатор>  |  <l-мағына>  |  (<өрнек>  | 
<op><өрнек> |
<өрнек><op><өрнек>
<нақты параметрлер>::= <идентификатор> ‘,’  <нақты параметрлер>
<формалды  параметрлер>::=  <идентификатор>  ‘,’  <идентификатор 
реттілігі > ‘;’ <формалды параметрлер>| ∈
<командалар>::=  {  <командалар>}  |  <l-мағына>‘=’  <өрнек>|  <коман-
да>‘;’ <командалар>|
if<өрнек>then<командалар>else<командалар> |
if<өрнек>then<командалар> |
while(‘ <өрнек> ’)’ <командалар>|
do<командалар>while(‘ <өрнек> ’)’ |
for(‘<l-мағына>’=’ <өрнек> ‘;’ <өрнек>’;’ <өрнек>‘)’ <командалар> |
<идентификатор>(<формалды параметрлер> ‘)
<секвенсор>::= goto<санвое  мағына>
<бағдарлама>::= main<идентификатор>’;’ <хабарландырулар> ‘;’ <ко-
мандалар>
3.6-сурет. Абстрактілі синтаксис қағидаларына мысал.

126
3.3 Синтаксистік диаграммалар
Мәтін  компьютерде  өңдеу  үшін  пайдаланылады.  Соған  қарамастан, 
адамдар көзбен қабылдағанды және түсіну үшін қарапайым графикалық 
суретті жақсы қабылдайды. Тілді әзірлеушілер бағдарламашылар 
бағдарламалау тілінің синтаксисін көзбен шолу, түсіну және пайдалана-
тындай
өнімдік қағидалар үлгісін пайдаланады. Бұл графиктік үлгілер   синтак-
систік диаграммалар деп аталады.
Синтаксистік диаграмма мен синтаксистік грамматика арасындағы өза-
ра байланысты түсіну ерекше маңызды, себебі тілді әзірлеушілер 
(1) тілдік бағдарламашылар және басқа әзірлеушілер үшін түсінуге оңай
синтаксис диаграммаларды құрастыруы тиіс  және (2) әзірленетін син-
таксистік  талдауыштар  мен  код  генераторлары  үшін  мәтіндік  пішінді
жаңғыртуы  тиіс.  Бағдарламашылар,  сондай-ақ  бағдарламаны  әзірлеу
кезінде мәтіндік нысандағы синтаксистік диаграммаларды зерттеу ба-
рысында алынған синтаксистік мәліметтерді түрлендіруі керек.
Іс жүзінде, синтаксистік диаграмма – бұл тораптар ұсынған терминал-
ды және терминалды емес символдары бар және доға ұсынған өнімдік
қағиданың оң жақ бөлігіндегі терминалды және терминалды емес сим-
волдар арасындағы өзара байланыстары бар бағытталған циклдік граф.
Циклдер  артқы  рекурсия  анықтамасын  (немесе  БНКП-дегі  қайталау)
үлгілейді.  Синтаксистік  диаграмманың  сол  жақ  бөлікте  орналасқан
өнімдік қағидадағы терминалды емес символдарды сипаттайды,графа-
ның қалған бөлігі өнімдік қағиданың оң жақ бөлігінің үлгісі болып та-
былады.
Синтаксистік диаграммалар үш негізгі компоненттерді құрайды: тер-
миналды  емес  символдар,  терминалды  символдар  және  бағытталған
доғалар.Ыңғайлы  болу  үшін  терминалды  емес  символдар  сопақтарға
енгізіледі,  осылайша  оларды  терминалды  символдардан  нақты  айы-
руға  болады.  Сызық  диаграмманың  қозғалыс  бағытын  көрсетеді.  Сол
жақтағы шеткі символ анықталуы тиіс өнімдік қағиданың сол жақ бөлі-
гіндегі терминалды емес символды көрсетеді. Синтаксистік қағидалар-
дан синтаксистік диаграммаларға ауысу кезіндегі әр түрлі түрлендіру-
лер 3.7, 3.8-суреттерінде көрсетілген.
Қайта  анықтамалар  синтаксистік  диаграммадағы  бірнеше  қозғалыс
бағыттары түрінде көрсетілген. Нөлдік символ дереккөз бен символы
жоқ  белгілену  блогы  арасында  бағытталған  доға  түрінде  көрсетілген.
Өнімдік  қағиданың  оң  жақ  бөлігіндегі  бірнеше  символдардың  бірігуі
бірнеше тораптарды біріктіруші учаске түрінде көрсетілген. Артқы ре-
курсияны анықтау анықтаманың бірнеше рет кіруін көрсету үшін кері

127
байланысты  контур  (цикл)  түрінде  ұсынылған.  Шығатын  доғадағы 
анықтамасы бар кері байланысты контур РНБП-дегі бір немесе бірне-
ше кірулерді сипаттайды. Белгілену торабының екі таңдауы бар: цикл-
дің қайта өтуі үшін кері қайтатын доғаны пайдалану немесе шығу. Қы-
зғылықты бағытты символдың нөлдік немесе көп санда енуін үлгілеуде  
көруге болады. Ол кері бағыттағы доғада символдар пайда болатынын, 
ал  символдар алдында бағытталған доғада жоқ екендігін көрсетіп, өз-
герістері бар кері байланысты контурды білдіреді. 
Ақпаратты  анық  қабылдау  үшін  бірнеше  өнімдік  қағида  бір  синтак-
систік  диаграммаға  бірігеді.  Біріктіру  идентификаторлар;  ауыспалы; 
тұтас сан; ондық сан; цифрлар; арифметикалық өрнек; логикалық өр-
нек; нақты параметрлер; формалды параметрлер; шартты оператор, 
WHILE циклі, DO-WHILE циклі, итераторлар мен таңдау операторла-
ры; операторлар блогы; деректер түрін хабарландырулар; бағдарлама 
және т.б. сияқты әр түрлі операторларды бағдарламалау тіліндегі аб-
страктілі элементтерді көрсету үшін пайдаланылады. 
3.9-мысал
3.7-суретте  қайталама  анықтамаларға  арналған  синтаксистік  диаграм-
ма (3.7а-сурет), символдардың өзара байланысының синтаксистік диа-
граммасы (3.7b-сурет), символдың бір немесе бірнеше кіруін көрсететін 
артқы рекурсия анықтамаларының синтаксистік диаграммасын (3.7c-су-
рет)  және  символдардың  нөлдік  немесе  одан  да  көп  кіруіне  арналған 
синтаксистік диаграмманы (3.7d-сурет) көрсетеді.
3.7a-суретте көрсетілгендей бір тараптан басталатын және басқа тарап-
тан кері біріктіретін екі торап арасындағы бірнеше бағдарлардың тар-
мақтануы қайталанған анықтамаларды білдіреді. 
<Оператор>  терминалды  емес  символына  арналған  синтаксистік  ди-
аграмманың бірнеше бұтақтары бар: (1) бірінші бұтақ <тағайындау
деген терминалды емес символдан құралған; (2) екінші бұтақ <шартты 
оператор> деген терминалды емес бұтақтан құралған; және (3) үшін-
ші бұтақ <итерация> деген терминалды емес символдан құралған. Ол 
<оператор>::=  <тағайындау>    |  <шартты  оператор>  |<итерация
түріндегі синтаксистік қағидаға тең. 

128
  -  мәлімдеме;    -  тапсырма;  statement> - егер-содан кейін-тағы-мәлімдеме - итерация; 
> - егер-содан кейін-тағы; if – егер; condition – жағдай; 
then - содан кейін; else – тағы; number – нөмір; digit – сан; sequence of 
statement – мәлімдемелердін реті.
3.7-Сурет  
Синтаксистік диаграммалар.
3.7b-суретте <шартты оператор>::=if<шарт>then<оператор>else<о-
ператор>  синтакистік  қағидасы  көрсетілген.  Бірінші  бөлігі  белгілі 
тәртіптегі {if, then,else}терминалды символдары мен  и {<шарт>, <опе-
ратор>}  терминалды  емес  символдардың  бірігуін  білдіреді.  Синтак-
систік диаграмма  синтаксистік қағидадағы бірігу тәртібін сақтайды.
3.7c-суретте  <сан>::=<цифр>|  <цифр><сан>  өнімдік  қағидасына  ар-
налған синтаксистік диаграмма көрсетілген. 
Анықтама <сан>::= <цифр> негізгі жағдайға және анықтама <сан>::= 

129
<цифр><сан> артқы рекурсиядағы анықтамаға ие. Бұл  <цифрдың> бір 
немесе бірнеше рет кіруі түрінде бейнеленеді, себебі артқы рекурсия-
ның анықтамасын тағы бір <цифр> қосу үшін пайдалануға болады, ал 
анықтама  <сан>  терминалды  емес  символының  анықтамасын  кеңей-
туді  аяқтау  алдында  тағы  бір  <цифр>  қоса  отырып,  негізгі  жағдайды 
қолданып аяқтауға болады. Анықтама <цифрдың> бір немесе бірнеше 
рет кіруін білдіреді. Синтаксистік қағиданың БНКП нұсқасы <сан>::
{<цифр>}+ деп жазылады. Тиісті синтаксистік диаграмма кері байланы-
сты контурды білдіреді, онда тік бағыттағы доға <цифр> терминалды 
емес символынан құралған, ал белгілену доғасынан негізгі көз торабы-
на қарай кері бағытта доға өтеді. Тік бағыттағы қозғалыс бірнеше рет 
өтуі мүмкін. Тік бағытта қозғалыс қайталанғанда әр кезде  <цифр> ке-
зектілігін қалыптастыру үшін қосымша <цифр> қосылады.
3.7d-суретте операторлардың нөлдік немесе үлкен саны кіруі үшін үл-
гілейтін  синтаксистік  қағиданың  синтаксистік  диаграммасы  көрсетіл-
ген. БНП-дегі тиісті өнімдік қағида рекурсияның негізгі бөлігінен және 
артқы бөліктен тұрады. Негізгі бөлік ε бос символынан тұрады, ал артқы 
рекурсия төменде көрсетілгендей 
 <операторлардың реттілігі>::= <оператор>’;’
<операторлардың реттілігі >  | ε
 ‘;’ символымен сүйемелденетін  <оператор> терминалды емес симво-
лын қамтиды.
БНКП-де символдардың нөлдік немесе көп санының енуі дөңгелек жақ-
шаларға орналастырылған символдар ретінде жазылады және төменде 
көрсетілгендей
<жүйелілік-операторов>::= {<оператор>’;’}*
оң жақ дөңгелек жақшадан кейін дереу “*” белгісі қойылады.
Символдардың нөлдік немесе үлкен кіру саны кері байланыстағы кон-
тур  түріндегі  синтаксистік  диаграмма  түрінде  бейнеленеді,  яғни  тік 
бағыттағы доға символсыз тік сызық түрінде көрсетіледі, ал кері бағыт-
тағы доғада символдар бар. 3.7d-суретте кері бағыттағы доғада <сөй-
лем> терминалды емес символы бар, одан кейін ‘;.’ терминалды симво-
лы орналасқан
3.3.1  Синтаксистік  диаграммадағы  синтаксистік  қағидаларды  ау-
дару
Синтаксистік қағидалар мына  қағида бойынша тиісті синтаксистік ди-
аграммаға аударылады:

130
1. Синтаксистік  диаграммалардағы терминалды және терминалды емес 
символдардың айырмашылығы айқын.
2. БНП-мен  немесе  БНКП-дегі  қайта  анықтамалары  бар  өнімдік  қағи-
даларды екі торап арасындағы параллельді бұтақтар ретінде елестетуге 
болады, ол  көп жолақты жол сияқты.
3. Оң  жақтағы  бірнеше  символдардың  бірігуі  бір  бұтақтағы  бірнеше 
символдар түрінде көрсетіледі.
4. Артқы рекурсия анықтамасы кері байланысы бар контур түрінде көр-
сетіледі, оң қыры бастапқы анықтамамен қосылған.
5. Бос символ ε белгіленеді, екі торап арасында сызығы бар тік сызық 
түрінде көрсетіледі.
6. Міндетті емес анықтама екі бұтақ түрінде көрсетіледі, бір бұтақ бір 
тораптан  екіншісіне  өтетін  сызықты  тік  желіні  білдіреді,  ал  екінші 
бұтақтың анықтамасы бар. 
3.8-суретте БНП-дегі және РНБП-дегі синтаксистік қағидалардың тиісті 
компоненттеріне арналған синтакистік диаграмма көрсетілген. Эллипс 
мәтін нысанында ұсынылған символды (терминалды немесе терминал-
ды емес) білдіреді.
Бірінші  қатарда  өнімдік  қағидаға  тиісті  синтаксистік  диаграмма  ұсы-
нылған, онда үш символ оң жақ бөлікте орналасқан. Эллипстерді бірік-
тіретін үш доға ыңғайлы болу үшін біріктірілген. Екінші қатарда өнімдік 
қағида көрсетілген, онда бір уақытта төрт әр түрі анықтама бар:
1. Жоғары доғада орналасқан бірінші анықтама оң жақ бөліктегі екі сим-
волдан құралған.
2. Екінші және үшінші анықтамалар оң жағында бір символдан құралған.
3. Төменгі  доғада  орналасқан  төртінші  анықтаманың  оң  жағында  екі 
символы бар. 
Үшінші қатарда өнімдік қағиданың оң жақ бөлігіндегі символдың бір 
немесе бірнеше енуінің артқы рекурсиясының анықтамасы көрсетілген. 
Бір немесе бірнеше кірулер тең мағыналы.

131
Component  –  Құрамдас;  Syntax  diagram  correspondence  -  Синтаксис 
диаграмма хаты;
 
concentration – концентрация; multiple definitions in 
BNF or grouping in EBNF shown parallel branches – BNF-тағы бірнеше 
анықтамалар немесе EBNF-тағы топтастық параллельдік салалар-
да көрсетілген; tall-recursive definition for one or more occurrence - бір 
немесе  бірнеше  оқиғалар  үшін  биік-рекурсивті  анықтама;  empty 
symbol  –  бос  рәміз;  optional  in  EBNF  –  EBNF-та  міндетті  емес;  tall-
recursive  definition  for  zero  or  more  occurrence  -  нөл  немесе  бірнеше 
оқиғалар үшін биік-рекурсивті анықтама.
3.8-Сурет. Синтаксистік диаграммалар мен синтаксистік қағидалар ара-
сындағы сәйкестік.
БНКП-дегі {<символ>}+ және БНП<анықтама>::= <символ><анықта-
ма>  |  <символ>  артқы  рекурсиясының  анықтамасы,  мұнда  <символ
терминалды және терминалды емес символдың үйлесуімен көрсетілуі 
мүмкін. Төртінші қатарда бос ‘ε.’ Символы үшін синтаксистік диаграм-
ма көрсетілген. Осы жағдайда символ жоқ болғандықтан, тиісті синтак-
систік диаграмма тік сызықты білдіреді.

132
Бесінші  қатарда  міндетті  емес  символдың  синтаксистік  диаграммасы 
көрсетілген.
 БНКП–де [<символ>] ретінде жазылған міндетті емес символ тік бағыт-
тағы екі маршруттан тұратын (<символ> | ε) тобына сәйкес келеді: бір 
маршрута кіріктірілген торап түрінде <символ> тұр, ал екінші маршрут-
та кіріктірілген торап жоқ. Алтыншы қатарда нөлдік немесе ауқымды 
кіру  символдары  көрсетілген.  Нөлдік  немесе  ауқымды  кіру  символы-
ның синтаксистік диаграммасында сондай-ақ бір немесе бірнеше кіруге 
тең кері доға бар. Соған қарамастан, нөлдік немесе ауқымды кіруге ар-
налған синтаксистік диаграммада символ тік емес, керісінше маршрутта 
көрінеді. 
<Символ>    нөлдік  немесе  ауқымды  кіру  анықтамасы  БНКП-де{<сим-
вол>}* ретінде және   БНП-де <анықтама>::= <символ><анықтама
ε артқы рекурсияның анықтамасы ретінде жазылады, мұнда <символ
терминалды немесе терминалды емес символ болуы мүмкін. 
Мәтіннен синтаксистік диаграммаға ауыстыру үшін грамматиканы де-
ректерді абстракциялау немесе басқару деңгейіндегі бірқатар мағынаға 
ие  маңызды  қызметтік  бірліктерге  топтайды.  Грамматиканы  өнімдік 
қағидалардың ішкі топтарынан тұратын топтарға бөледі, онда әр ішкі 
топ ауыспалы, формалды параметрлер, блок және т.б. сияқты қызмет-
тік бірлік бағдарламасын құруда сәйкес келеді. Содан кейін итеративті 
жоғары деңгейдегі қағида синтаксистік диаграммаға түрленеді, ал түр-
ленетін синтаксистік диаграммалар ішіндегі терминалды емес символ-
дар басқа төменгі деңгейдегі синтаксистік диаграммаларды қосу нақты 
қызметтік  блоктың  ары  қарайы  түсінуін  жеңілдетпегенше,  басқа  син-
таксистік диаграммаларға дейін түрленеді.

Достарыңызбен бөлісу:
1   ...   8   9   10   11   12   13   14   15   ...   26




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет