Здравейте, Колеги:
На следващата (и последна) лекция по ООП за спец. КН поток 2 и спец. СИ групи 1, 2 и 3 ще разгледаме следните теми:
- Separation of Concerns
- Visitor Pattern
- Използване на Graphviz за визуализация на структури от данни
- Допълване на учебния език за програмиране с променливи
- Допълване на учебния език за програмиране с последователност на операциите
- Допълване на учебния език за програмиране вход и изход
За пълноценно протичане на лекцията е добре да разгледате материали online (по ваш избор) за Visitor Pattern (напр. в Wikipedia).
Разгледайте последните 4 ревизии на учебния интерпретатор:
https://github.com/stranxter/lecture-notes/tree/master/samples/02_oop/2017/interpreter
Разгледайте направените промени в последователните ревизии. Оставям на вас да решите дали да ползвате инструмент за сравнение на ревизиите и съответно - кой.
Опитайте да решите следните задачи. Не е необходимо да стигнете до успешно решение, но за по-добро разбиране на лекцията е добре да опитате да го направите.
- Да се дефинира Visitor, с чиято помощ може да се намери броя на всички оператори IF в програмата
- Да се дефинира Visitor, с чиято помощ може да се намери максималната дълбочина на вложения в програмата (или височината на абстрактното синтактично дърво)
- Да се дефинира Visitor, с който програмата да се отпечатва "прегледно". Например, при вход:
if ( 1 + 2 ) then if 3 then 4 else 5 else 6
Да се отпечата същата програма по следния начин:
if ( 1 + 2 ) then if 3 then 4 else 5 else 6