Катедра за рачунарску технику и информатику Синтаксне нотације Програмирање 1 ЕТФ - Београд Катедра за рачунарску технику и информатику 1/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 2/37 САДРЖАЈ Синтакса програмских језика ПРЕГЛЕД BNF EBNF СИНТАКСНИ ДИЈАГРАМИ ПРИМЕРИ Синтакса формална исправност језичких конструкција Семантика смисао језичких конструкција Сличност са природним језицима ЕТФ - Београд Катедра за рачунарску технику и информатику 3/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 4/37
Синтакса програмских језика BNF Метајезик језик који служи за опис неког другог језика Објектни језик језик који се описује Треба да буду различити Скраћеница за Бакус-Норову Форму (Backus-Naur Form) Формални, аналитички начин за представљање синтаксе Прецизан иједноставан механизам за опис Пре BNF, за опис језика се користиле неформалне методе ЕТФ - Београд Катедра за рачунарску технику и информатику 5/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 6/37 BNF -Настанак Џон Бакус Џон Бакус је користио нотацију која је садржала скоро све елементе BNF за презентацију језика Algol 58 Питер Нор је закључио да се Algol на овај начин представљен може интерпретирати на више начина Креирао је прецизнији опис BNF за Algol 60 Тако формирана BNF први пут објављена у Algol 60 Report ЕТФ - Београд Катедра за рачунарску технику и информатику 7/37 Креирао је FORTRAN ( FORMula TRANslator ), први језик високог нивоа, 1954 Велики утицај на функционално програмирање 1970-их Добио 1977 Тјурингову награду за BNF и FORTRAN ЕТФ - Београд Катедра за рачунарску технику и информатику 8/37
Питер Нор Основни елементи Дански астроном Пионир уразвоју софтверског инжењерства исофтверске архитектуре <> - спецификација нетерминалног симбола - ексклузивна дисјункција ::= - додела вредности Терминални симболи Уланчавање Рекурзија ЕТФ - Београд Катедра за рачунарску технику и информатику 9/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 10/37 Метасимбол <> Метасимбол Служи за именовање објеката Спецификација сложених објеката Пример: <ime>, <instrukcija> Служи за селектовање Метасимбол ексклузивне дисјункције Пример: <x> <y> значи само или x или y ЕТФ - Београд Катедра за рачунарску технику и информатику 11/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 12/37
Метасимбол ::= Терминални симболи Служи за дефинисање новог нетерминалног симбола Метасимбол доделе вредности Пример: <z> ::= <x> <y> значи објекат z може бити или објекат x или објекат y Знаци који представљају сами себе Не могу се рашчланити (атомски) Пример: <cifra> ::=0 1 2 3 4 5 6 7 8 9 <slovo>::=a Y Z <znak> ::=<cifra> <slovo> ЕТФ - Београд Катедра за рачунарску технику и информатику 13/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 14/37 Уланчавање Рекурзија Оператор надовезивања Број елемената није ограничен Пример: <dvocifren broj> ::=<cifra><cifra> <niz znakova> ::= <znak> <niz znakova><znak> Низ знакова је: или један знак или претходно дефинисани низ којем је дописан један знак Еквиваленто са: <niz znakova> ::= <znak> <znak><niz znakova> ЕТФ - Београд Катедра за рачунарску технику и информатику 15/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 16/37
Пример Низ знакова - Пример Кардинални број алтернативне дефиниције: <kardinalni broj> ::= <cifra> <kardinalni broj><cifra> <kardinalni broj> ::= <cifra> <cifra><kardinalni broj> Природни број: <prirodni broj>::=<nenulta cifra> <prirodni broj><cifra> <nenulta cifra> ::= 1 2 3 4 5 6 7 8 9 Неисправно <prirodni broj> ::= <nenulta cifra> <cifra><prirodni broj> <prirodni broj> ::= <nenulta cifra> <prirodni broj><cifra> <cifra><prirodni broj> ЕТФ - Београд Катедра за рачунарску технику и информатику 17/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 18/37 Пример Празан низ иразмак Идентификатор: <identifikator> ::= <slovo> <identifikator><cifra> <identifikator><slovo> <identifikator> ::= <slovo> <identifikator><znak> Листа идентификатора: <lista identifikatora> ::= <identifikator> <lista identifikatora>, <identifikator> <lista identifikatora> ::= <identifikator> <identifikator>, <lista identifikatora> сепаратор <prazno> ::= <razmak> ::= <razmak> ::= <razmak> ::= ε Разликује се ЕТФ - Београд Катедра за рачунарску технику и информатику 19/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 20/37
Аритметички израз Проширење BNF Дедуктивнадефиниција (обухватаприоритетиасоцијативност): <izraz> ::= <izraz> + <term> <izraz> - <term> <term> -<term> <term> ::= <term> * <faktor> <term> / <faktor> <faktor> <faktor> ::= <element> ^ <faktor> <element> <element> ::= ( <izraz> ) <promenljiva> <broj> <poziv_funkcije> ЕТФ - Београд Катедра за рачунарску технику и информатику 21/37 Ограничен број понављања елемента Пример: j подразумева се {x} i подразумева се 1 {A B} 2 A B AA AB BA BB 1 {A} 3 < prazno > A AA AAA 0 ЕТФ - Београд Катедра за рачунарску технику и информатику 22/37 Пример - Бројеви ЕBNF <digit> ::= 0 1 2 3 4 5 6 7 8 9 <cardinal> ::= <digit> <cardinal><digit> Неозначени Означени <integer> = <cardinal> +<cardinal> -<cardinal> Скраћеница за проширену Бакус-Норову Форму (Extended Backus-Naur Form) Потреба за увођењем проширења Поједностављивање Прилагођење ЕТФ - Београд Катедра за рачунарску технику и информатику 23/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 24/37
Основни елементи Метасимболи EBNF и њихово значење = додела вредности - ексклузивна дисјункција. крај синтаксног правила Нетерминални симболи Терминални симболи {} - понављање [] опционо појављивање () - груписање =. objekt X {simbol} [simbol] (A B) Једнако по дефиницији Искључиво или Обавезна ознака краја сваког синтаксног правила Нетерминални симбол objekt Терминални симбол X Симбол се појављује 0 или више пута Симбол се појављује 0 или 1 пут Груписање ЕТФ - Београд Катедра за рачунарску технику и информатику 25/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 26/37 Пример - Бројеви Аритметички израз digit = 0 1 2 3 4 5 6 7 8 9. izraz = [ - ] term izraz ( + - ) term. cardinal =digit{digit}. integer = [+ -]digit{digit}. Неозначени Означени term = term ( * / ) faktor faktor. faktor = faktor ^ element element. element= ( izraz ) promenljiva broj poziv_funkcije. ЕТФ - Београд Катедра за рачунарску технику и информатику 27/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 28/37
Синтаксни дијаграми Синтаксни дијаграми Терминални симбол while Веза Метајезичка променљива симбол A # Уланчавање објеката dva_imena Ime1 Ime2 Ексклузивна дисјункција decimalna_cifra 0 1 9 Синтаксни дијаграм усмерени граф ЕТФ - Београд Катедра за рачунарску технику и информатику 29/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 30/37 Синтаксни дијаграми Пример - Бројеви Рекурзија niz_znakova znak neoznaceni_broj cifra Неозначени Коначно понављање broj_ponavljanja slovo identifikator slovo 7 broj ЕТФ - Београд Катедра за рачунарску технику и информатику 31/37 + cifra Означени oznaceni_broj - ЕТФ - Београд Катедра за рачунарску технику и информатику 32/37
Аритметички израз Аритметички израз izraz izraz + - term faktor elemеnt ^ faktor term term term faktor * / faktor element ( izraz ) promenljiva broj pozivfunkcije ЕТФ - Београд Катедра за рачунарску технику и информатику 33/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 34/37 Задатак 1 Задатак 2 Дат је низ синтаксних правила уbnf који дефинише секвенце бинарног сигнала на улазу неке секвенцијалне мреже. Које од понуђених секвенци одговарају дефиницији <A>? Које од понуђених синтаксних правила је еквивалентно датом синтаксном дијаграму? S A B C <A> ::= 1<B> 0<C> <B> ::= 0<D> 1<C> <C> ::= 0<B> 1<D> <D> ::= 1 0<C> (a) 110110001 (b) 10010001 c) 00001001 D (a) s = "AB"{["C"]"DAB"}"C". (у EBNF нотацији) (b) <s> ::=ABC ABD <s> ABCD<s> (у BNF нотацији) c) <s> ::= ABC <s>abd ABC<s> (у BNF нотацији) ЕТФ - Београд Катедра за рачунарску технику и информатику 35/37 ЕТФ - Београд Катедра за рачунарску технику и информатику 36/37
Задатак 3 Потребно је написати исправну синтаксну дефиницију убнф нотацији произвољног низа цифара целог броја усистемуса основом 4, таквогдасе ислеванадесно исдесна на лево чита једнако. Број мора да садржи бар једну цифру ине сме почињати (и завршавати) нулом. Ако је дато: <NC>::=1 2 3 <C>::=0 <NC> <P> <P>::= тада је исправна следећа допуна синтаксне дефиниције претходно описаногброја <S>: (a) <S>::=<NC> 1<A>1 2<A>2 3<A>3 <A>::=<C> 0<A>0 1<A>1 2<A>2 3<A>3 b)<s>::=<nc> <NC><A><NC> <A>::=<C> <C><A><C> c) <S>::=<NC> 1<A>1 2<A>2 3<A>3 <A>::=<C> <S> ЕТФ - Београд Катедра за рачунарску технику и информатику 37/37