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

Automaadid, keeled ja translaatorid 2018/19 kevad

  • Üldinfo
  • Kava
    • 1. Soojendus
    • 2. Regulaaravaldised
    • 3. Olekumasinad
    • 4. Lõplikud automaadid
    • 5. Avaldise struktuur
      • Regulaaravaldiste struktuur
      • Pythoni avaldiste struktuur*
      • RegexAnalyzer
      • Puu harjutused
      • Alusosa näited
      • Kodutöö
      • Java AST analüüs*
      • Halba teha ei täi*
    • 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!
  • Backlinks

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. Lisaks võib ka uurida Pythoni süntaksit. See on ka hea sissejuhatus Java AST lisatöö jaoks.
  • 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. Iseseisvalt (või kui praktikumis jääb aega üle) võib ka uurida need harjutusülesanded, et oleks rohkem variante nähtud.
  • Eksami alusosa formaadi kohta on meil veel eraldi leht, kuhu kogume ka näited eelmistest aastatest. Kõik harjutused on muidugi kasulikud, aga kui aega on vähe, siis selle lehe esimene ülesanne on alusosa harjutamiseks hea mõtte.
  • 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