Cum Se Scrie Un Traducător

Cuprins:

Cum Se Scrie Un Traducător
Cum Se Scrie Un Traducător

Video: Cum Se Scrie Un Traducător

Video: Cum Se Scrie Un Traducător
Video: Traducator 2024, Mai
Anonim

Există multe limbaje de programare care au propriile lor caracteristici unice. Dar pentru ca un program scris în oricare dintre ele să funcționeze, trebuie să îl difuzați. Uneori limbajele de programare sunt dezvoltate pentru propriile nevoi (de exemplu, suport pentru automatizare în aplicații mari) și apoi devine necesar să scrieți un traducător.

Cum se scrie un traducător
Cum se scrie un traducător

Necesar

  • - gramatica naturală sau BNF a limbii sursă;
  • - instrumente de dezvoltare.

Instrucțiuni

Pasul 1

Pregătiți datele pentru analiza lexicală a textului în limba sursă. Enumerați toate jetoanele în limba. Împărțiți-le în categorii (cuvinte cheie, litere numerice și șiruri, identificatori, spații albe, punctuație etc.).

Pasul 2

Implementați un modul sau lexer. La intrare, ar trebui să primească un flux de date „brut”, iar la ieșire să formeze o listă de elemente care conțin jetoane și identificatorii de tip ai acestora în secvența în care apar în textul sursă. Programul de analiză poate fi destul de simplu” "scaner" cu un singur nivel. Implementarea recuperării erorilor nu are sens. Caracterele nevalide ar trebui tratate ca erori.

Pasul 3

Pregătiți datele pentru analiză. Pe baza gramaticii naturale sau BNF a limbii sursă, compuneți gramatica sa LL1. Pe baza acestui tip de gramatică, întocmește o schemă de analiză în ceea ce privește categoriile de jetoane valide și constructe semantice ale limbajului.

Pasul 4

Implementați un modul sau un analizor. La intrare, ar trebui să primească o listă de jetoane pregătite în etapa de analiză lexicală. Elaborați algoritmi de verificare a sintaxei recursive utilizând schema pe care ați creat-o la pasul trei. Dacă este necesar, implementați mecanisme de recuperare a erorilor. Adăugați funcționalitate algoritmilor de analiză pentru a construi un arbore pentru funcțiile de calcul, metodele de clasă. Cu structura corectă a algoritmilor de analiză, această funcționalitate poate fi implementată fără probleme. Acest lucru evită necesitatea implementării acestuia ca un modul separat. Structurile de date create ar trebui să conțină liste de instrucțiuni sub formă de secvențe „plate” (expresii aritmetice extinse în formă postfix adecvată pentru calculul pe o mașină stivă, bucle convertite în combinații de secvențe de instrucțiuni de calcul și salt condițional sau necondiționat etc.).

Pasul 5

Creați un modul de optimizare, dacă este necesar. Ar trebui să proceseze și să transforme structurile de date pregătite în pasul anterior. Algoritmii și metodele de optimizare sunt foarte diverse.

Pasul 6

Dezvoltați un generator de cod. Când se procesează structurile pregătite în pașii patru sau cinci, ar trebui să transforme pur și simplu secvențele instrucțiunilor abstracte în instrucțiuni de execuție pe o platformă specifică.

Pasul 7

Creați un program de legare (linker), dacă este necesar. Ar trebui să formeze modulul executabil rezultat alegând locația segmentelor de cod, calculând adresele etichetelor etc.

Recomandat: