Формальные языки, грамматики и основы построения трансляторов. Кревский И.Г - 68 стр.

UptoLike

68
С5. Цикл (см. рис. к правилу В5) преобразуется в следующую
структуру:
S
*
empty
NULL
*
*
В качестве примера рассмотрим построение структуры данных для
сводного синтаксического графа, приведенного выше на рис.10.2.
Структура данных идентифицируется узлом-заголовком
, который
содержит имя нетерминального символа (цели), к которому относится
структура. Вообще говоря, заголовок не является необходимым, так как
можно вместо поля цели указывать непосредственно на "вход" в
соответствующую структуру. Однако заголовок можно использовать для
хранения выводимого на печать имени структуры:
struct header;
typedef header *hpointer;
struct header {
pointer entry;
char sym;
};
Программа, производящая грамматический разбор предложения,
представленного в виде
последовательности символов входного файла,
состоит из повторяющегося оператора, описывающего переход от одного
узла к следующему узлу.
В поле sym для терминального символа помещается сам символ, для
нетерминальногоссылка на соответствующую структуру данных. Она
оформлена как процедура, задающая интерпретацию графа; если встречается
узел, представляющий нетерминальный символ, то интерпретация графа, на
который
ссылается данный узел, предшествует завершению интерпретации
текущего графа. Следовательно, процедура интерпретации вызывается
                                                                             68



     С5. Цикл (см. рис. к правилу В5) преобразуется в следующую
структуру:
                  S

              *       *


             empty
             NULL
                      *

     В качестве примера рассмотрим построение структуры данных для
сводного синтаксического графа, приведенного выше на рис.10.2.
     Структура данных идентифицируется узлом-заголовком, который
содержит имя нетерминального символа (цели), к которому относится
структура. Вообще говоря, заголовок не является необходимым, так как
можно вместо поля цели указывать непосредственно на "вход" в
соответствующую структуру. Однако заголовок можно использовать для
хранения выводимого на печать имени структуры:
struct header;
typedef header *hpointer;
struct header {
   pointer entry;
   char sym;
};
     Программа,           производящая   грамматический   разбор   предложения,
представленного в виде последовательности символов входного файла,
состоит из повторяющегося оператора, описывающего переход от одного
узла к следующему узлу.
     В поле sym для терминального символа помещается сам символ, для
нетерминального – ссылка на соответствующую структуру данных. Она
оформлена как процедура, задающая интерпретацию графа; если встречается
узел, представляющий нетерминальный символ, то интерпретация графа, на
который ссылается данный узел, предшествует завершению интерпретации
текущего графа. Следовательно, процедура интерпретации вызывается