Institute of Computer Science
  1. Main page
  2. Automata, Languages and Compilers
ET
Log in

Automata, Languages and Compilers

  • Üldinfo
  • Ajakava
  • Eksami näidised
    • Imperatiivne Imp
    • Beebiprolog Bolog
    • Paralleelne Parm
    • Uskumatu Hulk
    • Dialektiline Dialoog
    • Puhas Pullet
    • Eestimaine Estolog
  • Teemad
    • 1. Soojendus
    • 2. Regulaaravaldised
    • 3. Automaadid
    • 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
    • 10. Edasi!
  • Süvendus
  • GitHub
  • Moodle
  • Zulip
  • Zoom

Eksami 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 AKTK jaoks.

Kala grammatika

Alustuseks lahendame vana hea KalaParseri ülesande kasutades ANTLRit. 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 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 kaugele, et võime eksami näidetes lahendada põhiosasid. Praktikumides lahendame vähemalt Imp keele põhiosa ja nii palju kui jõuame, aga veel parem oleks muidugi iseseisvalt lahendada!

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment