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



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


3.1 Мысал
Ағылшын сөйлемінің мысалын қарастырайық: "Мен баскетбол ойнай-
мын." Әрбір сөздің мағынасы бар. Сөйлемнің грамматикалық тұрғыдан 
дұрыстығын тексеруден бұрын орфографиясын тексеру керек. Дәлірек 
айтқанда, орфографиясын тексергеннен соң, ағылшын тілінің грамма-
тикалық ережелерінің қарапайым ішкі жиыны қолданылады(3.1-Сурет-
ті қара). "Мен баскетбол ойнаймын " сөйлемі аралық нысанға <субъек-
т><етістік><объект> өзгереді, ол өз кезегінде басқа аралық нысанға 
<субъект><предикат> өзгереді.  Тағы бір өнімдік ережені қолдана оты-

111
рып, <субъект><предикат> аралық нысаны бастапқы символға <сөй-
лемге> айналады.
Семантика нақты саланың дұрыс сөйлемінің синтаксистік мағынасын 
алады. Мысалы, "214" жолы: (1) 21410 (102 101 100
ондық есептеу жүйесінде, (2) 2148 сегіздік жүйеде ( (* 82 81 
80) = 14810 (148-дегі есептеудің  10-дық жүйесінде) ондық санды 
және құрылыс саласындағы (3) "екінші нөмір қабаты, нөмірі 1- алаң, 
және алаңдағы төртінші бөлме" мағынасын білдіреді. Мағына сөз ора-
мы қолданылған семантикалық салаға байланысты болып келеді. Біре-
гей мағынаны алу үшін, семантикалық сала нақты жазылуға тиіс. Мы-
салы, есептеудің 10-дық жүйесіндегі «1011» екі санды мағына бұл 1×23 
0×22 1×21 1×20 1110, 13 сегіздік (8 негізі бойынша семантикалы
сала) және  "D" он алтылық (16 негізі бойынша семантикалық сала).
Ондық  санның  мағынасы  <бүтін  бөлік>‘.’<жылжымалыбөлік>,  сан-
дар  саласында  бұл  мағына  (<бүтін  бөлік>)  +мағына  (<жылжымалы-
бөлік>.  Егер  бейтерминал  символдардың  мағынасы  <бүтін  бөлік>жә-
не<жылжымалы  бөлік>  жеке  тәртіптке  танымал  болса,  ал  бинарлық
оператордың  мағынасы  '+'  тең  болса,  онда  ондық  санның  мағынасы
алынуы  мүмкін.  Семантикалық  саладағы  сөйлемдердің  мағынасын
алу үшін қолданылатын операция семантикалық алгебра деп аталады.
Бағдарламалау тіліндегі сөйлемдердің мағынасын ұғыну үшін, бізге се-
мантикалық сала және тиісті семантикалық алгебра қажет.
3.2 Грамматика
Бағдарламалау  тілдері  жоғары  деңгейдегі  нұсқаулықты  төмен  деңгей-
дегі балама нұсқаулыққа аудару кезінде әртүрлілігін болдырмау үшін, 
ағылшын тілі секілді аса күрделі емес. Бағдарламалау тілдерін қарапай-
ым күйде сақтау үшін көп күш жұмсалды:
1.   Бағдарламалау  тілдерінің  негізгі  бірліктері  ағылшын  тіліндегі  сөз-
дерге  ұқсас;  сөздерді  құрайтын  26  әріп  жоқ.  Мұндай  негізгі  мағына-
лық бірліктер негізгі (сақталған) сөздер деп аталады және олар біре-
гей мағыналармен байланысқан. Бағдарламау тіліндегі негізгі сөздердің 
(сақталған) жинағы ағылшын тіліндегі сөздерге қарағанда басымырақ 
болып келеді.
2.   Бағдарламалау  тілдері  бір  негізгі  сөз  үшін  бірнеше  мағыналардан 
қашқақтайды, яғни ол мәтінге сүйене отырып, әртүрлілігін жоюды қа-
жетсінеді. Контекстіге тәуелді көпмағыналы сөздерді пайдалану талда-
малы тілдегі сөйлемдер үшін нақты мағынаны қалыптастыру кезінде қа-
теліктерге бейімді және уақытты шығындауға әкеп соғады.  Сөйлемнің 

112
мағынасы  төмен  деңгей  кодының  іздестірумен  байланысты  болған-
дықтан, мағынадағы қателік төмен деңгейдің қате кодына әкеп соғады. 
Сондай-ақ сөз қорының шектелген саны бірнеше мағыналарды қамтиды 
және олардың нақты мағынасы мәтін негізінде алынған. Бұл шамадан 
тыс депте аталады және 7-тарауда талқыланған.
Грамматика  тілдегі  сөйлемнің  соңын  алу  үшін  қолданылады.  Грам-
матика  төрт  компоненттен  құралған:  бастапқы  символ,  терминалдық 
символдар жиыны(сақталған сөздер),бейтерминал символдар жиыны
сондай-ақ өнімдік ережелер жиыны. Бейтерминал символдар өнімдік 
ережелер жинағын пайдалана отырып, терминалдық және бейтерминал-
дық символдардың қиысуына дейін кеңейеді. Бейтерминал символдар 
бағдарламалау тіліндегі сөйлемдердің бөлігі емес, керісінше граммати-
каның бөлігі болып табылады. Бағдарламалау тіліндегі барлық терми-
налдық символдардың (сақталған сөздер) жиыны тиісті грамматиканың 
әліппесі  деп  аталады.  Бағдарламалау  тіліндегі  сөйлем  бастапқы  сим-
волдан бастап өнімдік ережелерді пайдалана отырып, әліппеден  шыға-
рылады.  Әліппе  әдетте  грек  символы  Σ  деп  белгіленеді.  Ресми  түрде 
грамматика төрт түрге бөлінеді (бастапқы символSөнімдік ережелер 
жинағы P, бейтерминал символдар жиыны N,әліппе Σ). Бағдарламалау 
тілінде сөйлемдерді назарға ала отырып, грамматикадағы өнімдік ере-
желер  сөйлемнің  құрылымын  тексеру  үшін  қолданылады.  Бастапқы 
символға дейін аталмыш сөйлемді қысқарту мақсатымен бағдарламалау 
тіліндегі грамматикада өнімдік ережелерді көп мәрте қолданудың мұн-
дай  процесі синтаксистік талдау деп аталады.Өнімдік ережелердің оң 
жақ сөйлемшесі сөйлем бөлігімен немесе аралық нысанмен салыстыры-
лады, және өнімдік ережелердің сол жақ сөйлемшесімен алмастырыла-
ды. Өнімдік ережелерді пайдалана отырып қалпына келтірудің мұндай 
процесі талдау ағашы деп аталады. Сөйлем синтакситік ағаштың соңғы 
түйіндерінде  орналасқан,  ал  бейтерминал  символдар  синтаксистік 
талқылау ағашының ұшты емес түйіндерінде орналасқан, ал бастапқы 
символ ағаштың түбір түйінінде орналасқан.
3.2 Мысал
3.1-суретте  "Мен баскетбол ойнаймын" сөз орамын ағылшын тілінде 
беруі мүмкін ағылшын грамматикасының қарапайым ішкі жиын ереже-
лерін  пайдаланудың қарапайым мысалы көрсетілген. Грамматика бес 
өнімдік ережеден тұрады. Бастапқы символ бұл<сөйлем>. Әрбір өнімдік 
ереже ‘::=’ символымен бөлінген сол жақ және оң жақ сөйлемшелерді 
қамтиды.

113
Ереженің сол жақ сөйлемшесі бұрышты жақша ішіне салынған '<' және 
'> ' бір символды қамтиды, ал ереженің оң жақ сөйлемшесі символдар-
дың  екі  түрінің  мынадай  тәсілін  қамтиды:  (1)  жақша  ішіне  салынған 
символдар  және  (2)  бұрышты  жақшалары  жоқ  символдар.  Бұрышты 
жақша ішіне салынған символдар бейтерминал символдар деп аталады, 
ал  бұрышты жақшасыз символдар терминалдық символдар (сақталған 
сөздер)  деп  аталады.  Бейтерминал  символдардың  жиыны  {<сөйлем>, 
<предикат>, <субъект>, <етістік>, <объект>}, ал әліппе (бейтерми-
нал символдардың жиынын) қамтиды {Мен,біз,сен, ойнау, билеу, фут-
бол,баскетбол}.
"Мен баскетбол ойнаймын," сөйлемі берілген, мұнда 3, 4 және 5 ере-
желері  сөйлемдегі  қалған  бөліктермен  өнімдік  ереженің  оң  жақ  сөй-
лемшесін  салыстыра  отырып  және  өнімдік  ереженің  сол  жақ  сөй-
лемшесіне  сөйлем  бөліктерін  алмастыра  отырып,  сөйлемнің  әртүрлі 
бөліктеріне қатысты қолданылады: 3-ереже  "I" сөзін бейтерминал сим-
вол <субъектке> аударады, 4-ереже "ойнау" сөзін в бейтерминал сим-
вол <етістікке>аударады, ал 5-ереже "баскетбол" сөзін  бейтерминал 
символ <объектке> аударады. Жаңа аралық нысан былайша айқында-
лады  <субъект><етістік><объект>.  Екінші  тәсілде  <етістік><объ-
ект>    түрінің  бейтерминал  жұбы  2-ереженің  оң  жақ  сөйлемшесімен 
салыстырылады  және  бейтерминал  символ  <предикатты>  көрсетеді 
(2-ереженің сол жақ сөйлемшесі). 1-ереженің оң жақ сөйлемшесімен са-
лыстырылатын жаңадан аударылған аралық нысан түрі <субъект><пре-
дикат>, және бастапқы <сөйлемді> көрсетеді. Осылайша, өнімдік ере-
желерді  қолдану  «Мен  баскетбол  ойнаймын»  сөйлемін  құрылымын 
тексеру кезінде бастапқы символ <сөйлемге> дейін қысқартады. Грам-
матикалық құрылымның сәтті тексеруі сөйлемнің әрқашанда мағыналы 
болуына кепілдік бермейді. мысалы,  "Мен футболда билеймін" сөз ора-
мы өз құрылымында өнімдік ережелердің көмегімен тексеріледі. Деген-
мен,сөйлем мағыналық жүктемені қамтымайды.
3.2.1 Грамматика түрлері
Грамматиканың  үш  түрі  бар,  олар  анықтамаларды  қолданылу  және 
бағдарламалау  тілдерінде  іске  асырылуы  мүмкін:  регулярлы  грамма-
тика,  контекстіге  тәуелді  грамматика,  және  контекстіден  тәуелсіз 
грамматика.
Сондай-ақ  регулярлы  грамматика  3-түрдегі  грамматика  деп  те  атала-
ды, қарапайым түрі және анықталмаған соңғы автоматты білдіреді. 
Анықталмаған  соңғы  автомат  бұл  бір  кіріс  символына  арналған  бір 
жағдайдан екінші жағдайға ауысатын бірнеше тұрақсыз шаманы қамти-

114
тын  соңғы  автомат.  2-тараудың  2.2.4-бөлімінде  біз  тұрақсыз  шаманы 
қабылдайтын соңғы автоматты талқыладық. Соңғы автомат қарапайым 
грамматиканың көмегімен де айқындалуы мүмкін:
<S1>  →<әріп><S2>
<S2>  →<әріп><S2>| <цифр><S2>| ’_’ <S2>|ε
...Ресми  түрде,  регулярлы  грамматика  төрттік  түрінде  берілген  (N,  Σ, 
P, S), мұндағы бейтерминал символдарының жиыны, Σ терминалдық 
символдардың жиыны, өнімдік ережелер жинағы, ал S– бұл бастапқы 
символ  болып  табылады.  Жоғарыда  берілген  мысалда,N–  бұл{<S1>, 
<S2>}, ал Σ-бұл  {кез келген әріп,кез келген цифр,‘_’}, P– бұл өнімдік 
ереже жинағы, алS -  бұл бастапқы символ<S1> болып табылады. Ре-
гулярлы  грамматика  сөйлемді  қабылдау  үшін  және  қабылдау  кезінде 
маркер түріндегі сигналды беру үшін қолданылады. Символдардың рет-
тілігін  ескере  отырып,  регулярлы  грамматика  тұрақсыз  шама  меншігі 
болып табылса, реттілікті қабылдайтын болады.
Регулярлы  грамматика  тұрақсыз  шамалар,  литералдар,  идентифика-
торлар және сақталған сөзде секілді бағдарламалау тілінің элементтері 
үшін  лексема–игерілген  ұғымдар  ағынын  тудырушы  компиляциялау 
процесі кезінде талдаудың лексикалық кезеңінде кеңінен қолданылады. 
Лексемалар синтаксистік талдауды оңтайландыру үшін қажет.
2-түрдегі  грамматика  деп  аталатын  контекстісіз  (контекстіден
тіуелсіз) грамматика, өрттік түрінде берілген (N, Σ, P, S), мұндағы N
бейтерминал символдар жиыны, Σ терминалдық символдар жиыны, ал
өнімдік ережелер жинағы, Sбастапқы символ болып табылады. Кон-
текстіден тәуелсіз грамматиканың негізгі сипаты мынада, яғни сол бөлі-
гі бірыңғай бейтерминал символды білдіреді. 3.1-суреттегі грамматика
контекстіден тәуелсіз грамматиканың мысалы болып табылады. Мұн-
дай шектеу сөйлемді талқылау кезінде кеңістікте және уақыт барысын-
да артықшылыққа ие. Өнімдің ережелердің сол жақ сөйлемше бірыңғай
бейтерминал  символді  білдіретіндіктен,  ол  кез  келген  терминалдық
символдың  қатысуынсыз  кеңейтілуі  мүмкін.  Контекстіден  тәуелсіз
грамматика қарапайым грамматикаларға қарағанда өте мәнерлі болып
табылады. Мысалы, anbn жолын қабылдау үшін регулярлы граммати-
каның қажеті жоқ. Сондай-ақ төменде көрсетілгендей, біз an bn жолын
қабылдау үшін контекстіден тәуелсіз грамматиканы жаза аламыз:
<S>: = a<S>b | ε

115
Жоғарыда  берілген  грамматика  анықтамасы  бойынша  контекстіден 
тәуелсіз грамматика болып табылады, себебі ол бастапқы символ <S>, 
набор бейтерминал символдар жинағы{<S>}, терминалдық символдар 
жинағы {а, Ь}, және бір өнімдік ережені қамтиды. Ереже сол жақ мәнді 
тек бір бейтерминалды символды қамтиды. Грек әріпі ε нөлдік символ-
ды білдіреді.
Контекстіге  тәуелді  грамматика  да  1-түрдегі  грамматика  түрінде 
танымал, сондай-ақ бейтерминал символдарға толықтыру ретінде мән-
нің сол жағында қосымша терминалдық символдарды иеленуі мүмкін. 
Мұндағы басты шектеу мынада, яғни сол бөліктегі жолдың ұзындығы 
бірінші бөліктегі символдар санына тең немесе одан кем болуға тиіс. 
Грамматиканың мынадай ережелерін қарастырайық:
<S>::= a<S>c | ε
<S>c : = b<S>cc
Жоғарыда келтірілген мысал контекстіге тәуелді грамматиканы дәлел-
дейді,  себебі  екінші  өнімдік  ереже  ереженің  сол  жақ  сөйлемшесінде 
бейтерминал  символ  <S>  толықтыру  ретінде  терминалдық  символ  'с' 
қамтиды.  Грамматика  anbmcm+n  (m≥  0,  n>  1)  түрінің  жолын  қабыл-
дайды.  Сонымен  қатар,  екінші  терминалдық  символ  'c'  болғанда  ғана 
ашылады. Контекстіге тәуелді грамматика контекстіден тәуелсіз грам-
матикаға қарағанда аса қуатты болып табылады. Мысалы, контекстіге 
тәуелді грамматика anbncn(n>0) жолын қабылдайтын нысанда жазылуы 
мүмкін. Ал контекстіден тәуелсіз грамматика anbncn түрінің жолын құра 
алады. Сондай-ақ контекстіге тәуелді грамматиканы пайдаланудың сал-
мақты  кемшілігі  бар:  контекст  сезімталдығы  өнімдік  ережелер  санын 
барынша арттырады, бұл сөйлемді талқылау талдау процесін баяулата-
ды. Синтаксистік талдау кезіндегі тиімді түсініктерден бағдарламалау 
тілін анықтауда контекстіден тәуелсіз грамматиканы пайдаланады.
3.2.2  Бэкус-Наур  формасын  пайдалана  отырып,  грамматиканы 
ұсыну
Компиляторлардың дамыған алғашқы жылдарында компьютер ғылымы 
саласында жұмыс жасайтын екі ғалым Джон Бэкус және Петер Наур, 
бағдарламалау  тілдері  үшін  контекстіден  тәуелсіз  грамматиканың  си-
патына арналған нысанды ұсынды. Олармен ұсынылған нысан қазіргі 
таңда Бэкус Формасы — Наура немесе БНФ ретінде танымал. 
БНФ-дағы  өнімнің  сол  және  оң  жақ  тараптарын    '::  =,'  символымен 
бөледі, бейтерминал символдар бұрышты жақша ішіне салынған, ал бір 

116
бейтерминал символдар жиыны анықтамалары мынадай -'|тік сызықпен 
бір-бірінен бөлінген. Сонда-ақ грамматика нөлдік мәнді сипаттау үшін 
грек  символы‘ε’  пайдаланады,  және  объект  түрінің  қайталану  санын 
анықтау үшін соңғы  рекурсияны пайдаланады (2-тараудың, 2.2.3-кіші 
тарауын  қара).  Соңғы  рекурсияда  рекурсивтік  бөлігі  анықтаманың 
соңында келеді.
3.3 Мысал
Бейтерминал  символ  <операторлар-жүйелігі>соңын  рекурсивті  түр-
де анықтайды. ‘ε,’ символымен  белгіленетін  нөлдік оператор  базалық 
жағдай  болып  табылады,  ал  соңғы  рекурсияның  бөлігі    бейтерминал 
символ <оператор> ретінде анықталады, одан кейін үтір нүкте қойыла-
ды, әрі қарай <операторлар жүйелігі>былайша:
<операторлар жүйелігі>::= <оператор>‘;’
<операторлар -жүйелігі>| | ε
3.4 Мысал
Рисунок 3.2-сурет арифметикалық мәнді оңтайлы түрде анықтау үшін   
БНФ грамматикасын дәлелдейді. «Контекстден тәуелсіз грамматиканың 
бастапқы символ <сөйлемше>» 13 өнімдік ережені, мынадай {<сөйлем-
ше>, <А-сөйлемше>, <Л-сөйлемше>,бейтерминал символы жинағын
<салыстыру>,  <идентификатор>,  <символдар>,  <цифр  немесе  әріп>, 
<сан>,    <цифра>,<А-оператор>, <Л-оператор>, <салыстыру операто-
ры>}, және {0 ... 9, ‘a’ … ‘z’, ‘A’ … ‘Z’, ‘+’, ‘’,‘*’, ‘/’, ‘&&’, ‘||’, ‘>’, ‘<’, 
>=’, ‘=<’, ‘==’}.әліппесінқамтиды. Ал  '0' | '1' | ... | '8' | '9' жазбасы  0 -ден 
9-ға дейінші барлық цифрларды қамтитын ішкі топты білдіреді.
Сөйлемше  (<сөйлемше>)  көпбейінді  анықтама  болып  табылады.  Бұл  
арифметикалық  мән  (<А-сөлемше>)  немесе  логикалық  мән  (<Л-сөй-
лемше>)  немесе  идентификатор  (<идентификатор>)  болуы  мүмкін. 
Арифметикалық  өрнек(<а-өрнек>)  сан  (<сан>)  немесе  келесі 
арифметикалық  оператор(<А-оператор>)-мен  арифметикалық  мән 
(<А-выражение>)  ретінде,  сондай-ақ  арифметикалық  өрнек  (<А-сөй-
лемше>)болып анықталады. Логикалық өрнек (<Л-сөйлемше>) ақиқат 
болып табылады;

117
1.2 сурет Сөйлемшені анықтауға арналған БНФ грамматикасы.
жалған,  екі  арифметикалық  өрнекті  салыстыру,  екі  логикалық  өрнек-
ті  салыстыру  (<Л-сөйлемше>),  логикалық  оператормен  біріктірілген 
(<L-оператор>),  немесе  логикалық  сөйлемшені  терістеу.  Салыстыру 
(<салыстыру>) салыстыру операторларын (<Салыстыру операторы>) 
пайдалана отырып, екі ариметикалық өрнекті салыстырады. Идентифи-
катор  (<идентификатор>)  кез  келген<цифр>немесе<әріп>  қайталама 
санына тең бейтерминал символдан (<символ>)кейінгі әріп болып табы-
лады. Сан (<сан>) келесі цифрмен (<цифр>) бірге сан (<сан>) ретінде 
рекурсвиті түрде анықталады. Сол жақ рекурсивтік <сандарды> анықтау 
3.5-тараудағы детонациялық семантиканы үғындыруға арналған келесі 
бөлімде қолданылатын болады. Цифр (<цифр>) 0-ден 9-ға дейінгі кез 
келген элемент болуы мүмкін. Арифметикалық оператор (<А-оп>)  '+', 
'-', '*' болып табылады, немесе '/' және логикалық оператор логикалық 
ЖӘНЕ ('&&') немесе логикалық НЕМЕСЕ ('||' ) болуы мүмкін. Грамма-
тика операциялар басымдығының болмауынан бір мағыналы емес және 
3.12 және 3.13.-суреттерінде берілгендей, бір сөз орамы үшін екі немесе 
одан да көп талдау ағашын беруі мүмкін.
3.2.3 Бэкус — Наур кеңейтілген пішіні (РБНП)
Көрнекі болғанына қарамастан БНП адамның жеңіл түсінуі үшін кейбір 
жағдайларды анықтай алмайды:
1.  БНП  өнім  қағидасының  бірнеше  бөліктері  өзгергенде  де,  бірнеше 
анықтамаларды пайдаланады. Бұл қағиданы қажетсіз күшейтуге алып 
келеді. Мысалы, біз <А-өрнек> (‘+’|‘−’|‘*’|‘/’) <А-өрнек> сияқты ариф-
метикалық  теңдеуді  есептей  аламыз,  мұнда  (‘+’|‘−’|‘*’|‘/’)  конструк-

118
циялары  мүмкіншіліктердің  бірін  көрсетеді  және  екі  қағиданы  жақсы 
түсіну үшін бір қағидаға біріктіреді.
2. БНП символдың кез-келген қайталануын өңдеу үшін соңғы рекурси-
яны  пайдаланады.  Соңғы  рекурсияны  итерацияны  пайдалана  отырып
тез  түсіндіруге  болады.  3.1-мысалда  <  операторлардың  кезектілігі>
анықтамасының  орнында  ол    {<оператор>  ‘;’}*    ретінде  көрсетілуі
мүмкін,  мұнда  ‘*’  белгісі  ‘;’  терминалды  символынан  кейінгі  <опера-
тор> терминалды емес символының кез-келген қайталануын білдіреді .
3. БНП өнімді қағида бөлімшесінің қосымша қайталануын анықтайды
және оларды анықтама немесе  ε нөлдік символы ретінде сипаттайды.
РБНП  БНП-дегі  аталған  шектеулерді  алу  үшін  пайдаланылды.  3.1-ке-
сте РБНП-де пайдаланылған ауысуды көрсетеді. Бірнеше анықтамалар 
тобы дөңгелек жақшалар мен тік күйіндегі түрді (1-нұсқа | 2-нұсқа пай-
даланады). Өнімдік қағиданың оң жақтағы өрнегін кеңейтудегі қосым-
ша мүмкіншіліктер [қосымша функция] түріндегі шаршы жақшаны пай-
даланып,  өрнектеледі. Қайталау  ‘*’, ‘+’ сияқты әр түрлі символарды 
немесе қайталау деңгейін сипаттау үшін әртүрлі  цифрлармен толықты-
рылған  қайталанатын  ұғымның  айналасында  фигуралық  жақшаларды 
пайдаланады. Мысалы  сан <цифрдың> бір немесе бірнеше қайталану-
ларын  білдіре  отырып,  {<цифр>}  +түрінде  анықталады;  ал  <иденти-
фикатор> <əріп>  ретінде  анықталады,  {(<letter>|  <digit>)}254    254 
символдан тұратын (әріптер немесе цифрлар) әріптерді білдіреді.  Жақ-
шаны, шаршы жақшаны, бұрыштық жақшаны, тік сызықтарды, арнайы 
мағыналары бар '+' және '*' пайдаланудың арқасында, осы символдар 
бағдарламалау тілінде терминалды символдар ретінде пайдалану кезін-
де  тырнақшаға  орналасады.  Диапазонның  төменгі  шегі  мен  жоғарғы 
шегі арасындағы дефистің көмегімен қысқартылған түрде диапазон си-
патталады.
Table 3.1 – Кесте 3.1

119
Transforming a BNF Grammar into an EBNF Grammar – BNF грамматика-
сын EBNF грамматикасына көшіру
BNF representation – BNF білдіргіші; EBNF representation – EBNF біл-
діргіші
::=Alternative
1
|Alternative
2
 - ::=Балама
1
|Балама
2
;
::=ε|Optional-feature - ::=ε| Қосымша-ерекшелігі;
::=Symbol|ε - ::=Рәміз|ε;
3.5-мысал
3.3-сурет 3.2-суреттегі сипаттаманың РБНП нұсқасын көрсетеді. <А-өр-
нек>L-өрнек> және <салыстыру> терминалдық емес символдарын 
анықтау  3.1-кестеде  сипатталғандай  РБНП-ның  «топтық»  ерекшелік-
теріне қосу жолымен өзгертілді. < L -өрнек> терминалды емес символы-
ның анықтамасы РНБП-ның «қосымша» ерекшелігін пайдаланады, ал 
унарлы оператор < L-өрнек> алдында қажеттілігі туғанда қайталана ал-
майды. Тиісті көптеген анықтамалар < L-өрнекке> біріктірілді. «Нөмір» 
терминалды  емес  символы  «топтау»  және  «қайталау»  үйлесімін  пай-
даланады және 1-ден 9-ға дейінгі цифрлар тобының бір немесе бірне-
ше қайталануы ретінде анықталады. Жоғарғы деңгейдің басқа өнімдік 
қағидаларын өзгерту үшін пайдаланылған өнімдік материалдың кейбірі 
ары  қарай  қажет  болмайды  және  олар  жоғарғы  деңгейдің  қағидала-
рымен біріктірілді.
РБНП  грамматикасы  (‘+’  |  ‘−’  |  ‘*’  |  ‘/’  )  топталған  операторларының 
нөлдік немесе көп қайталануымен (<сан>| <идентификатор>) тобынан 
кейінгі <сан >(немесе<идентификатор>) ретінде итеративті <А-өр-
некті>  анықтау  жолымен  кеңейтілуі  мүмкін.  <  L-өрнек>  терминалды 
емес  символы  (шынайы  |  жалған  |  <идентификатор>|  <салысты-
ру>) салыстыру операторының тобын қайталаудан кейінгі (шындық | 
жалған  | <идентификатор>|<салыстыру>)  топтамасы  ретінде  итера-
тивті анықталады. Оң жақтағы [не] < L-өрнек> өрнегі “[не]” артқа та-
стау арқылы [не] (шынайы| жалған| <идентификатор> |<салыстыру>) 
тобына  өзгертілді.  Жетілдірілген  РБНП  грамматика  3.4-суретте  кел-
тірілген.
3.6-мысал
3.5-сурет РБНП ұғымын пайдалана отырып, синтаксис ұғымын зерттеу 
үшін  итеративті  тұжырымдамаларға  арналған  грамматика  анықта-
масына тағы бір нақты мысал келтіреді. Атауының өзі айтып тұрғандай  
<итерация> көптеген анықтамаларға ие:  <цикл for>, <цикл while>,

120
3.3-сурет. Өрнекті анықтауға арналған кеңейтілген БНП грамматика.
3.4-сурет. Өрнекті анықтауға арналған БНКП
3.5-сурет.  РФБН-ге  жазылған  итерациялық  операторларға  арналған 
грамматика
(<Идентификатор>) операторлар блогын білдіретін <блок> терминал-

121
ды емес символынан кейінгі дөңгелек жақшаның оң жағындағы индексті 
ауыспалы қадамның өлшемін көрсету үшін ‘терминалды символынан 
кейінгі,  <идентификатор>,  терминалды  емес  символынан  кейінгі, 
<опер> терминалды емес символынан кейінгі, <өрнек>терминалды емес 
символынан кейінгі (<өрнек>) есептелген өрнектің мағынасы үшін бел-
гіленеді. Қалған өнімдік қағидалар алдыңғы мысалдарда алынған РФБН 
білімін пайдалана отырып, баламалы түрде саналуы мүмкін.

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




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

    Басты бет