double arrow

Нормальные формы Бекуса


FОпределение: Язык, описывающий свойства другого языка, называют метаязыком.

Так, метаязыком, описывающим русский язык, может быть тот же самый русский язык или другой разговорный язык, например английский. Описание языков программирования обычными средствами оправдано только в том случае, если оно используется лишь для изучения этих языков программистами-пользователями. В настоящее время используется ряд языков для описания синтаксиса алгоритмических языков для дальнейшей обработки и изучения математическими средствами. Это так называемые метасинтаксические языки. Разрабатываются также специальные языки для описания семантики – метасемантические языки.

Наиболее распространенным метасинтаксическим языком являются нормальные формы Бекуса (или металингвистические формулы). Основное назначение форм Бекуса заключается в представлении в сжатом и компактном виде строго формальных и однозначных правил написания основных конструкций описываемого языка программирования.

Классы объектов, которые используются в формах Бекуса:

1. Цепочка основных символов языка.

2. Имена конструкций описываемого языка, или так называемые металингвистические переменные. Значение металингвистических переменных – это цепочки основных символов описываемого языка.




3. Металингвистическая связка :: = . Она соединяет левую и правую части формулы.

Каждый вариант представляет собой цепочку, состоящую из металингвистических переменных и основных символов. Для того, чтобы построить определяемую формулой конструкцию, нужно выбрать некоторый вариант построения из правой части формулы и, используя соответствующие формулы, подставить вместо каждой металингвистической переменной некоторые цепочки основных символов. Варианты правой части формулы разделяются металингвистической связкой |, имеющей значение «или». Металингвистическая переменная обозначается словами, заключенными в угловые скобки < >, которые поясняют смысл описываемой конструкции.

Числа определяются в языке при помощи следующих правил:

1) <число>:: = <число без знака> | + <число без знака>| – <число без знака>

2) <число без знака> :: = <десятичное число> | <порядок> | <десятичное число> <порядок>

3) <десятичное число> :: = <целое без знака> | <правильная дробь> | <целое без знака> <правильная дробь>

4) <порядок> :: = e <целое>

5) <правильная дробь> ::= .<целое без знака>

6) <целое> ::= <целое без знака> | + <целое без знака> | – <целое без знака>

7) <целое без знака> :: = <цифра> | <целое без знака> <цифра>

8) <цифра> :: = 0|1|2|3|4|5|6|7|8|9

Пример 7: Вывод по формулам числа 1.5e-2

<число>, <число без знака>, <десятичное число> <порядок>, <целое без знака> <правильная дробь> <порядок>, <цифра> <правильная дробь> <порядок>, 1 <правильная дробь> <порядок >, 1.<целое без знака> <порядок>, 1.<цифра> <порядок>, 1.5 <порядок>, 1.5e<целое>, 1.5 e- <целое без знака>, 1.5e- <цифра> , 1.5 e-2 .

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







Сейчас читают про: