G = {N, T, S, P}
Коидалар куйидаги куринишга эга: a → b
a (N T)+
b (N T)*
+ бу тупламга буш туплам киритиш мумкин эмаслигини англатади
* бу тупламга буш туплам киритиш мумкинлигини англатади
a ва b – баъзи бир каторлар (белгилар кетма-кетлиги)
Бундай коидалар продукциялар деб хам аталади.
Grammatikani tekshirgich - bu grammatik xatolar, tegishli tinish belgilari, imlo xatolari va jumla tuzilishi bilan bog'liq muammolarni tekshiradigan dastur .
Grammatikani tekshirgich - bu matnning grammatik to'g'riligini tekshirishda yordam beradigan mustaqil dastur yoki dasturiy ta'minotning bir qismi. Odatda, grammatika tekshiruvi matn protsessorlari kabi kattaroq dastur paketining xususiyati sifatida amalga oshiriladi. Shu bilan birga, mustaqil grammatika tekshirgichlari ham foydalanish mumkin, shuningdek, onlayn grammatikani tekshirish xizmatlarini taqdim etadigan bir nechta veb-saytlar mavjud. Grammatik tekshiruvchilar odatda xatolar va boshqa til xatolarini aniqlash uchun tabiiy tilni qayta ishlash va grammatik qoidalardan foydalanadilar.
45. Bajariluvchi dastur nima? Va u qanday jarayonlarning natijasi sifatida yuzaga keladi?
Hisoblashda , bajariladigan kod , bajariladigan fayl yoki bajariladigan dastur , ba'zan oddiygina bajariladigan yoki ikkilik deb ataladi, kompyuterni "ko'rsatilgan vazifalarni kodlangan ko'rsatmalarga muvofiq bajarishga" olib keladi , [1] ma'lumotlar faylidan farqli o'laroq . mazmunli bo'lishi uchun dastur tomonidan talqin qilinishi ( tahlil qilinishi).
Aniq talqin foydalanishga bog'liq. "Ko'rsatmalar" an'anaviy ravishda jismoniy protsessor uchun mashina kodi ko'rsatmalarini anglatadi . [2] Ba'zi kontekstlarda skript yaratish ko'rsatmalariga ega bo'lgan fayl (masalan, bayt kod ) ham bajariladigan deb hisoblanishi mumkin.
Bajariladigan fayllarni mashina tilida qo'lda kodlash mumkin, ammo dasturiy ta'minotni odamlarga oson tushuniladigan yuqori darajadagi tilda manba kodi sifatida ishlab chiqish ancha qulayroqdir. Ba'zi hollarda manba kodi montaj tilida ko'rsatilishi mumkin , bu esa mashina kodi ko'rsatmalari bilan chambarchas bog'liq bo'lgan holda inson tomonidan o'qilishi mumkin.
Yuqori darajadagi til bajariladigan mashina kodli faylga yoki bajarilmaydigan mashina kodiga kompilyatsiya qilinadi - qandaydir turdagi ob'ekt fayli ; assembly tili manba kodidagi ekvivalent jarayon assembly deb ataladi . Bajariladigan faylni yaratish uchun bir nechta obyekt fayllari bog'langan . Ob'ekt fayllari - bajariladigan yoki bajarilmaydigan - odatda konteyner formatida saqlanadi , masalan, bajariladigan va bog'lanadigan format (ELF) yoki operatsion tizimga xos bo'lgan Portativ bajariladigan format (PE) . [3] Bu yaratilgan mashina kodiga strukturani beradi, masalan, uni .text kabi bo'limlarga bo'lish(bajariladigan kod), .data (boshlangan global va statik oʻzgaruvchilar) va .rodata (konstantalar va satrlar kabi faqat oʻqish uchun moʻljallangan maʼlumotlar).
Bajariladigan fayllar odatda ish vaqti tilini (masalan, vazifalarni rejalashtirish , istisnolarni qayta ishlash , statik konstruktorlar va destruktorlarni chaqirish va h.k.) va operatsion tizim bilan o'zaro aloqalarni, xususan, argumentlarni uzatish, muhit va chiqish holatini qaytarishni amalga oshiradigan ish vaqti tizimini ham o'z ichiga oladi. , fayl tutqichlari kabi resurslarni chiqarish kabi boshqa ishga tushirish va o'chirish xususiyatlari bilan birga . C uchun bu haqiqiy kirish nuqtasini o'z ichiga olgan crt0 ob'ektiga ulanish orqali amalga oshiriladi va ish vaqti kutubxonasini chaqirish orqali sozlash va o'chirishni amalga oshiradi . [
46. Misol. Berilgan matnli faylda bir nechta familiyadan iborat massiv tuzing. Yangi matnli fayl hosil qilinsin va unga bu massivning klaviaturadan kiritilayotgan harfdan boshlanuvchi familiyani ekranga chiqaring.
47. Grammatikaning berilishi haqida ma’lumot bering. Javobingizni misollarda asoslang. .
Ихтиёрий грамматика иккита масалани хал қилиши керак:
Англаш масаласини (либо задачи распознавания);
Туғилиш масаласини (либо задачи порождения).
Туғилиш жараёнида туғри гапларнинг чиқиши ифодаланади. Бу шундай амалга оширилади: бошланғич белгидан бошлаб чап булакнинг қоидаларини унг булакка алмаштириш амалга оширилади.
Ҳар бир олинган тушунча узининг тарифига алмаштирилади. Бу жараён ўнг томонда фақат терминал белгиларнинг узи колмагунича давом этади.
Жараённи грамматик разбор дарахти куринишида ифодалаш қулай. Ушбу дарахт кандай қоидаларни қандай тил конструкцияларга қўллаш мумкинлигини кўрсатади, лекин у аник туғилиш жараёнидаги қўллаш тиртибини қўрсатмайди. Дарахт грамматиканинг ушбу коидаларига асосланган ҳолда қурилади.
Юкорида бошлангич белги жойлашади, пастда – терминал белгилар. Дарахт №1 коидаларни куллаш йули билан курилади.
Гап эга ва кесимнинг конкатенациясидан ташкил топади. Кесим булиб ёки ИС, ёки М келиши мумкин.
Аник бир гапни чиқиши ечим қабул қилишни талаб этади: қайси йул билан пастга қараб юриш керак. Дарахт эса қоидаларни ифодалайди. Самолет строится – масалан.
Англаш масаласи дарахтдан фойдаланиб ечилади.
Дарахт буйича пастдан юкорига харакат килиб аник гапга бошлангич белгига етиб бориш керак. Бу ерда унг томон булакларини чап томон булаклари коидасига алмаштирилади.
48. Optimizatsiya bloki nima va undan qanday maqsadlarda foydalaniladi?
Kodni optimallashtirish nima va uning maqsadi?
Kodni optimallashtirish - kod sifati va samaradorligini oshirish uchun kodni o'zgartirishning har qanday usuli . Dastur kichikroq hajmga ega bo'lishi, kamroq xotira iste'mol qilishi, tezroq bajarilishi yoki kamroq kiritish/chiqarish operatsiyalarini bajarishi uchun optimallashtirilishi mumkin.
Hisoblashda optimallashtiruvchi kompilyator bajariladigan kompyuter dasturining ba'zi atributlarini minimallashtirish yoki maksimallashtirishga harakat qiladigan kompilyatordir . Umumiy talablar dasturning ishlash vaqtini, xotira maydonini, saqlash hajmini va quvvat sarfini minimallashtirishdir (oxirgi uchtasi portativ kompyuterlar uchun mashhur ).
Kompilyatorni optimallashtirish odatda optimallashtirish o'zgarishlari ketma-ketligi , dasturni qabul qiladigan va uni kamroq resurslardan foydalanadigan yoki tezroq bajariladigan semantik ekvivalent chiqish dasturini ishlab chiqarish uchun o'zgartiradigan algoritmlar yordamida amalga oshiriladi. Kodni optimallashtirishning ba'zi muammolari NP-to'liq yoki hatto hal qilib bo'lmaydiganligi ko'rsatilgan . Amalda, dasturchining kompilyator o'z vazifasini bajarishini kutishga tayyorligi kabi omillar kompilyator taqdim etishi mumkin bo'lgan optimallashtirishlarga yuqori chegaralarni qo'yadi. Optimallashtirish odatda protsessor va xotirani talab qiladigan jarayondir. Ilgari kompyuter xotirasidagi cheklovlar ham qaysi optimallashtirishlarni amalga oshirish mumkinligini cheklovchi asosiy omil bo'lgan.
Ushbu omillar tufayli optimallashtirish kamdan-kam hollarda har qanday ma'noda "optimal" natijani beradi va aslida "optimallashtirish" ba'zi hollarda ishlashga to'sqinlik qilishi mumkin. Aksincha, ular odatiy dasturlarda resurslardan foydalanishni yaxshilash uchun evristik usullardir.
Do'stlaringiz bilan baham: |