Institute of Computer Science
Courses.cs.ut.ee Institute of Computer Science University of Tartu
  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
    • 8. Interpretaator
    • 9. Kompilaator
    • 10. Edasi!
  • Süvendus
  • GitHub
  • Moodle
  • Zulip
  • Zoom

Eesti loogikute keel Estolog

x := 0;
y := 1;
a := (x JA y);
b := (x VOI y);

(KUI (x = y) SIIS a MUIDU b)

Estolog on tõeväärtustega arvutamise keel, kus saab lisaks kontrollida võrdust, moodustada tingimusavaldisi ning defineerida muutujaid. Seda kõike saab teha imeilusas eesti keeles! Keele abstraktne süntaks on rahvusvaheline (ehk suhteliselt igav), aga küll saame eesti keele omapäraga tegeleda põhiosa ülesandes...

Paremal on üks programm estologi (konkreetses) süntaksis. Selle näidisprogrammi käivitamise tulemus on true. Estolog oleks muidugi vastanud eesti keeles, aga kuna implementeerime Javas, siis saame tulemuseks Java tõeväärtustüüpi väärtuse.

AST

Estologi AST klassid paiknevad proovieksam.ast paketis. Keele konstruktsioone esitavad järgmised EstologNode alamklassid:

  • EstologLiteraal, EstologMuutuja — tõeväärtusliteraal ja muutuja;
  • EstologJa, EstologVoi — konjunktsiooni ja disjunktsiooni operaator;
  • EstologVordus — kahe avaldise võrdsuse kontrollimise operaator;
  • EstologKui — tingimusavaldis (ternaarne operaator);
  • EstologDef — muutuja definitsioon;
  • EstologProg — terviklik programm, mis koosneb definitsioonidest ja kehast ehk täpselt ühest avaldisest (mis pole definitsioon).

Klassis EstologNode on staatilised abimeetodid, millega saab mugavamalt abstraktse süntaksipuu luua. Nende abil saab ülaloleva näidisprogrammile vastava süntaksipuu ise ehitada:

prog(
    kui(vordus(var("x"), var("y")), var("a"), var("b")),

    def("x", lit(false)),
    def("y", lit(true)),
    def("a", ja(var("x"), var("y"))),
    def("b", voi(var("x"), var("y")))
)

Alusosa: EstologEvaluator

Väärtustamisele kehtivad järgmised nõuded:

  1. Binaarsed operaatorid jälgivad standardseid loogikareegleid.
  2. Tingimusavaldis on samuti standardne: sõltuvalt tingimuse väärtusest tuleb kasutada ühe või teise haru avaldise väärtust.
  3. Tingimusavaldise muidu-haru võib puududa (st on null). Kui sellise tingimusavaldise tingimus on väär, siis on tingimusavaldis tervikuna tõene.
  4. Programmi väärtuseks on selle keha (mitte-definitsioonist avaldise) väärtus.
  5. Programmi definitsioonid tuleb väärtustada enne programmi avaldise väärtustamist, mis võib sisaldada viiteid defineeritud muutujatele.
  6. Programmi definitsioonid tuleb teostada selles järjekorras nagu nad listis on, kusjuures iga definitsiooni avaldis võib sisaldada viiteid eelnevalt defineeritud muutujatele.
  7. Esialgu pole defineeritud ühtegi muutujat. Defineerimata muutujate kasutamine peab viskama NoSuchElementException-i.
  8. Programmis on lubatud üht muutujat defineerida mitu korda, kusjuures muutuja väärtuseks on tema viimati defineeritud avaldise väärtus.
  9. Võib eeldada, et väärtustatav programm sisaldab ainult ühte EstologProg tippu, mis on kõige välimine, st ükski sisemine avaldis pole omakorda programm, millel on oma sisemised definitsioonid.

Lahendus esitada Moodle'isse.

Põhiosa: EstologAst

Selle avalikustame eksami põhiosa harjutamise ajal.

Lõviosa: EstologCompiler

Selle avalikustame eksami lõviosa harjutamise ajal.

  • 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