программирования

Описание любого языка (и не только языка программирования) всегда начинается с определения его синтаксиса и семантики.

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

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

Семантика - смысл, вкладываемый в каждую конструкцию или последовательность конструкций языка.

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

В дальнейшем, для описания семантики языка мы будем пользоваться неформальными методами, а для описания синтаксиса – одним из вариантов нормальных форм Бэкуса-Наура (БНФ). БНФ служат для определения синтаксиса алгоритмических языков и состоят из некоторого количества правил продукций, с помощью которых синтаксические конструкции определяются через другие синтаксические конструкции и лексемы, где под лексемами понимаются минимальные неделимые смысловые единицы языка.

Правила продукций БНФ:

1) Имя определяемой синтаксической конструкции размещается слева, а ее определение - справа. Имя конструкции и ее определение разделены символом '::='. Друг от друга синтаксические конструкции и лексемы отделяются пробелами.

2) Синтаксические конструкции никак не выделяются, лексемы выделяются с помощью кавычек (либо, если это возможно, жирным шрифтом).

3) Для обозначения возможного выбора из нескольких вариантов используется знак ¦.

4) Для обозначения повторов используются знаки a{}b.

Если a отсутствует, то считается, что a=0

Если b отсутствует, то считается, что b=∞

5) Для обозначения факультативных возможностей используются знаки [].

6) Для группирования используются знаки ().

7) Точка показывает конец определения.

Пример 1:

В качестве примера рассмотрим определение рационального десятичного числа с использованием БНФ.

Ниже показаны несколько рациональных десятичных чисел с плавающей точкой:

1 2.04331 -12 +32.00 -2

Объединим все варианты в одной форме:

РДЧ ::= Целое_число ["." Натуральное_число].

Целое _число::=["+"|"-"] Натуральное_число.

Натуральное_число::= 1{Цифра}.

Цифра::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9".

Таким образом, кроме определения рационального десятичного числа с плавающей десятичной точкой мы определили еще 3 синтаксических конструкций, благодаря которым сократили размер определения, и которыми можно будет воспользоваться в дальнейшем для определения, например, РДЧ с фиксированной точкой.

<- Вернуться к началу темы| Следующая тема ->

Последнее изменение: Вторник 1 Март 2011, 15:13