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: