Kako Napisati Prevodioca

Sadržaj:

Kako Napisati Prevodioca
Kako Napisati Prevodioca

Video: Kako Napisati Prevodioca

Video: Kako Napisati Prevodioca
Video: Kako napisati knjigu - od prve rečenice do poslednjeg poglavlja 2024, Maj
Anonim

Postoji mnogo programskih jezika koji imaju svoje jedinstvene karakteristike. Ali da bi program napisan u bilo kojem od njih funkcionirao, morate ga emitirati. Ponekad se programski jezici razvijaju za vlastite potrebe (na primjer, podrška za automatizaciju u velikim aplikacijama) i tada je potrebno napisati prevoditelja.

Kako napisati prevodioca
Kako napisati prevodioca

Potrebno

  • - prirodna gramatika ili BNF izvornog jezika;
  • - razvojni alati.

Instrukcije

Korak 1

Pripremite podatke za leksičku analizu teksta na izvornom jeziku. Navedite sve tokene na jeziku. Podijelite ih na kategorije (ključne riječi, numerički i string znakovi, identifikatori, razmaci, interpunkcija itd.).

Korak 2

Primijenite modul ili lexer. Na ulazu bi trebao primiti "sirovi" tok podataka, a na izlazu formirati listu elemenata koji sadrže tokene i njihove identifikatore tipova u nizu u kojem se javljaju u izvornom tekstu. Program za raščlanjivanje može biti prilično jednostavan " skener s jednim nivoom. Implementacija oporavka od grešaka nema smisla. Nevažeći znakovi trebaju se tretirati kao greške.

Korak 3

Pripremite podatke za raščlanjivanje. Na osnovu prirodne gramatike ili BNF-a izvornog jezika, sastavite njegovu LL1 gramatiku. Na osnovu ove vrste gramatike, izradite shemu raščlanjivanja u smislu kategorija važećih leksema i semantičkih konstrukcija jezika.

Korak 4

Implementirajte modul ili parser. Na ulazu treba primiti popis tokena pripremljenih u fazi leksičkog raščlanjivanja. Razvijte rekurzivne algoritme za provjeru sintakse koristeći shemu koju ste kreirali u trećem koraku. Ako je potrebno, implementirajte mehanizme oporavka grešaka. Dodajte funkcionalnost algoritmima raščlanjivanja kako biste izgradili stablo za izračunavanje funkcija i metode klase. Uz ispravnu strukturu algoritama raščlanjivanja, ova se funkcionalnost može implementirati bez ikakvih problema. Time se izbjegava potreba za implementacijom kao zasebnog modula. Stvorene strukture podataka trebale bi sadržavati popise uputa u obliku "ravnih" sekvenci (aritmetički izrazi prošireni u postfiksni oblik pogodan za izračunavanje na složnom stroju, petlje pretvorene u kombinacije sekvenci računskih instrukcija i uslovni ili bezuvjetni skokovi, itd.).

Korak 5

Po potrebi stvorite optimizacijski modul. Trebao bi obraditi i transformirati strukture podataka pripremljene u prethodnom koraku. Algoritmi i metode optimizacije su vrlo raznoliki.

Korak 6

Razviti generator koda. Kada obrađuje strukture pripremljene u četvrtom ili petom koraku, trebalo bi jednostavno transformirati sekvence apstraktnih uputa u upute za izvršavanje na određenoj platformi.

Korak 7

Po potrebi stvorite program za povezivanje (povezivač). Trebao bi oblikovati rezultirajući izvršni modul odabirom mjesta segmenata koda, izračunavanjem adresa oznaka itd.

Preporučuje se: