Часть полного текста документа: 1. Задача разбора Разбор сентенциальной формы означает построение вывода и, возможно синтаксического дерева для нее. Программу разбора называют также рас- познавателем, так как она распознает только предложения рассматривае- мой грамматики. Именно это и является нашей задачей в данный момент. Все алгоритмы разбора, которые бутут здесь описаны называются алгори- тмами слева направо ввиду того, что они обрабатывают сначала самые ле- вые символы обрабатываемой цепочки и продвигаются по цепочке только тогда, когда это необходимо. Можно подобным способом определить разбор справа налево, но он менее естественен. Инструкции в программе выполня- ются слева направо, да и мы читаем слева направо. Различают две категории алгоритмов разбора: нисходящий (сверху вниз) и восходящий (снизу вверх). Их называют также разверткой и сверткой. ( В данном реферате будет рассмотрен процесс только нисходящего раз- бора. ) Соотетственно, эти термины соответствуют и способу построения синтаксического дерева. При нисходящем разборе дерево строится от корня ( начального символа ) вниз к концевым узлам. Метод восходящего разбора состоит в том, что отправляясь от заданной цепочки, пытаются привести ее к начальному символу. В качестве примера нисходящего разбора рассмотрим предложение (1) в следующей грамматике целых чисел ( последовательностей, состоящих из одной и более цифр ): N ::= D | ND D ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (1) На первом шаге непосредственный вывод N => ND будет строиться так, как показано в первом дереве на рис. 1. На каждом последующем шаге самый левый нетерминал V текущей сентенциальной формы xVy заменяется на правую часть u правила V ::= u, в результате чего получается сле- дующая сентенциальная форма. Этот процесс для предложения (1) предс- тавлен на рис. 1. в виде пяти деревьев. Фокус в том, конечно, что надо получить ту сентенциальную форму, которая сопадает с заданной цепочкой. N N N N N | | | | *-------* *-------* *-------* *-------* | | | | | | | | N D N D N D N D | | | | D D D 5 | | 3 3 N => N D => D D => 3 D => 3 5 Рис. 1. Нисходящий разбор и построение вывода 2. Нисходящие разбор с возвратами Алгоритм нисходящего разбора строит синтаксическое дерево, как уже было сказано, начиная с корня, постепенно опускаясь до уровня предло- жения, как было показано ранее. Описание усложняется главным образом из-за необходимости вспомогательных операций, которые необходимы гла- вным образом для того, чтобы выполнять возвраты с твердой уверенностью, что все возможные попытки построения дерева были предприняты. Чтобы свести осложнеия к минимуму, давайте опишем этот алгоритм раз- бора образно. ............
|