Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЛО.DOC
Скачиваний:
38
Добавлен:
23.03.2016
Размер:
534.53 Кб
Скачать

3. Синтаксис языков программирования.

3.1. Основные характеристики языков.

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

  1. Множество информации или «смыслов», характеризующее план содержания данного языка;

  2. Множество « текстов », т.е. последовательностей физических сигналов, которые характеризуют план выражения данного языка;

  3. Отображение, определенное на множестве текстов и ставящее в соответствие каждому элементу этого множества некоторые элементы множества смыслов, а также обратное отображение.

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

Элементами множества текстов являются тексты или предложения языка, подчиняющиеся строгим правилам построения.

Правила, описывающие входящие в язык тексты как цепочки некоторых символов, называются синтаксисом, а правила, определяющие смысловую сторону входящих в язык цепочек, т.е. приписывающие им определенные смысловые значения, – семантикой данного языка.

Важнейшей задачей является изучение перевода с одного языка на другой как точного алгоритмического процесса. Задачей перевода с языка А на язык В является отображение множества текстов языка А в множество текстов языка В, оставляющее инвариантным смысловой образ любого текста. Перевод может быть семантическим или формальным, Для того, чтобы лучше представить себе эти два способа, введем следующие обозначения:

ТА – множество текстов языка А,

ТВ – множество текстов языка В,

S – множество смыслов языков А и В (для простоты считаем, что смысловые множества языков совпадают),

fА – функция, отображающая ТА в S,

fB – функция, отображающая S в ТВ.

  1. Семантический (смысловой) перевод:

fА: ТАS fB: SТВ

Пусть имеется некоторый текст t ТА, тогда :

  1. fА(t) = sS

  2. fB (s) t’ ТВ .

Итак, переводом текста t ТА является текст t ТВ .

  1. Формальный перевод.

Этот способ заключается в явном задании алгоритма вычисления функции, являющейся суперпозицией функций fА и fB . Обозначим эту суперпозицию через IAB.

IAB = fB (fА (t)).

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

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

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

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

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

  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 .

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