Содержание2
<br>Назначение разработки 3
<br>Структура данных и методы их обработки 3
<br>Метод рекурсивного спуска 3
<br>Требования к программе 6
<br>Требования к функциональным характеристикам 6
<br>Исходные данные 6
<br>Требования к составу и параметрам технических средств 6
<br>Условия эксплуатации 7
<br>Программная реализация 7
<br>Результаты 8
<br>Список литературы 9
<br>Листинг программы 10
<br>Тестирование 14
Список литературыВведениеНазначение разработки
<br>
<br>Программа разрабатывается в рамках курсовой работы по курсу «Лингвистическое обеспечение САПР». Предназначается для закрепления знаний о работе синтаксических анализаторов языков САПР.
<br>Структура данных и методы их обработки
<br>
<br> В качестве метода обработки следует использовать один из методов разбора, описанный в литературе.
<br>Метод рекурсивного спуска
<br>
<br>Большинство известных методов анализа принадлежат одному из двух классов, один из которых объединяет нисходящие (top-down) алгоритмы, а другой - восходящие (bottom-up) алгоритмы. Происхождение этих терминов связано с тем, каким образом строятся узлы синтаксического дерева: либо от корня (аксиомы грамматики) к листьям (терминальным символам), либо от листьев к корню.
<br>Метод рекурсивного спуска - это один из методов определения принадлежности входной строки к некоторому формальному языку, описанному LL(k) контекстно-свободной грамматикой.
<br>Популярность нисходящих анализаторов связана с тем, что эффективный нисходящий анализатор достаточно легко может быть построен вручную, например, методом рекурсивного спуска. Кроме того, LL-грамматики легко обобщаются: грамматики, не являющиеся LL-грамматиками, обычно могут быть проанализированы методом рекурсивного спуска с возвратами.
<br>Идея метода состоит в том, что для каждого нетерминального символа K строится функция, которая для любого входного слова x делает 2 вещи:
<br>• Находит наибольшее начало z слова x, способное быть началом выводимого из K слова
<br>• Определяет, является ли начало z выводимым из K
<br>Прежде чем описывать этот метод более подробно, договоримся о том, как процедуры получают сведения о входном слове и как сообщают о результатах своей работы. Мы предполагаем, что буквы входного слова поступают к ним по одной, т.е. имеется граница, отделяющая > часть от >. Будем считать, что есть функция (без параметров)Литература<br>
<br>1. Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии, инструменты. – М.: Вильямс, 2003
<br>2. Вояковская Н.Н., Москаль А.Е. Разработка компиляторов. Электронный ресурс: http://www.intuit.ru/department/sa/compilersdev/6/
<br>3. Грис Д. Проектирование компиляторов для цифровых вычислительных машин. - М.: Мир, 1975
<br>4. Шень А. Программирование: теоремы и задачи. 2-е изд., - М.: МЦНМО, 2004
<br>5. Энциклопедия Википедия. Электронный ресурс: ru.wikipedia.org
|