пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Способы описания синтаксиса языка

Существуют различные способы записи синтаксических правил, что в основном определяется условными обозначениям и ограничениями на структуру правил, принятыми в используемых метаязыках.

Метаязык Хомского вышел из недр математической логики. Он имеет следующую систему обозначений:

символ “->” отделяет левую часть правила от правой (читается как "порождает" и "это есть");

нетерминалы обозначаются буквой А с индексом, указывающим на его номер;

терминалы - это символы используемые в описываемом языке;

каждое правило определяет порождение одной новой цепочки, причем один и тот же нетерминал может встречаться в нескольких правилах слева.

Описание идентификатора на метаязыке Хомского будет выглядеть следующим образом(некоторые примеры):


18. A1 -> R


40. A1 -> n


62. A2 -> 9


19. A1 -> S


41. A1 -> o


63. A3 -> A1


20. A1 -> T


42. A1 -> p


64. A3 -> A3A1


21. A1 -> U


43. A1 -> q


65. A3 -> A3A2

 

 

Более компактное описание возможно с применением метаязыка Хомского-Щутценберже, использующего следующие обозначения метасимволов:

символ “=” отделяет левую часть правила от правой (вместо символа “->”);

нетерминалы обозначаются буквой А с индексом, указывающим на его номер;

терминалы - это символы используемые в описываемом языке;

каждое правило определяет порождение нескольких альтернативных цепочек, отделяемых друг от друга символом “+”, что позволяет, при желании, использовать в левой части только разные нетерминалы.

Введение возможности альтернативного перечисления позволило сократить описание языков. Описание идентификатора будет выглядеть следующим образом:

A^ 1=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


Нотации Бэкуса-Наура формы (БНФ)

Впервые использовался для описания синтаксиса реального языка программирования Алгол 60. Наряду с новыми обозначениями метасимволов, в нем использовались содержательные обозначения нетерминалов. Это сделало описание языка нагляднее и позволило в дальнейшем широко использовать данную нотацию для описания реальных языков программирования. Были использованы следующие обозначения:

-символ "::=" отделяет левую часть правила от правой;

-нетерминалы обозначаются произвольной символьной строкой, заключенной в угловые скобки "<" и ">";

-терминалы - это символы, используемые в описываемом языке;

-каждое правило определяет порождение нескольких альтернативных цепочек, отделяемых друг от друга символом вертикальной черты "


17.01.2014; 12:52
хиты: 105
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь