Arvutiteaduse instituut
  1. Esileht
  2. Automaadid, keeled ja translaatorid
EN
Logi sisse

Automaadid, keeled ja translaatorid

  • Ü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
  • Bitbucket
  • 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.

  • 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.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo