Sastādītāja dizaina apmācība: kas ir, veidi, rīki, piemērs

Kas ir kompilators?

Kompilators ir datorprogramma, kas palīdz pārveidot avota kodu, kas rakstīts augsta līmeņa valodā, par zema līmeņa mašīnvalodu. Tas tulko vienā programmēšanas valodā rakstīto kodu citā valodā, nemainot koda nozīmi. Kompilators arī padara gala kodu efektīvu, kas ir optimizēts izpildes laikam un atmiņas vietai.

Apkopošanas process ietver tulkošanas pamata mehānismus un kļūdu noteikšanu. Sastādītāja process priekšgalā iziet leksisko, sintakses un semantisko analīzi, bet aizmugurē-koda ģenerēšanu un optimizāciju.

Šajā kompilatora dizaina apmācībā jūs uzzināsit

Kompilētāju iezīmes

  • Pareizums
  • Apkopošanas ātrums
  • Saglabājiet pareizo koda nozīmi
  • Mērķa koda ātrums
  • Atzīt likumīgas un nelikumīgas programmas konstrukcijas
  • Laba kļūdu ziņošana/apstrāde
  • Koda atkļūdošanas palīdzība

Sastādītāju veidi

Tālāk ir norādīti dažādi kompilatora veidi.

  • Viena caurlaides kompilatori
  • Divu caurlaides kompilatori
  • Daudzpārejas kompilatori

Viena caurlaides kompilators

Viena caurlaides kompilators



Vienā piegājienā kompilatora avota kods tieši pārveidojas par mašīnas kodu. Piemēram, Pascal valoda.

Divpakāpju kompilators

Divpakāpju kompilators

Divpakāpju kompilators ir sadalīts divās sadaļās, ti.

  1. Priekšpuse: Tas kartē juridisko kodu starpposma pārstāvniecībā (IR).
  2. Aizmugure: Tas kartē IR uz mērķa mašīnu

Divpakāpju kompilatora metode arī vienkāršo atkārtotas mērķauditorijas atlases procesu. Tas arī ļauj izmantot vairākus priekšējos galus.

Daudzpārejas kompilatori

Daudzpārejas kompilatori



Daudzpakāpju kompilators vairākas reizes apstrādā programmas avota kodu vai sintakses koku. Tā sadalīja lielu programmu vairākās mazās programmās un apstrādāja tās. Tas izstrādā vairākus starpposma kodus. Visi šie daudzpārejas signāli uztver iepriekšējās fāzes izvadi. Tātad tas prasa mazāk atmiņas. To sauc arī par “plašu kompilatoru”.

Sastādītāja uzdevumi

Galvenie kompilatora veiktie uzdevumi ir:

  • Sadala avota programmu gabalos un uzliek tiem gramatisko struktūru
  • Ļauj konstruēt vēlamo mērķprogrammu no starpposma attēlojuma, kā arī izveidot simbolu tabulu
  • Apkopo avota kodu un nosaka tajā kļūdas
  • Pārvaldiet visu mainīgo un kodu glabāšanu.
  • Atbalsts atsevišķai apkopošanai
  • Lasiet, analizējiet visu programmu un tulkojiet semantiski līdzvērtīgā veidā
  • Avota koda tulkošana objekta kodā atkarībā no mašīnas veida

Sastādītāja vēsture

Svarīgi kompilatora vēstures orientieri ir šādi:

  • Vārdu “kompilators” pirmo reizi 1950. gadu sākumā izmantoja Greisa Mareja Hopere
  • Pirmo kompilatoru izveidoja John Backum un viņa grupa no 1954. līdz 1957. gadam IBM
  • COBOL bija pirmais programmēšanas valoda kas tika apkopots vairākās platformās 1960
  • Skenēšanas un parsēšanas problēmu izpēte tika veikta pagājušā gadsimta 60. un 70. gados, lai rastu pilnīgu risinājumu

Valodu apstrādes sistēmu soļi

Pirms uzzināt par kompilatoru jēdzienu, vispirms ir jāsaprot daži citi rīki, kas darbojas ar kompilatoriem.

Valodu apstrādes sistēmu soļi

  • Priekšapstrādātājs : Priekšapstrādātājs tiek uzskatīts par sastādītāja sastāvdaļu. Tas ir rīks, kas nodrošina ievadi kompilatoram. Tas nodarbojas ar makro apstrādi, palielināšanu, valodas paplašināšanu utt.
  • Tulks : Tulks ir kā kompilators, kas tulko augsta līmeņa valodu zema līmeņa mašīnvalodā. Galvenā atšķirība starp abiem ir tas, ka tulks lasa un pārveido kodu pa rindām. Sastādītājs uzreiz nolasa visu kodu un izveido mašīnas kodu.
  • Montētājs : Tas tulko montāžas valodas kodu mašīnā saprotamā valodā. Assemblera izvades rezultāts ir pazīstams kā objekta fails, kas ir mašīnas instrukciju kombinācija, kā arī dati, kas nepieciešami šo instrukciju saglabāšanai atmiņā.
  • Saites : Saite palīdz jums saistīt un apvienot dažādus objektu failus, lai izveidotu izpildāmu failu. Visi šie faili, iespējams, tika apkopoti, izmantojot atsevišķus montētājus. Saistītāja galvenais uzdevums ir programmā meklēt izsauktos moduļus un noskaidrot atmiņas vietu, kur tiek glabāti visi moduļi.
  • Iekrāvējs : Iekrāvējs ir OS sastāvdaļa, kas veic uzdevumus, lai ielādētu izpildāmos failus atmiņā un palaistu tos. Tas arī aprēķina programmas lielumu, kas rada papildu atmiņas vietu.
  • Cross-kompilators : Kompilators kompilatora dizainā ir platforma, kas palīdz jums izveidot izpildāmu kodu.
  • Avota-avota kompilators : Avots - avota kompilators ir termins, ko izmanto, ja vienas programmēšanas valodas avota kods tiek tulkots citas valodas avotā.

