4.5. Начини за описание на синтаксиса
Синтаксисът е набор от правила и конвенции, които описват правилните изречения на даден език. За да се напишат синтаксисните правила на езиците за програмиране се използват различни формализирани нотационни системи, т.нар
Ще разгледаме два метаезика, които се използват широко за описание на синтаксиса на езика Pascal:
1) езикът на металингвистичните формули. Една от неговите разновидности е разширената форма на Backus-Naur (RBNF);
2) синтактични диаграми.
4.5.1. Разширена форма на Backus-Naur (RBNF)
В метаезиците, които описват синтаксиса на езика за програмиране, се използват следните понятия: метапроменлива, метаконстанта, синтактична единица и метасимвол.
Метапроменливата е дефинирана от синтаксиса езикова конструкция (с изключение на основните знаци). За запис на метапроменливи се използват поредици от думи на български език и спомагателни думи, между които има долна черта.
Метапроменливите се изписват в ъглови скоби. Примери за писане на метапроменливи:
Метаконстантата е токен на език за програмиране. В една програма метаконстантата съответства на себе си.
В RBNF мета-константите са оградени в кавички. Примери за мета константи:
Синтактичната единица е низ, който описва състава и последователността на елементите на конструкциите на езика за програмиране. Синтактичната единица се състои от метапроменливи, метаконстанти и метазнаци.
Метапроменлива в синтактична диаграма означава, че съответният фрагмент от диаграмата трябва да бъде детайлизиран чрез заместване на синтактичната диаграма с името, съответстващо на дадената метапроменлива.
Метасимволите са специални знаци, използвани в метаезиците за
описания на синтаксиса на езиците за програмиране.
RBNF използва следния наборметазнаци;
(или ::= ) има значението „дефинирано като“, „по дефиниция
Има"; вдясно от знака ::= е написана синтактична единица,
точка; отбелязва края на определението;
вертикална лента; означава избор, алтернатива (смисъл
еквивалентно на думите „или“, „или“);
съдържащата се в тях конструкция нула, един или повече пъти;
структури, т.е. възможността за повторение на
конструкции нула или точно веднъж; например записът ["+"]
означава, че знакът + пред числото може да бъде написан или не;
скоби заедно с вертикалата, използвана вътре в тях
в скоби; например записът (“X”“Y”. “Z”) означава влизането в конструкцията на елемента “X” или “Y” или .
Помислете за най-простите примери за писане в RBNF.
Спомнете си, че идентификаторът е - по дефиниция - поредица от латински букви, цифри и долна черта, започваща с буква или долна черта.
В RBNF това определение може да бъде представено по следния начин:
“a” “b” “c” “d” “e” “f” “g” “h” “i” “j” “k” “l” “m” “n” “o” “p” “q” “r” “s” “t” “u” “v” “w” “x” “y” “z” “A” “B” “C” “D” “E” “F” “G” “H” “I” “J” “K” “L” “M” “N” “O ” “P” “Q” “R” “S” “T” “U” “V” “W” “X” “Y” “Z” .
::= “0” “1” “2” “3” “4” “5” “6” “7” “8” “9” .
метазнаци, означаващи произволно число
повторения на метапроменливата, затворена в тях;
основни символи на езика Pascal (метаконстанти),
свързани с неговата азбука; те са включени в RBNF
в кавички, за да ги разграничите от метасимволите.
Като се има предвид това
ще изглежда така:
4.5.2. Синтактични диаграми
Синтаксична диаграма графичноизобразява структурата на синтактична единица.
Всяка синтактична диаграма има име, което е съответната метапроменлива.
Синтаксичната диаграма е насочена графа с обозначени ръбове. Ръбовете се етикетират с помощта на метапроменливи и метаконстанти. Метасимволите не се използват в синтактичната диаграма. Следователно мета-константите в синтактичните диаграми не се ограждат в кавички.
Метапроменливите са оградени в ъглови скоби.
Метасимволът ::= се използва за отделяне на името на синтактичната диаграма от графиката.
Символите и ::= са единствените използвани метасимволи.
Метапроменлива върху етикетиран ръб на графика означава, че съответният фрагмент от диаграмата трябва да бъде детайлизиран чрез заместване на синтактична диаграма с име, съответстващо на тази метапроменлива.
По-долу разглеждаме представянето под формата на насочени графики на някои от метасимволите на езика RBNF.
1) Избор, алтернатива (метазнак (Или)) съответства на разклоняване в синтактичната диаграма с последващо сливане.
Например една променлива може да приеме стойността A или B (A, B са лексемите на езика Pascal, т.е. мета-константите).
Под формата на синтактична диаграма това ще бъде написано, както е показано на Фигура 4.2.
А
IN
Фигура 4.2 - Синтактична диаграма, представяща избора
В RBNF това ще бъде написано като:
В този случай това е името на синтактичната диаграма. Входът на синтактичната диаграма е отляво, изходът е отдясно. Стрелките показват възможни наследници на всеки от елементите на диаграмата. Основната посока на ръбовете на графиката е отляво надясно и отгоре надолу.
2) Незадължителна част от дизайна (повторение нула иливеднъж ,
тези. метазнаци [ ] ) съответства на диаграмата, която картината представлява
Фигура 4.3 - Синтаксична диаграма, представяща незадължителна част от структурата
Това съответства на записа в RBNF:
3) Възможност за повтаряне на дизайни нула, един или повече пъти
(метасимволи < >) съответства на фрагмент от синтактичната диаграма, която е представена от Фигура 4.4.
Фигура 4.4 - Синтактична диаграма, представяща възможността за повтарящи се структури
нула, един или повече пъти
Това съответства на записа в RBNF:
Синтаксична диаграма на дефиницията на "Идентификатор" (идентификаторът е поредица от букви, цифри и долна черта, започваща с буква или долна черта).
Тази дефиниция, представена като синтактична диаграма, е илюстрирана на Фигура 4.5.
Фигура 4.5 - Синтактична диаграма на дефиницията на "Идентификатор"
Ако сравним езика RBNF и синтактичните диаграми, можем да направим следните заключения.
Езикът RBNF е по-строг и прецизен, по-удобен за представяне на синтаксиса в паметта на машината и по-компактен.
Синтактичните диаграми са по-визуални и по-лесни за разбиране, но по-тромави.