1.1 Формалдық грамматика мен тілдер анықтамасы
Түрлі ұлттар қарым-қатынас жасайтын табиғи тілден жасанды тілдің ерекшелігі – олар жазба мәтіндерді құру үшін қолданылатыны белгілі. Бұндай тілдер жасанды тілдерден қида жеңіл болып табылады, себебі бұл тілде көп мағыналық пен синоним жоқ,, синтаксис пен семантика жеңілдетілген, сондай-ақ айтарлықтай мәтіндік бағыныңқылық төмендетілген. Жасанды мәтіндердің негізгі қызметі -ақпаратты компьютерлер мен басқару құрылғыларына беру.
Мәтін компьютер немесе басқару құрылғылары орындау қажет тапсырма болып табылады. Бұндай тапсырманың мәтінін адам құрғандықтан, кіріс тілі деп аталатын мәтінді жазу тілі қолданатын адамдар қолданысына ыңғайлы және түсінікті болу керек. Адамға бағытталған тіл әдетте компьютер орындайтын команда түрлерімен біртектес болмайды. Компьютерге түсінікті командалар артынан кіріс тілінде мәтіннің өзгертілуін орындау үшін транслятор деп аталатын арнайы құрылғы немесе бағдарламалар қолданылады.
Трансляторды құру тапсырмасы айтарлықтай қиын және жауапты іс. Оның шешім қабылдау сапасына өзгертуді орындауға қажет ресурстар байланысты болады. Және бұнымен қатар кіріс тілінде жазылған мәтін мазмұнын дәлме-дәл жеткізу трансляторға қойылатын негізгі талап болып табылады. Ондай өзгертулерді іске қосу үшін тіл синтаксисі деп аталатын кіріс мәтіндерінің құрылу ережелерінің дәлме-дәл суреттелуі мен тіл семантикасы деп аталатын мәтін мазмұнын баяндайтын талдау ережелері қажет.
Синтаксис пен семантиканы мазмұндау үшін түрлі құралдар қолданылады. Осылайша тіл синтаксисін формалдық грамматика, ал семантиканы атрибуттық грамматика көмегімен мазмұндауға болады.
Бұл бөлімде тек қана синтаксисті мазмұндаумен байланысты мәселелер ғана қарастырылады. Табиғи тілдік аналогиялармен қолдана отырып формалды тілді нақты ережелер бойынша құрылған көптеген сөйлемдер ретінде көрсетуге болады. Формалды тіл мен құру ережелерінің ұсыныстарын құру тәсілі формалдық грамматика көмегімен анықталуы мүмкін. Бұнымен қатар құру ережелерінің жиыны грамматика кестесі деп аталады, ал құру реті шығару түсінігінің көмегімен анықталады. Грамматика ережелерінің көмегімен тіл сөйлемдерінің ережесі болып табылатын түрлі шығарулар құруға болатыны белгілі. Сондықтан формалдық грамматика көп жағдайларда тудыру грамматикасы, ал шығару – тудыру үрдісі деп аталады.
Бұл бөлімде алфавит, шынжыр, грамматика, шығару, тіл және т.б. базалық түсініктер анықтамалары беріледі. Содан соң формалдық грамматиканың мүмкін классификацияларының бірі – Хомс бойынша классификациялау қарастырылады. Бұл классификация бағдарламалау тілін тәжірибеде мазмұндау үшін қолданылатын грамматика типін көрсетуге мүмкіндік береді. Бөлімнің соңында бағдарламалау тілінің кейбір конструкцияларына арналған жай грамматикаларды құру мысалдары қарастырылады.
Формалдық тіл мен грамматиканы анықтауға қажет алғашқы және ең жай түсінік болып алфавит пен алфавиттегі сөздер табылады.
Символдардың бұл қарастыруда бөлінбейтін соңғы жиыны сөздік немесе алфавит деп, ал жиынға жататын символдар - алфавит әріптері деп аталады.
Мысалы, әрбіреуі екі символдан тұратын алфавиті 5 әріпті құрайды, ал алфавиті 4 әріпті құрайды.
Алфавит әріптерінің реті бұл алфавиттегі сөз немесе шынжыр деп аталады. Сөздегі әріптер саны жиынының ұзындығы деп аталады. Бос шынжыр – бұл бірді-бір әріпі жоқ шынжыр. Оң жақтан немесе сол жақтан шынжырына кез келген бос шынжырдың қосылуы шынжырын өзгертпейді
алфавитінің символдарынан құрылған барлық мүмкін шынжыр жиындарын анықтау үшін белгісі қолданылады.
формалды грамматика деп келесі төрт объектінің жиынтығы аталады: мұнда - терминалдық алфавит (сөздік); бұл алфавиттің әріптерін терминалдық символ дейді; олардан грамматиканы тудыратын шынжыр құрылады; терминалдық сөздік немесе терминалдық символ әріптерін белгілеуді әрі қарай латын алфавитінің әріптерімен белгілейтінімізді атап кетейік;
– терминалдық емес, көмекші алфавит (сөздік); бұл алфавиттің әріптері шынжыр құруда қолданыла алады; олар аралық шынжырға кіре алады, бірақ құру нәтижесіне кіргізілмейді; терминалдық емес символдарды белгілеу үшін латын алфавитінің жазба әріптерінен тұратын және бұрыштық жақшаларға алынған идентификаторларды қолданатынымызды атап кетейік; - грамматикасының бастапқы символы немесе аксиомасы- .
–шығару ережелерінің жиыны немесе түрінің ережелерін тудыру жиыны, бұнда және , алфавитінің әріптерінен құрылған шынжырлар6 олар грамматикасының толық алфавиті (сөздік) деп аталады.
Грамматика ережелерінің жиынына сондай-ақ түрінің оң жағы бос ережелер де кіреді. Ереженің оң жағы бос болғандықтан, қателік тудырмау үшін бос шынжыр символын түрінде белгілейміз.
Грамматиканы шығару ережесі шынжыр құру үшін қолданылады.
- грамматикасының ережесі және – символдар шынжыры, оған қоса . Онда шынжыры (яғни -де шынжырын ауыстыру) ережесінің көмегімен шынжырдан алынуы мүмкін. Бұл жағдайда шынжырынан тікелей шығарылған және білдіреді.
Егер шынжырының жиынтығы берілгенде келесі шығады онда мұндай реттік қатарды грамматикасында –дан шығару деп атап, белгілейді.
грамматикасының терминалдық алфавитінің соңғы шынжыр жиынын алғашқы символынан шығарамыз, ол грамматикасынан түған тіл деп аталып, былайша белгіленеді.
Келтірілген грамматика кестесінде үш ереже бар. Екінші ереже ереженің оң жақ және сол жағында да терминалдық емес символы бар. Мұндай ережелер рекурсивтік деп аталады. Бұл ережені терминалы жоқ шынжырға пайдалану, қайта енетін жаңа шынжырдың тууына әкеледі. Осылайша қайталай отырып ұзын шынжыр құруға болады. Рекурсивтік ереже көмегімен шығару шексіз болмау үшін грамматика кестесінде оң жақта символымен бір болсын ереже болу керек.
Бұндай ереже шығарылатын шынжырдан шығара отырып рекурсияны аяқтайды. Қарастырылатын грамматикада шығаруды аяқтау үшін ережесі қолданылады. грамматика ережесінің көмегімен шығару қатарын қарастырайық. Бірінші және үшінші ережені қолданып келесіні аламыз:
Бірінші, екінші одан кейін үшінші ережелерді қолданып келесіні аламыз:
1.2 Формалдық грамматика типтері
Формалдық грамматика теориясында 4 тіл түрі сәйкес келетін грамматиканың 4 түрі ерекшеленеді. Бұл грамматикалар грамматика ережелеріне шектеу қою жолымен анықталады.
Жалпы түр грамматикасы деп айтылатын 0 түріндегі грамматикалар тудыру ережелеріне ешқандай шектеу қоймайды. Кез келген ережесі еркін шынжырындық көмегімен құрылуы мүмкін.
Мәнмәтінді – бағыныңқылы грамматика деп аталатын 1 түріндегі грамматикалар кез келген ережені қолдануға жол бермейді.
Бұндай грамматикаларда шығару ережесі келесі түрде болуы керек:
бұнда - жиынынан мүмкін бос шынжырлар, символ және шынжыр. және шынжырлары ережені қолданғанда өзгермейді, сондықтан оларды мәнмәтін (яғни сәйкесінше оң жақ және сол жақ), ал грамматиканы – мәнмәтінді бағыныңқылы деп атайды.
1 түріндегі грамматика 0 түріндегі грамматикаға қарағанда көбірек қолданылады, себебі ереженің оң жағында кейбір синтаксистік түсініктермен байланысты болатын терминалды емес бір ғана символ өзгертіледі, ал 0 түріндегі грамматикада бірден бірнеше символ, соның ішінде терминалды да өзгертуге болады.
Мысалы,
грамматикасы мәтіндік-бағыныңқылы болып табылады, себебі екінші және алтыншы ережелер бос емес оң жақты мәнмәтінді, ал үшінші және бесінші ереже екі мәнмәтінді де ұстайды. Бұндай грамматикада шығару төмендегідей болуы мүмкін:
2 түріндегі грамматиканы мәнмәтінді – бос және мәнмәтінсіз грамматика ( -грамматика немесе грамматика) деп атайды. бұндай грамматикаларды шығару ережесі келесідей болады:
және
Яғни бұл ережелер шарты бойынша 1 түріндегі грамматика ережесінен пайда болады. Мәнмәтіндік шарттар болмағандықтан, 1 түріндегі грамматика ережесіне қарағанда МБ – грамматика ережесі жеңілдірек алынады. Яғни, нақты осындай грамматикалар бағдарлама тілдерін мазмұндау үшін қолданылады. – грамматикаға мысал ретінде төмендегі грамматиканы келтіруге болады:
Бұл грамматика шынжыры немесе шынжырының айналы көрінісінің әрбіреуі екі бөлігінен тұратын шынжырдан тұратын тілді тудырады.
бұнда - бұл бос шынжырсыз жиыны. Бұл грамматика көмегімен мысалға келесі шынжыр құруға болады:
3 түріндегі грамматика автоматты грамматика ( -грамматика) деп аталады. Бұндай грамматикаларда шығару ережелері келесі түрде болады:
немесе немесе
бұнда және және грамматика тек қана - оң жақ ереже немесе – сол жақты ереже түріндегі ережесі болуы мүмкін.
Бұл грамматикалар бір тілді тудырады.
Тіл классификациясы тілді тудыратын грамматика түрлеріне сәйкес құрылуы мүмкін. Бір тіл екі түрлі грамматика болатын түрлі грамматикалармен берілуі мүмкін. Сондықтан тіл түрін түріндегі грамматика беруі мүмкін грамматика түрімен анықталады.
Достарыңызбен бөлісу: |