Kompilyatsiya nazariyasining elementlari Kompilyator – tizimli kayta ishlovchi dastur bulib, yukori daraja dasturlash tilida ѐzilgan dasturni mashina kurinishiga ugiradi (ob’ekt dasturga).
Ob’ekt dasturi mashina kodlarining ketma-keligidan iboratdir.
Kompilyatorning ishi - alfavitni, leksikani, sintaksisni, semantikani (mazmunni) saklagan xolda uzgartirishdir.
Alfavit– til konstruktsiyasini kurishda foydalanish mumkin bulgan belgilar tuplamidir.
Leksika – tilning aloxida ma’noli birliklari tuplamidir (leksemalar).
Leksema – tilning ma’noga ega bulgan minimal konstruktsiyasidir.
Leksemalarga uzgaruvchilar ismlari, xizmatchi suzlar, konstantalar, amal belgilari, ajratkichlar va x.k.
Sintaksis– tilning tugri ifodalash imkonini beradigan koidalar tizimidir.
Semantika – sintaksis jixatidan tugri konstruktsiyalarning ma’noviy bulagini ifodalaydi.
Kompilyator ishining umumiy chizmasi ikki fazadan tashkil topadi: 1. taxlil fazasi
2. sintez fazasi
1)Taxlil fazasi leksik analizator ishidan boshlanadi. (skanerdan).
Terminal belgilar kuyidagilardir:
ajratkichlar
amal ishoralari
tilning kalit suzlari
Xar birida 2 tadan maydoni bulgan ѐzuvlardan tashkil topgan leksemlar jadvali kuriladi.
Leksem turidagi kod
Jadvaldagi rakam
I
5
I – leksema identifikator ekanligini belgisidir.
5 – identifikatorlar jadvalidagi urin.
Taxlil fazasining keyingi bulagi – sintaksis analizatordir (parser).
Bu bulakda kompilyator tilning barcha konstruktsiyalarini tulik sintaksis tekshiruvini bajaradi.
Konstruktsiya– ma’noga ega bulgan leksemalarnig kandaydir ketma-ketligidir.
Bu bulak mos ѐzuvlar kilinadigan xatoliklarni topadi. Xatoliklarni topilgandan sung ish ѐki davom ettiriladi, ѐki tuxtatiladi.
Sintaksik analizator ishining kirish ma’lumotlari bulib leksem kodlari jadvali xisoblanadi.
2). Sintez fazasi dastur uzgaruvchilari buyicha xotirani tarkatishdan boshlanadi.
Bu yerda belgili ismlar jadvali karaladi va xar bir ism uchun xotira ajratiladi, ya’ni boshlangich manzil va soxa ulchovi belgilanadi, oralik uzgaruvchilarga xotira ajratiladi.
Xotiraning bunday ajratilishi xotiraning statik ajratilishi deb ataladi.
Dinamik uzgaruvchilar teskari kodga dasturning bajarilish jaraѐnida bajariladigan kodning fragmentlari kuyiladi. Natijada xotirani taksimlash jadvali tashkil etiladi.
Ikkinchi dastur – mashina komandalari generatsiyasidir. Ushbu boskichda dasturni ichki ifodalashlardan mashina kodlariga utkazish amalga oshiriladi. Kiritiluvchi berilganlar sifatida amallarni kodlari jadvalidan foydalaniladi.
Kodni optimallash- ikki yunalishda amalga oshiriladi:
Dastur xajmining kiskarishi
Ishning tezlashtirilishi