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

Kontekstivabad grammatikad ja automaadid

Paremlineaarsed grammatikad ja lõplik automaat

  • Veendume JFLAP abil, et iga regulaarne keel on kontekstivaba.
    • Teeme JFLAP-is lahti järgmine automaat: cfg.jff.
    • Valime menüüst "Convert" -> "Convert to Grammar".
  • Konverteerime ka saadud grammatika tagasi automaadiks. Sellega loodetavasti selgub, kuidas igast paremlineaarsest grammatikast võib luua samaväärse automaadi. Seega, iga paremlineaarne grammatika spetsifitseerib regulaarse keele.

Kontekstivaba grammatika ja mägasinmäluga automaat

Igale kontekstivabale keelele vastab magasinmäluga automaat (PDA). Nende automaatide loomise kohta on võimalik informatsiooni leida siit. Alustame järgmise lihtsa grammatikaga (simple.jff):

S → aSb
S → ε

Loome koos sellele vastav automaat:

  • Kõigepealt mõtleme, kuidas keele ära tundmine võiks toimida. Idee on lihtne: kasutame magasini, et loendada 'a'-sid ehk iga 'a' korral toppime midagi magasini ja siis hakkame iga 'b' korral elemente magasinist välja võtma.
  • Joonista seisund, mis esitab seda, et hakkame 'a'-sid loendama. Tal on seega endale üleminek.
  • Kui näeme 'b'-d, siis lähme järgmise seisundisse, kus hakkame elemente magasinist välja võtma.

Seejärel proovige ise luua järgmise grammatikale vastav automaat.

S → aSa
S → bSb
S → ε

Tegelikult saab süstemaatiliselt teisendada iga grammatika automaadiks. Selleks on kaks põhilist konstruktsiooni, üks mis vastab LL parseritele ja teine vastab LR parseritele. Võite proovida "Convert CFG to PDA(LL)", aga see on rohkem tuleviku teema.

  • 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