Arvutiteaduse instituut
  1. Esileht
  2. Automaadid, keeled ja translaatorid
EN
Logi sisse
Tähelepanu! Tehnilise tõrke tõttu on hetkel kättesaadavad vaid 2020.a. ja hilisemad üles laetud failid ja kevadsemestri kursused. Rikke kõrvaldamisega tegeletakse.

Automaadid, keeled ja translaatorid

  • Üldinfo
  • Ajakava
  • Eksami näidised
  • Teemad
    • 1. Soojendus
    • 2. Regulaaravaldised
      • Regex
      • Java API
      • Challenge*
      • Kodutöö
    • 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

Regex Challenge

Loengus oli kaks ülesannet täisarvliteraalide äratundmiseks. Nende all mõtlesime kõiki sõnesid, millele võis eelneda kuitahes palju nulle. Nüüd kirjutame kaks regulaaravaldist, mis on õpiku ülesande 1.1 b) ja c) osa.

  1. Arvliteraalid, mille väärtus ei ole 42.
  2. Arvliteraalid, mille väärtus on rangelt suurem kui 42.

NB! Selles ülesandes saab kasutada ainult klassikaliste regulaaravaldiste vahendeid. Lihtsad lühendid nagu [0-9], +, ? töötavad küll, aga epsiloni asemel tuleb kasutada tühjasid sulge ().

Automaatide abil

Järgnevate nädalate jooksul peaks selguma, kuidas on regulaaravaldised ja automaadid omavahel seotud. Mõnikord regulaaravaldist kirjutades on kasulik automaadi peale mõelda. Proovige kirjutada (klassikalised) regulaaravaldised, mis sobituvad järgmiste sõnade hulkadega:

  1. Tähestiku {0,1} sõnad, milles esinevad täpselt üks '1' ja vähemalt üks '0'.
  2. Tähestiku {a,b} sõnad, mis sisaldavad paarisarv a-sid ja paarisarv b-sid.
  3. Tähestiku {0,1} sõnad, mis ei sisalda alamsõnena "101".
  4. Kolmega jaguvad binaararvud.

Teisel nädalal võime lihtsalt proovida, aga natuke sisulisemalt saab neid lahendada mõne nädala pärast, kus joonistame automaadi ja teisendame selle regulaaravaldiseks (slaidid).

Testimine ja esitamine

Neid võib nüüd testida kahel viisil:

  • Interaktiivne programm RegexChallengeGui on olemas testide kataloogis.
  • Vastused tuleks kirjutada klassi RegexChallenge ning käivitada unit teste klassist RegexChallengeTest. Sellisel kujul saab lahenduse ka Moodle'isse esitada.

Proovige seda natuke lahendada intuitiivselt, aga proovige ka automaadi põhjal neid luua. Võite ka katsetada, kuidas JFlap süstemaatiliselt automaate regulaaravaldiseks teisendab.

Lahenduse võiks Moodle'isse üles laadida! Parimate lahenduste esitajate vahel loosime välja Varmo Vene allkirjastatud käsitsi kirjutatud lekseri!

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