Institute of Computer Science
  1. Courses
  2. 2019/20 spring
  3. Automata, Languages and Compilers (LTAT.03.006)
ET
Log in

Automata, Languages and Compilers 2019/20 spring

  • Üldinfo
  • Eksami näidised
  • Kava
    • 1. Soojendus
    • 2. Regulaaravaldised
      • Regex
      • Java API
      • Challenge*
      • Kodutöö
    • 3. Olekumasinad
    • 4. Avaldise struktuur
    • 5. Grammatikad ja lekser
    • 6. Käsitsi parsimine
    • 7. ANTLRiga töötamine
    • 8. Interpretaator
    • 9. Kompilaator
  • Bitbucket
  • Moodle
  • Fleep!

Regex Challenge

Loengus oli kaks ülesannet täisarvliteraalide äratundmiseks. Nende all mõtlesime kõik sõned, millele võis kuitahes palju nulle eelneda. Kirjutame nüüd kaks regulaaravaldist, mis on õpiku ülesanne 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 ainult kasutada klassikaliste regulaaravaldiste vahendeid. Lihtsad lühendid nagu [0-9], +, ? töötavad küll, aga epsilon asemel tuleb kasutada tühjad sulud ().

Automaatide abil

Järgnevate nädalate jooksul peaks selguma, kuidas on regulaaravaldised ja automaadid omavahel seotud. Mõnikord on kasulik mõelda automaadi peale, kui kirjutada regulaaravaldist. Proovige (klassikalisi) regulaaravaldisi kirjutada, 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, et 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 lahendust saab ka esitada.

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

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

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment