Wednesday, February 15, 2012

FON*C kompajler

FON*C je strogo tipizirani, imperativni, portabilni, po svojoj definiciji konzistentan i koncizan programski jezik C familije, baziran na .NET platformi. Za definisanje sintakse jezika i generisanje leksera i parsera korišćen je ANTLR (Another Tool For Language Recognition) alat. Kao sporedni efekat procesa parsiranja napravljeno je Apstraktno sintaksno stablo koje je iskorišćeno kao veza između sintaksnog i semantičkog dela kompajlera. Semantička pravila jezika i generator koda implementirani su u programskom jeziku C#. Ciljanu platformu jezika čini .NET platforma koja pruža Zajedničko izvršno okruženje (Common Language Runtime, CLR) za sve jezike implementirane na ovoj platformi. Generator koda FON*C kompajlera emituje Zajednički međujezik (Common Intermediate Language, CIL) CLR izvršnog okruženja. Implementirana je alatka make kojom se, na osnovu opisa zavisnosti između datoteka izvornog koda FON*C programa, vrši automatska kompilacija u izvršnu datoteku. 

Slika 1: Šematksi prikaz procesa kompajliranja 

Kao što se može videti, kompajler FON*C-a emituje tekstualne CIL fajlove. Da bi se tekstualni fajl preveo u izvršnu datoteku koristi se specijalni kompajler – IL Asembler (ILASM), koji je deo .NET okruženja. Ovaj kompajler može da se poziva ručno ali je za potrebe FON*C-a, napravljena alatka make, po ugledu na slične alate napravljene za programski jezik C. Alatka make služi za automatsku kompilaciju izvornog koda programa na osnovu opisa zavisnosti između datoteka od kojih se izvršni program sastoji. Program make automatski pronalazi heder fajlove, vrši kompilaciju .c fajlova u .il fajlove i spaja ih u izvršnu datoteku pozivanjem ILASM asemblera u pozadini.

Materijali za preuzimanje

FON*C kompajler, kao i primeri izvornog koda  (alatka make ce biti posebno objašnjena u nekom narednom postu).

Prezentacija o osobinama jezika FON*C kao i o konstrukciji FON*C kompajlera napravljena u sklopu odbrane Master rada. 

Kompletan tekst mog Master rada na temu Konstrukcija kompajlera jezika FON*C za .NET platformu primenom ANTLR-a U prvom delu rada razmotrena su osnovna pitanja konstrukcije programskih jezika: sintaksa, imena, tipovi, semantika, funkcije i upravljanje memorijom. U drugom delu rada opisano je Zajedničko jezičko izvršno okruženje (Common Language Runtime, CLR) .NET programske platforme: Zajednički sistem tipova (Common Type System, CTS) i programski jezik samog CLR-a - Zajednički međujezik (Common Intermediate Language, CLI). U trećem delu rada implementiran je kompajler programskog jezika FON*C.

Pravci daljeg rada:
  •  Integracija jezika u Visual Studio 2010, što bi trebalo da obuhvati:
  • Isticanje sintakse (syntax highlighting)
  • Strukturiranje - kolapsiranje teksta (outlining)
  • Intelisens
    • Dovršavanje naredbi
    • Brzi info
    • Pomoć oko parametara
  • Podudaranje zagrada (bracket matching)
  • Formatiranje
  • Isticanje grešaka


Povezani postovi: