МАТФ РОКОВИ
23.01.2021.

Писмени испит из предмета Лексичка анализа и примене За смер Р.

ТЕОРИЈСКИ ДЕО чине прва три задатка.

1

Конструисати ПМДКА који препознаје све бинарне бројеве који су дељиви са \(3,\) али не и са \(6.\)

2

За језик \((a|ab)*b\) констркуцијом левих количника одредити ПМДКА. Написати програм у C-у који симулира рад тог аутомата.

3

Описати основне задатке лексичке анализе и приступе реализацији лексичкој анализи програма. Описати грамзиви алгоритам лексичке анализе.

4

Коришћењем алата командне линије (grep, sort, uniq, head) у свим .txt датотекама текућег директоријума наћи 3 најфреквентнија датума, заједно са њиховим бројем појављивања. Датум се обавезно састоји од две цифре које означавају дан, две цифре за месец и четири за годину, раздвојене тачком. Дан може бити било који број од 01 до 31, месец од 01 до 12, док за годину не постоји такво ограничење.

5

Написати python скрипт који представља верзију игрице На Слово, На Слово. Скрипт на почетку игрице тражи од играча да унесе једно слово, а затим и датотоеке која се наводи као први аргумент командне линије насумице бира реч на то слово. Ако не постоји ни једна реч на то слово, од играча се захтева да изабере ново слово.

  1. Затим играч у петљи уноси дозвољене команде све док не погоди коју реч је изабрао скрипт. Дозвољене команде су:
    • start REG_EXP - којом се проверава да ли изабрана реч почиње на начин описан регуларним изразом
    • end REG_EXP - којом се проверава да ли се изабрана реч завршава на начин описан регуларним изразом
    • match REG_EXP - којом се проверава да ли реч припада регуларном језику описаном регуларним изразом
    • result WORD - којом се задаје коначно решење играча.
    На сваку команду, скрипт одговара са true или false
  2. Циљ игре је да играч погоди "замишљену" реч са што мање команди. Сваки негативан одговор скирпта доноси -5 поена, сваки позитиван -1, док погођена реч доноси 100 поена. Игра се завшава када играч достигне -100 поена, или када погоди задату реч, у ком случају га треба обавестити о освојеним поенима.
  3. На почетку игрице се од играча тражи да унесе своје име. Датотека na_slovo_na_slovo.log, садржи 5 најуспешнијих играча и њихове резултате, сортиране опадајуће по броју поена. У случају да тренутни играч оствари један од тренутно 5 најбољих резултата, ажурирати датотеку.
  4. У случају да је датотека наведена као први аргумент командне линије zip архива, из ње прочитати фајл истог имена (без .zip екстензије).

6

Коришћењем система flex направити примитивни spell checker. Програм чита текст са улаза, и на излас исписује исти, евентуално поправљени текст. Програм зна да поправи следећи тип грешака:

  • После знакова интерпункције ,, ., ? и ! обавезна је белина.
  • Програм такође зна и да обрише вишеструке белине.
Ulaz:
Ovo je neki   tekst,koji treba  popraviti.Ovo
je druga recenica,    koja takodje sadrzi greske.
Izlaz: 
Ovo je neki tekst, koji treba popraviti. Ovo
je druga recenica,  koja takodje sadrzi greske.