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
    • 6. Grammatikad ja lekser
      • Grammatika mõiste
      • Grammatika automaadid*
      • Lekseri soojendus
      • Kodutöö
      • Magasinmäluga masinad*
    • 7. Käsitsi parsimine
    • 8. ANTLR intro
    • 9. AST loomine
    • 10. Interpretaator
    • 11. Semantiline analüüs
    • 12. Kompilaator
  • Moodle
  • Bitbucket
  • Fleep!
  • Backlinks

Lisatöö: Magasinmäluga masinad

Magasinmäluga masinatega proovime nüüd vanale heale esimese kodutööle, kus oli plus-miinus avaldised, lisada sulud. Selleks on vaja kasutada magasinmälu! Kasutusel on taaskord EU arengutoetusega valminud raamistikud, et sundida teid sammhaaval sisendit läbi töötlema. Raamistiku kood on avalikus repos week6.stack pakettis. Tuleb lahendada kaks ülesannet failides EvalMachine ja AstMachine, sest meie poolt fikseeritud Evaluator raamistik kasutab need klasse, et avaldist väärtustada ja süntakspuu luua.

Väärtustamine

EvalMachine on meie avaldiste väärtustaja. Tuletame meelde, kuidas esimest kodutööd saab lahendada automaadi abil. Klassis Evaluator on juba tükeldaja olemas. Tema meetod compute loob meie EvalMachine klassi isendi ja sellega töötleb tükeldatud avaldist. Kui käivitada AktkPdaTest, siis peaks olema näha, et esimese kodutöö kõik testid (kus ei ole poolikud avaldised) lähevad läbi.

Ei ole palju puudu, et see töötaks ka sulgavaldiste korral, aga tasub natuke mõelda ja siis tegutseda, sest õige lahendus on hästi lihtne (4 rida vaja muuta/lisada). Selle jaoks on testid olemas klassis EvaluatorTest. Enne lahendamist vaata hoolikalt need testid läbi. Näiteks peab väärtustaja suutma ka poolikute (aga muidu korrektsete) avaldiste korral oma hetkeväärtust tagastada.

Süntakspuu loomine

AstMachine loob avaldise süntakspuu. Ehitame siin süntakspuu lihtsalt homogeense Node klassiga. Kui selle lahendamiseks ei tule ideid, siis võib otsida inspiratsiooni JFLAP-ilt, kui teha S → (S) | x-tüüpi grammatika ümber PDA-ks kasutades "Convert CFG to PDA(LR)". Võimalik, et saab ka palju lihtsamalt, aga kuna ma ise juba tean seda konstruktsiooni, siis oli raske teistmoodi mõelda.

Selle ülesanne juures võib eeldada, et avaldis on süntaktiliselt korrektne. Me isegi ei testi seda meetodit vigaste sisenditega, seega ei pea siin veateateid väljastama ja pooliku sisendi puhul võib tagastada ükskõik mida tahad.

  • 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