Kuinka Kirjoittaa Kääntäjä

Sisällysluettelo:

Kuinka Kirjoittaa Kääntäjä
Kuinka Kirjoittaa Kääntäjä

Video: Kuinka Kirjoittaa Kääntäjä

Video: Kuinka Kirjoittaa Kääntäjä
Video: SKS 190 vuotta: kääntäjä David Hackston 2024, Saattaa
Anonim

On monia ohjelmointikieliä, joilla on omat ainutlaatuiset ominaisuutensa. Mutta jotta jossakin niistä kirjoitettu ohjelma toimisi, sinun on lähetettävä se. Joskus ohjelmointikielet kehitetään heidän omiin tarpeisiinsa (esimerkiksi automaation tuki suurissa sovelluksissa), ja sitten on tarpeen kirjoittaa kääntäjä.

Kuinka kirjoittaa kääntäjä
Kuinka kirjoittaa kääntäjä

Välttämätön

  • - lähdekielen luonnollinen kielioppi tai BNF
  • - kehitystyökalut.

Ohjeet

Vaihe 1

Valmista tiedot lähdekielen tekstin leksikaalista analysointia varten. Luettele kaikki tunnukset kielellä. Jaa ne luokkiin (avainsanat, numeeriset ja merkkijonolitraalit, tunnisteet, välilyönnit, välimerkit jne.).

Vaihe 2

Toteuta moduuli tai lexer. Syötössä sen tulisi vastaanottaa "raaka" datavirta ja lähtöön muodostaa luettelo elementeistä, jotka sisältävät tunnuksia ja niiden tyyppitunnuksia siinä järjestyksessä, jossa ne esiintyvät lähdetekstissä. Jäsennysohjelma voi olla melko yksinkertainen " yksitasoinen "skanneri. Virheiden palauttamisen toteuttaminen ei ole järkevää. Virheellisiä merkkejä on pidettävä virheinä.

Vaihe 3

Valmistele tiedot jäsentämistä varten. Laadi lähdekielen luonnollisen kieliopin tai BNF: n perusteella sen LL1-kielioppi. Laadi tämän tyyppisen kieliopin perusteella jäsentämisjärjestelmä voimassa olevien tunnusten ja kielen semanttisten rakenteiden luokkien perusteella.

Vaihe 4

Toteuta moduuli tai jäsennin. Sisäänkirjautumisen yhteydessä sen tulisi vastaanottaa luettelo leksikaalisen jäsentämisen vaiheessa valmistetuista rahakkeista. Kehitä rekursiiviset syntaksitarkistusalgoritmit käyttämällä vaiheessa 3 luomaa kaavaa. Ota tarvittaessa käyttöön virheiden palautusmekanismit. Lisää jäsentelyalgoritmeihin toiminnallisuus, jotta voit rakentaa puun funktioiden, luokkamenetelmien laskemiseksi. Parsointialgoritmien oikealla rakenteella tämä toiminto voidaan toteuttaa ilman ongelmia. Näin vältetään tarve toteuttaa se erillisenä moduulina. Luotujen tietorakenteiden tulisi sisältää luettelot ohjeista "tasaisina" sekvensseinä (aritmeettiset lausekkeet, jotka on laajennettu postfix-muotoon, joka soveltuu pinoamiselle pino-koneella, silmukat, jotka on muunnettu laskennallisten ohjeiden sekvenssien yhdistelmiksi ja ehdollisiksi tai ehdottomiksi hyppyiksi jne.).

Vaihe 5

Luo tarvittaessa optimointimoduuli. Sen tulisi käsitellä ja muuttaa edellisessä vaiheessa valmistellut tietorakenteet. Optimointialgoritmit ja -menetelmät ovat hyvin erilaisia.

Vaihe 6

Kehitä koodigeneraattori. Kun prosessoidaan neljännessä tai viidennessä vaiheessa valmisteltuja rakenteita, sen tulisi yksinkertaisesti muuttaa abstraktien käskyjen sekvenssit tietyn alustan suorittamista varten.

Vaihe 7

Luo tarvittaessa sideaineohjelma (linkittäjä). Sen tulisi muodostaa tuloksena oleva suoritettava moduuli valitsemalla koodisegmenttien sijainti, laskemalla tarrojen osoitteet jne.

Suositeltava: