Automaty a formálne jazyky

Prednášajúci:Viliam Hromada
Cvičiaci:Viliam Hromada
Kategória predmetu:,
Organizácia
Študijné materiály
Doplnkové materiály

Druhý test z AFJ

Druhý test z AFJ sa uskutoční 23. apríla 2026 v čase prednášky, t.j. od 10:00 v miestnosti AB-300. Test sa píše v troch behoch, každý beh trvá pol hodiny, s 10 minutovými prestávkami na pozbieranie a prestriedanie. Časy behov sú: 10:00 – 10:30, 10:40 – 11:10, 11:20 – 11:50. Rozdelenie do behov a miesta na sedenie sú identické s tými, ako sa sedelo na prvom teste.

Zasadací poriadok pre test nájdete tu.

Náplňou testu bude učivo dovtedy prebrané v rámci prednášok a cvičení. Odporúčam zamerať sa najmä na množiny FIRST/FOLLOW, CYK algoritmus a konštrukciu/činnosť LL(1) parsera.

Prvý test z AFJ

Prvý test z AFJ sa uskutoční 2. apríla 2026 v čase prednášky, t.j. od 10:00 v miestnosti AB-300. Test sa píše v troch behoch, každý beh trvá pol hodiny, s 10 minutovými prestávkami na pozbieranie a prestriedanie. Časy behov sú: 10:00 – 10:30, 10:40 – 11:10, 11:20 – 11:50. Rozdelenie do behov je abecedné, pridelenie konkrétneho miesta prebehlo náhodne pomocou generátora v programe Excel.

Zasadací poriadok pre test nájdete tu.

Náplňou testu bude učivo dovtedy prebrané v rámci prednášok a cvičení.

Organizácia predmetu

Prednáška a cvičenie:
  • Prednáška: Štvrtok 10:00 – 11:40, AB-300.
  • Cvičenie: Piatok 13:00 – 14:40, AB-150.
Konzultácie:

Konzultačné hodiny po dohode mailom.

Podmienky absolvovania

Počas výučbovej časti semestra budú 2 testy, každý za 20 bodov. Dokopy je teda počas semestra možné získať 40 bodov, pričom podmienkou pre účasť na skúške je súhrnný zisk aspoň 20 bodov.

Počas skúškového obdobia bude písomná skúška za 60 bodov.

Dokopy je teda možné získať 100 bodov. Výsledná známka bude určená na základe študijného poriadku STU.

Pri akomkoľvek podvádzaní a nečestnosti bude postupované v zmysle študijného poriadku STU.

Cieľ predmetu

Cieľom predmetu AFJ je, aby študentstvo získalo rozšírené znalosti ohľadom formálnych jazykov, konečných automatov, zásobníkových automatov a ich využitia pri spracovaní formálnych jazykov, napr. pri preklade programovacích jazykov. Rozšíriť ich znalosti z oblasti teoretickej informatiky. Dosiahnuť, aby študentstvo bolo schopné samostatne študovať práce využívajúce základné poznatky z teoretickej informatiky, aby rozumelo lexikálnej, syntaktickej  a sémantickej analýze vykonávanej počas spracovania formálneho jazyka.

Plán semestra

  1. Formálne jazyky, formálne gramatiky, Chomského hierarchia.
  2. Deterministické a nedeterministické konečné automaty.
  3. Regulárne výrazy, Thompsonova konštrukcia.
  4. Bezkontextové gramatiky. Derivačné stromy. Zásobníkové automaty.
  5. Úpravy bezkontextových gramatík, Chomského normálny tvar.
  6. Množina FIRST, množina FOLLOW.
  7. Štruktúra kompilátora, Lexikálna analýza, FLEX.
  8. Syntaktická analýza. CYK algoritmus. Syntaktická analýza zhora-nadol, LL(1) analyzátor.
  9. Syntaktická analýza zdola-nahor, LR(0) analyzátor.
  10. SLR(1), LR(1), LALR(1) analyzátor.
  11. Riešenie konfliktov pri syntaktickej analýze, GLR syntaktický analyzátor.
  12. Sémantická analýza, sémantické podprogramy.

