Arvutiteaduse instituut
  1. Kursused
  2. 2019/20 kevad
  3. Automaadid, keeled ja translaatorid (LTAT.03.006)
EN
Logi sisse

Automaadid, keeled ja translaatorid 2019/20 kevad

  • Üldinfo
  • Eksami näidised
    • Imperatiivne Imp
    • Beebiprolog Bolog
    • Paralleelne Parm
    • Uskumatu Hulk
    • Dialektiline Dialoog
    • Puhas Pullet
    • Eestimaine Estolog
  • Kava
    • 1. Soojendus
    • 2. Regulaaravaldised
    • 3. Olekumasinad
    • 4. Avaldise struktuur
    • 5. Grammatikad ja lekser
    • 6. Käsitsi parsimine
    • 7. ANTLRiga töötamine
      • Paigaldus
      • Sissejuhatus
      • ANTLRi parsepuu
      • AST klassid
      • Eksami põhiosa!
      • Kodutöö
    • 8. Interpretaator
    • 9. Kompilaator
  • Bitbucket
  • Moodle
  • Fleep!

Eksami teine ülesanne (põhiosa)

Eksami alusosaga implementeerime abstraktse süntaksipuu väärtustamist, aga need süntaksipuud ei kasva just puu otsas, vaid tuleb ise kasvatada. Nüüd on aeg neid ANTLRi abil kasvatada. See viimane protsess näeb siis järgmiselt välja.

Kahe nädala jooksul harjutame praktikumides nende näidiskeelte parserite kirjutamist. Esimene nädal keskendume rohkem esimesele etapile ja siis järgmisel nädalal vaatame nende süntaksipuude loomist. Kodutöös tuleb seda protsessi läbi teha AKT keele jaoks.

Kala grammatika

Alustuseks lahendame vana hea KalaParseri ülesande kasutades ANTLRi. Me tahame esmalt kirjutada ANTLRi grammatika (faili Kala.g4) ning seejärel koostada ASTi (faili KalaAst.java) kasutades käsitsi parsimisel defineeritud KalaNode klasse.

Meeldetuletuseks: grammatika koosneb sulgudega ümbritsetud elementide listist, list võib olla ka tühi. Listi elemendid on omavahel eraldatud komaga, elementideks võivad olla väiketähtedest koosnev muutuja nimi, võtmesõna "null" või sulgudega ümbritsetud list. Lekseemide vahel ja ümber võib olla suvaline arv tühikuid ja tabulaatoreid. Korrektne sisend on näiteks (kala, (x,y , null, (), (kala,()) )).

Kirjelduse järgi võid uue grammatika ise välja mõelda või siis kasutada käsitsi parsimisel toodud grammatikat:

S → (L) | ()
L → A,L | A
A → ident | 0 | S

Peale grammatika loomist tuleb siis lasta ANTLR-il genereerida lekser ja parser ning seejärel täiendada KalaAst.java faili, et koostada AST. ASTi elemente saab luua staatiliste meetoditega mkNull, mkIdent ja mkList (failis KalaNode.java).

Eksamiks harjutamine

Nüüd oleme siis jõudnud nii kaugel, et võime eksami näidetes lahendada teised põhiosa. Praktikumides lahendame vähemalt Imp keele põhiosa ja nii palju kui jõuame, aga veel parem oleks muidugi iseseisvalt lahendada! Lisanduvad ka paar uut keelt, millega siis harjutada väärtustmist ka, sest see on ju kõige aluseks!

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused