
Задание и методические указания к выполнению лабораторной работы № 6
по дисциплине «Функциональное программирование»
Тема
Компиляция текста на ограниченном естественном языке во внутримашинное представление
Цель работы
Получение практических навыков написания программ, осуществляющих компиляцию и использование для обработки информации машинных словарей на жестких дисках. Получение практических навыков в подготовке и отладке РЕФАЛ-программ в среде Eclipse Рефал Плюс.
Термины и определения
Формальная грамматика (в теории формальных языков) — способ описания формального языка, то есть выделения некоторого подмножества из множества всех слов некоторого конечного алфавита. Различают порождающие и распознающие грамматики; первые задают правила, с помощью которых можно построить любое слово языка, а вторые позволяют по данному слову определить, входит оно в язык или нет.
Конечный автомат — абстрактный автомат, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.
Контекстно-свободная (КС, безконтекстная) грамматика — частный случай формальной грамматики, у которой левые части всех продукций — одиночные нетерминальные символы. Смысл термина «контекстно-свободная» означает возможность применить правило к нетерминалу, в вне зависимости от этого нетерминала. Язык, который задается КС-грамматикой, называется контекстно-свободным языком или КС-языком.
Компиляция (в широком смысле слова) — преобразование текста на одном языке, в нашем случае на ограниченном естественном языке, в текст на другом языке (внутримашинное представление). В данной лабораторной работе компиляция предполагает выполнение двух этапов: 1) лексического анализа текста и 2) синтаксического анализа текста.
S-грамматика (простая грамматика, раздельная грамматика) — КС-грамматика для которой выполняются два условия: 1)Правая часть каждого правила начинается терминалом; 2) Если два правила имеют совпадающие левые части, то правые части этих правил должны начинаться различными терминальными символами.
Автомат
с магазинной памятью (в теории автоматов) —
это конечный
автомат, который
использует стек для хранения состояний.
В отличие
от конечных автоматов, автомат с
магазинной памятью является набором:
где
K
— конечное множество состояний автомата;
—
единственно допустимое начальное
состояние автомата;
—
множество конечных состояний, причём
допустимо
,
и F=K;
Σ
— допустимый входной алфавит, из которого
формируются строки, считываемые
автоматом; S
— алфавит памяти (магазина);
—
нулевой символ памяти. Память работает
как стек,
то есть для чтения доступен последний
записанный в неё элемент. Таким образом,
функция перехода является отображением
.
По комбинации текущего состояния,
входного символа и символа на вершине
магазина автомат выбирает следующее
состояние и, возможно, символ для записи
в магазин. Автомат с магазинной памятью
может распознать любой контекстно-свободный
язык.
Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ. «Last In — First Out», «последним пришёл — первым ушел»). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю. Добавление элемента, называемое также проталкиванием, возможно только в вершину стека (добавленный элемент становится первым сверху). Удаление элемента, называемое также выталкивание, возможно также только из вершины стека, при этом, второй сверху элемент становится верхним.
Ограниченный естественный язык – искусственно созданная знаковая система для использования в тех областях, где применение естественного языка менее эффективно или невозможно. В качестве ограниченного естественного языка используется язык, предложенный профессором А.В. Колесниковым и использующий концептуальный базис «ресурс-свойство-действие-отношение».
Внутримашинное представление – искусственно созданная знаковая система, в которой концепты (лексемы) заменены их кодовом обозначением (или просто – кодами). В качестве кодов используются предложенные профессором А.В. Колесниковым RXК - коды, где R вместе с натуральным числом обозначает отношение, ХК вместе с натуральным числом обозначает понятие, его принадлежность функциональной группе лексем естественного языка.
Синтаксический анализ (парсинг) - это процесс сопоставления линейной последовательности лексем языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево
Синтаксический анализатор (парсер) — программа, выполняющая синтаксический анализ.
Лексический анализ - процесс аналитического разбора предложений на некотором языке (в нашем случае – ограниченном естественном языке), с целью проверки использования в тексте только «разрешенных» к использованию слов – лексем и замены их на специальные кодовые обозначения. Для лексического анализа используются специальным образом организованные машинные словари.