Prednášky

1. prednáška, 19.02.2026. Prezentácia z prednášky: Formálne gramatiky, jazyky.

2. prednáška, 26.02.2026. Prezentácia z prednášky: Deterministické a nedeterministické konečné automaty, determinizácia NKA.

3. prednáška, 05.03.2026. Prezentácia z prednášky: Vzťah konečných automatov a regulárnych gramatík, regulárne výrazy, Thompsonova konštrukcia.

4. prednáška, 12.03.2026. Prezentácia z prednášky: Bezkontextové jazyky, derivačné stromy, jednoznačnosť gramatiky, zásobníkové automaty.

5. prednáška, 19.03.2026. Prezentácia z prednášky: Úpravy bezkontextových gramatík, Chomského normálny tvar.

6. prednáška, 26.03.2026. Odpadla z dôvodu nejakého univerzitného mecheche.

7. prednáška, 02.04.2026. Počas prednášky sa písal prvý test.

8. prednáška, 09.04.2026. Prezentácia z prednášky:Lexikálna analýza. Taktiež bol náhľad do prvého testu.

9. prednáška, 16.04.2026. Prezentácia z prednášky: Syntaktická analýza metódou zhora-nadol, LL(1)-parser.

Cvičenia

1. cvičenie, 20.02.2026. Prezentácia z cvika: Formálne gramatiky, jazyky.
Ďalšie príklady s výsledkami nájdete tu. 

2. cvičenie, 27.02.2026. Prezentácia z cvika: Konečné automaty, determinizácia NKA.
Ďalšie príklady s výsledkami nájdete tu. 

3. cvičenie, 06.03.2026. Prezentácia z cvika: Regulárne výrazy, Thompsonova konštrukcia.
Ďalšie príklady s výsledkami nájdete tu.

4. cvičenie, 13.03.2026. Prezentácia z cvika: Derivačné stromy, jednoznačnosť, zásobníkové automaty.
Ďalšie príklady s výsledkami nájdete tu.

5. cvičenie, 20.03.2026. Prezentácia z cvika: Úpravy bezkontextových gramatík, Chomského normálny tvar.
Ďalšie príklady s výsledkami nájdete tu.

6. cvičenie, 27.03.2026. Prezentácia z cvika: Množiny FIRST a FOLLOW.
Ďalšie príklady s výsledkami nájdete tu.

7. cvičenie, 03.04.2026. Cvičenie odpadlo z dôvodu študijného voľna (Veľký piatok).

8. cvičenie, 10.04.2026. CYK algoritmus.
Ďalšie príklady s výsledkami nájdete tu.

9. cvičenie, 17.04.2026. LL(1)-parser.
Ďalšie príklady s výsledkami nájdete tu.

Literatúra
Web stránka s analýzou gramatík

Na stránke Laboratória programovacích jazykov Katedry počitačových vied Univerzity v Calgary sa nachádza výborný softvérový nástroj pre syntaktickú analýzu gramatík. http://smlweb.cpsc.ucalgary.ca/start.html

Na stránke si viete dať zostrojiť príslušné LL/LR analyzátory pre ľubovoľné gramatiky.

Odporúčam taktiež podstránku http://smlweb.cpsc.ucalgary.ca/example-grammars/ kde sú ukážky rôznych gramatík, aj vzhľadom na ich príslušnosť/nepríslušnosť do LL(1)/LR(0)/SLR(1)/LALR(1)/LR(1)/LL(2)/LR(2) kombinácií…

Iným nástrojom je Grammophone, https://mdaines.github.io/grammophone/#/

Softvérová pomôcka

Pri samoštúdiu a príprave na predmet AFJ odporúčam pracovať s programom JFLAP vo verzii 7.1 ktorý je možné stiahnuť z tejto stránky: https://www.jflap.org/jflaptmp/

Autori programu zároveň zverejnili zdarma doplnkovú knihu k programu, ktorá sa dá zároveň použiť aj ako študijný materiál k predmetu AFJ: https://www2.cs.duke.edu/csed/jflap/jflapbook/