104.34K
Category: informaticsinformatics

Метаязык

1.

132 группа, Червова С.
МЕТАЯЗЫКИ

2.

МЕТАЯЗЫК
Это язык для описания других
языков.
Он используется для строгого
и точного описания
синтаксиса языка
программирования

3.

МЕТАЯЗЫКАМИ ЯВЛЯЮТСЯ:
Бэкуса - Наура (язык БНФ)
Синтаксические диаграммы Вирта
Метаязык Хомского
Расширенный язык Хомского-
Шутценберже
Расширенные Бэкуса-Наура
формы

4.

БЭКУСА-НАУРА ФОРМЫ (БНФ)
Впервые использовался для описания
синтаксиса реального языка
программирования Алгол 60.
Пример:
<буква> :: =
А|В|С|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
<идентификатор> ::= <буква> |
<идентификатор><буква> |
<идентификатор><цифра>

5.

Были использованы следующие
обозначения:
символ "::=" отделяет левую часть правила
от правой;
нетерминалы обозначаются произвольной
символьной строкой, заключенной в
угловые скобки "<" и ">";
терминалы - это символы, используемые в
описываемом языке;
каждое правило определяет порождение
нескольких альтернативных цепочек,
отделяемых друг от друга символом
вертикальной черты "|".

6.

МЕТАЯЗЫК ХОМСКОГО
Пример:
A1→A
A1→B
A1→C
A1→Z
A2→0
A2→1
A2→2…
A2→9
A3→A1
A3→A3A1
A3→A3A2

7.

система обозначений:
символ “→” отделяет левую часть правила
от правой (читается как "порождает" и "это
есть");
нетерминалы обозначаются буквой А с
индексом, указывающим на его номер;
терминалы - это символы используемые в
описываемом языке;
каждое правило определяет порождение
одной новой цепочки, причем один и тот же
нетерминал может встречаться в
нескольких правилах слева.

8.

МЕТАЯЗЫК ХОМСКОГО-ЩУТЦЕНБЕРЖЕ
Пример:
A1=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
A2=0+1+2+4+5+6+7+8+9
A3=A1+A3A1+A3A2

9.

Обозначения: символ “=” отделяет левую часть
правила от правой (вместо символа “→”);
нетерминалы обозначаются буквой А с
индексом, указывающим на его номер;
терминалы - это символы используемые в
описываемом языке;
каждое правило определяет порождение
нескольких альтернативных цепочек,
отделяемых друг от друга символом “+”, что
позволяет, при желании, использовать в левой
части только разные нетерминалы.

10.

РАСШИРЕННЫЕ БЭКУСА-НАУРА ФОРМЫ
(РБНФ)
Пример: $ буква =
"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".
$ идентификатор = буква {буква | цифра}.

11.

Обозначения:
Квадратные скобки "[" и "]" означают, что
заключенная в них синтаксическая конструкция
может отсутствовать;
фигурные скобки "{" и "}" означают ее повторение
(возможно, 0 раз);
круглые скобки "(" и ")" используются для
ограничения альтернативных конструкций;
сочетание фигурных скобок и косой черты "{/" и "/}"
используется для обозначения повторения один и
более раз. Нетерминальные символы изображаются
словами, выражающими их интуитивный смысл и
написанными на русском языке.

12.

ДИАГРАММЫ ВИРТА
Наряду с текстовыми способами
описания синтаксиса языков широко
используются и графические метаязыки,
среди которых наиболее широкую
известность получил язык диаграмм
Вирта, впервые примененный для
описания языка Паскаль
English     Русский Rules