Основные символы языка - это 26 букв латинского алфавита и десять цифр.
Пример 2. Язык арифметических выражений (без констант и с фиксированным множеством переменных a, b, c) в метаязыке Бэкуса описывается следующим образом:
<арифметическое выражение> :: = <терм> ï <арифметическое выражение>+<терм>ï <арифметическое выражение> - <терм>
<терм>::= <множитель> ï<терм>* <множитель> ï<терм> / <множитель>
<множитель> ::= <арифметическое выражение> ï<переменная>
<переменная> :: = a ïb ïc
Уже из этих примеров ясно, что нормальные формы Бекуса нетрудно преобразовать в выражения КС-грамматики. При этом основные символы соответствуют терминальным символам грамматики, металингвистические переменные - нетерминальным символам, связка ::= соответствует знаку ®, а без связки ï можно обойтись, если формулу Х::=Y1ïY2ï... ïYn заменить системой формул Х::=Y1, ... , Х::=Yn. Если указанные преобразования провести для последнего примера заменив <арифметическое выражение> на символ I, терм на Т, <множитель> - на М, <переменную> - на L, то получим следующую КС-грамматику:
I ® T;
I ® I - T;
I ® M;
I ® T * M;
I ® T / M;
M ® I;
M ® L;
L ®a; L ®b; L ®c.
Указанное соответствие является взаимно однозначным и всякая КС - грамматика преобразуется в нормальную форму Бэкуса. Такое простое соответствие между двумя видами описаний одного и того же класса языков является свидетельством близости теоретических и практических целей исследования порождающих грамматик и их использования для формализации алгоритмических языков программирования.
Дата добавления: 2015-10-05; просмотров: 732;