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

Automaadid, keeled ja translaatorid 2017/18 kevad

  • Üldinfo
  1. Õppekorraldus
  2. Eksam
  3. Reeglid
  4. Töövahendid
  5. Projekt
  • Kava
  1. Soojendus
  2. Regulaaravaldised
  3. Olekumasinad
  4. Lõplikud automaadid
  5. Avaldise struktuur
    1. Struktuur
    2. RegexAnalyzer
    3. Puu harjutused
    4. Kodutöö
    5. Java AST analüüs*
  6. Grammatikad ja lekser
  7. Käsitsi parsimine
  8. ANTLR intro
  9. AST loomine
  10. Interpretaator
  11. Semantiline analüüs
  12. Kompilaator
  • Moodle
  • Bitbucket
  • Fleep!

5. Avaldise struktuur

Selle nädala praktikumis valmistume eksamiks. Tuleval esmaspäeval on võimalik proovida eksami alusosa ülesannete lahendamist. Seal tuleb lisaks automaadile avaldise puu peal harjutus. Seetõttu on oluline puu esitust harjutada.

  • Puu stuktuur. Kõigepealt võite natuke mõelda, miks me esitame avaldist puu kujul ja mis on erinevad puu läbimise võimalused.
  • RegexAnalyzer. Sellele sarnane ülesanne tuleb meil proovieksamil, aga oluline on aru saada ikka struktuuri läbimise põhimõttest, sest proovieksamil on võib-olla hulga asemel vaja luua Map või arvutada midagi hoopis muud. Kõik võib muutuda, aga põhimõtte jääb samaks!
  • Rohkem puu ülesandeid. Iseiseisvalt (või kui praktikumis jääb aega üle) võib ka uurida need harjutusülesanded, et oleks rohkem variante nähtud.
  • Kodutöö tähtaeg on küll ülejärgmine nädal, aga selle esimene osa tasub kindlasti uurida enne proovieksamit, sest see on ka harjutus puu struktuuri peale.

Selle nädala eesmärk on juba väga fundamentaalne. Puu töötlemine rekursiooniga ei ole ainult niisama harjutus, vaid selles peitub kogu Tõde programmeerimise kohta! Me ei taha programmidesse suhtuda holistilise new-age lähenemisega, vaid süstemaatiliselt saame aru üksikosadest ja nende komponeerimisest. Süsteemi disaini jaoks on selline modulaarne mõtlemine väga kriitiline ja seda saab kõige paremini harjutada just puu ülesennete peal.

Võtame näiteks, kui on vaja töödelda järgmise avaldise süntaksipuud: keeruline + megakeeruline. See ajab mind hulluks, kui näen lahendusi, kus hakatakse mõtlema, et mis nüüd saab, kui megakeerulises avaldises on viis jagamistehet? OMG, miks Sa üldse sinna vaatad?? Hoolitse siin liitmise eest! Meil hakkab nüüd üsna läbiv teema olema, et tahame iga tipu juures sellele vastav loogika seal implementeerida ja ainult seal. Kui on lisainfo vaja selleks, siis seda tuleb parameetrina kaasa anda!

Õige parameetritega abifunktsioonide väljamõtlemine on selle nädala kodutöö peamine väljakutse. Ideaalne oleks, kui proovid vähemalt natuke ise seda mõelda, aga kui jääd hätta, siis seda võib praktikumijuhendajate või sõprade käest küsida. Jällegi palun arvestada, et selle vajaliku abifunktsiooni väljamõtlemine on peamine programmidisaini element sellel ülesandel. Kui see on ette antud, siis ülejäänud on üsna mehhaaniline...

  • 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