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

Automata, Languages and Compilers 2017/18 spring

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

  • 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