Sastādītāju celtniecības rīki

Sastādītāju celtniecības rīki tika ieviesti, kad ar datoru saistītas tehnoloģijas izplatījās visā pasaulē. Tie ir pazīstami arī kā kompilatori- kompilatori, kompilatora ģeneratori vai tulkotāji.

Šie rīki izmanto noteiktu valodu vai algoritmu kompilatora komponenta norādīšanai un ieviešanai. Tālāk ir sniegti kompilatora celtniecības rīku piemēri.

  • Skenera ģeneratori : Šis rīks izmanto regulāras izteiksmes. Piemēram, LEX operētājsistēmai Unix.
  • Sintakses virzīti tulkošanas dzinēji : Šīs programmatūras rīki piedāvājiet starpposma kodu, izmantojot parsēšanas koku. Tās mērķis ir saistīt vienu vai vairākus tulkojumus ar katru parsēšanas koka mezglu.
  • Parser ģeneratori: Analizatora ģenerators ņem gramatiku kā ievadi un automātiski ģenerē avota kodu, kas ar gramatikas palīdzību var parsēt rakstzīmju plūsmas.
  • Automātiskie kodu ģeneratori : Ņem starpkodus un pārvērš tos mašīnvalodā
  • Datu plūsmas dzinēji : Šis rīks ir noderīgs koda optimizēšanai. Šeit informāciju sniedz lietotājs, un starpposma kodu salīdzina, lai analizētu jebkādas attiecības. To sauc arī par datu plūsmas analīzi. Tas palīdz jums uzzināt, kā vērtības tiek pārsūtītas no vienas programmas daļas uz otru.

Kāpēc izmantot kompilatoru?

  • Sastādītājs pārbauda visu programmu, tāpēc nav sintakses vai semantisku kļūdu
  • Izpildāmo failu optimizē kompilators, tāpēc tas tiek izpildīts ātrāk
  • Ļauj atmiņā izveidot iekšēju struktūru
  • Nav nepieciešams izpildīt programmu tajā pašā mašīnā, kurā tā tika uzbūvēta
  • Tulkojiet visu programmu citā valodā
  • Ģenerējiet failus uz diska
  • Saistiet failus izpildāmā formātā
  • Pārbaudiet, vai nav sintakses kļūdu un datu veidu
  • Palīdz uzlabot izpratni par valodas semantiku
  • Palīdz risināt valodas darbības problēmas
  • Iespēja netriviālam programmēšanas projektam
  • Kompilatora konstruēšanai izmantotās metodes var būt noderīgas arī citiem mērķiem

Sastādītāju pielietošana

  • Sastādītāja dizains palīdz pilnībā ieviest augsta līmeņa programmēšanas valodas
  • Atbalstiet datoru arhitektūras paralēlisma optimizāciju
  • Mašīnu jaunu atmiņas hierarhiju dizains
  • Plaši izmanto programmu tulkošanai
  • Izmanto kopā ar citiem programmatūras produktivitātes rīkiem

Kopsavilkums

  • Kompilators ir datorprogramma, kas palīdz pārveidot avota kodu, kas rakstīts augsta līmeņa valodā, par zema līmeņa mašīnvalodu
  • Pareizums, apkopošanas ātrums, koda nozīmes saglabāšana ir dažas svarīgas kompilatora dizaina iezīmes
  • Sastādītāji ir sadalīti trīs daļās 1) vienas caurlaides kompilatori 2) divpakāpju kompilatori un 3) daudzpārejas kompilatori
  • “Sastādītājs” bija vārds, kuru 1950. gadu sākumā pirmo reizi lietoja Greisa Mareja Hopere
  • Valodas apstrādes sistēmas soļi ir šādi: priekšprocesors, tulks, montētājs, saistītājs/ielādētājs
  • Svarīgi kompilatora veidošanas rīki ir 1) skenera ģeneratori, 2) sintakse-3) virzīti tulkošanas dzinēji, 4) parsētāja ģeneratori, 5) automātiskie kodu ģeneratori.
  • Sastādītāja galvenais uzdevums ir pārbaudīt visu programmu, tāpēc nav sintakses vai semantisku kļūdu