Translaatorite koostamine


Kursuses kasutatakse raamatut J. Henno. Keeled, grammatikad ja translaatorid. Tallinn 2006 (Antlr-i osa on seoses Antlr 3.0 ilmumisega veidi vananenud, alljärgnevates loengutes on see osa parandatud).

Kursuse sisu:

Sissejuhatus
Miks eraldi kursus ühe programmi jaoks?

1. Vajalikud formalismid ja teooria

Programmeerimiskeelte süntaks, semantika ja pragmaatika
Masinkood ja assembler
Translaatorite teooria ajaloost
Loomulikud ja programmeerimiskeeled
Tähestik, sõna, keel
Produktsioonisüsteem
Grammatika.
Grammatikate tähistusviise.
Chomsky klassifikatsioon .
Regulaarsed keeled, regulaarsed avaldised ja lõplikud automaadid
Reaalarvude kirjeldamine regulaarse avaldisega

2. Translaatori esimene osa - skanner

Translaatorid ja transleerimise etapid
Süntaksi- ja semantilised vead
Transleerimise etappide kirjeldamise metodoloogia: loogika+tegevused = programm
Regulaarse avaldise põhjal programmi koostamine
Näide: Lihtsa programmeerimiskeele leksika kirjeldus
Leksika korrektsust kontrolliv programm
Väljundtegevuste lisamine: täisarvude ja identifikaatorite moodustamine
Väljundtegevuste lisamine: Pisi-Algoli leksikaanalüsaator
Muutujate nähtavuspiirkond - skoop

Leksika ja süntaksianalüsaatorite genereerimine programmidega Flex ja Bison
FLEX-i programmi struktuur
Näiteid FLEX-i kasutamisest
FLEX-i abil nimede tabeli moodustamine
FLEX-i abil attribuutidega lekseemide moodustamine

3. Translaatori teine osa - süntaksianalüsaator

Nõuded programmeerimiskeele kirjeldamiseks kasutatavatele grammatikatele
Kontekstivabade grammatikate süntaksianalüüs ülalt-alla
Kiiret ülalt-alla analüüsi võimaldavad grammatikad
Magasinmäluga automaat ülalt-alla süntaksianalüüsiks
Kontekstivabade grammatikate süntaksianalüüs alt-üles
Kiire alt-üles analüüs: eelnevusgrammatikad
Bison
Flex+Bison: poola kuju kasutav kalkulaator
Flex+Bison: lekseemi asukoha leidmine
Bison: mäluga kalkulaator
Programmi teisendamine puuks
Pisi-Algoli translaator magasinmasina koodiks
Pisi-Algol Forth-koodiks

4. Abstraktse süntaksi puu ja väljundkoodi genereerimine

Abstraktse süntaksi puu
Semantika
Attribuudid
Attribuutide kasutamine koodi genereerimisel
Attribuutide kasutamine koodi genereerimisel: tingimuslause
Attribuutide kasutamine koodi genereerimisel: loogiline avaldis
Veidi suurem näide

Translaatorite genereerimise süsteem ANTLR
Antlr-3
Aritmeetilise avaldise süntaksi kontroll Antlr3-ga
Mäluga kalkulaator ANTLR3-ga
Vahekeeled
Avaldiste transleerimine väljundtekstiks
ANTLR - if-lause
Tsükli transleerimine Antlr-iga
Pisi-Algol HLA-assemblerkoodiks

Muid translaatorite genereerimise süsteeme

5. Ülevaade programmeerimiskeeltest ja nende arengust

Programmeerimisstiilid
Mõne programmeerimiskeele lühiiseloomustus
Loogilise ja funktsionaalprogrammeerimise keeled
Süntaksi ühlustumineHTML
XHTML
CSS
Imperatiivsete programmeerimiskeelte arengu skeem
Translaatorite tegemisest Eestis
Väike test !

Küsimused, probleemid: