Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория трансляции.docx
Скачиваний:
3
Добавлен:
11.11.2019
Размер:
11.66 Кб
Скачать

Теория языков и формальных грамматик

Способы определения языков.

Существуют 2 основных способа определения языков:

  1. механизм порождения или генератор

  2. механизм распознавания или распознаватель

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

Неформально язык (L) — это множество цепочек конечной длины в некотором алфавите. Механизм порождения позволяют описать языки с помощью системы правил, называемой грамматикой. Цепочки (предложения) языка строятся в соответствии с этими правилами. Достоинствами определенного языка с помощью грамматик состоит в том, что операции производят в ходе синтаксического анализа и перевода можно делать проще, если воспользоваться структурой предписываемой цепочкам с помощью этих грамматик. Механизм распознавания использует алгоритм, который для произвольной входной цепочки остановиться и ответит «да» после конечного числа шагов, если цепочка принадлежит языку и нет, если не принадлежит.

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

Под формализмом понимается строгость определения языка. Недостатком формального изложения является его громоздкость. Для того, чтобы формально определить язык необходимо задать некоторые компоненты этого языка : алфавит (множество допустимых знаков языка).Отдельные знаки могут объединяться в слова (лексемы). Словарный запас языка определяет лексему языка. Слова могут объединяться в предложения (операторы, инструкции).Правильность построения предложения определяется синтаксисом языка. Смысловое содержание предложений определяет семантику языка. В процессе трансляции, как правило, изменяются лексика, синтаксис и алфавит с обязательным сохранением семантики. Язык , который используется для описания другого языка называется метаязыком. Этот язык может совпадать или не совпадать с тем языком,который описывается. Например, для естественного языка в качестве метаязыка используется сам язык.

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

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

БНФ конструкция состоит из нескольких предложений вида:

<определенный символ> → <последовательность 1>|<последовательность 2>|...|<последовательность n>

Например представим с помощью БНФ целое число без знака:

<целое число без знака> → <цифра>|<цифра><целое число без знака>

<цифра> → 0|1|...|9

<целое число со знаком> → <целое число без знака>|<знак><целое число без знака>

<знак> → +|-

<число со знаком фиксированная точка> → <целое число без знака>.<целое число без знака>|<знак><целое число без знака>.<целое число без знака>

11.09.12