Назначение разработки
Программа разрабатывается в рамках курсовой работы по курсу «Лингвистическое обеспечение САПР». Предназначается для закрепления знаний о работе синтаксических анализаторов языков САПР.
Структура данных и методы их обработки
В качестве метода обработки следует использовать один из методов разбора, описанный в литературе.
Метод рекурсивного спуска
Большинство известных методов анализа принадлежат одному из двух классов, один из которых объединяет нисходящие (top-down) алгоритмы, а другой — восходящие (bottom-up) алгоритмы. Происхождение этих терминов связано с тем, каким образом строятся узлы синтаксического дерева: либо от корня (аксиомы грамматики) к листьям (терминальным символам), либо от листьев к корню.
Метод рекурсивного спуска — это один из методов определения принадлежности входной строки к некоторому формальному языку, описанному LL (k) контекстно-свободной грамматикой.
Популярность нисходящих анализаторов связана с тем, что эффективный нисходящий анализатор достаточно легко может быть построен вручную, например, методом рекурсивного спуска. Кроме того, LL-грамматики легко обобщаются: грамматики, не являющиеся LL-грамматиками, обычно могут быть проанализированы методом рекурсивного спуска с возвратами.
Идея метода сотоит в том, что для каждого нетерминального символа K строится функция, которая для любого входного слова x делает 2 вещи:
Находит наибольшее начало z слова x, способное быть началом выводимого из K слова
Определяет, является ли начало z выводимым из K
Прежде чем описывать этот метод более подробно, договоримся о том, как процедуры получают сведения о входном слове и как сообщают о результатах своей работы. Мы предполагаем, что буквы входного слова поступают к ним по одной, т. е. имеется граница, отделяющая > часть от >. Будем считать, что есть функция (без параметров)