Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Доступ к этим значениям обеспечивается набором так




называемых псевдопеременных с именами $1,$2,..., где $i

Соответствует значению i-го элемента; элементы правой

Части правила нумеруются слева направо без различия

Лексем и нетерминальных символов, например, в правиле

P_Head: P_name '(' P_list ')';

псевдопеременные $1,$2,$3,$4 относились бы соответст-

венно к P_name, '(', P_list, ')'.

- Формировать в действиях значение, образованного в

Результате свертки нетерминала путем присвоения этого

значения псевдопеременной с именем $$. Так, в правиле

- 17 -

expr: expr '+' expr { $$=$1+$3; }

Значением нового нетерминала expr станет сумма ранее

Вычисленных значений двух других нетерминалов expr.

Eсли в действии не определяется значение переменной $$

(а также если действие отсутствует), значением нетерми-

Нала после свертки по умолчанию становится значение

Первого элемента правой части, т.е. неявно выполняется

Присваивание

$$=$1;

Пример (вычисление значения целого числа)

%token DIGIT

%%

...

CONST: DIGIT

| CONST DIGIT {$$=$1*10+$2;}

...

%%

Yylex()

{

Char c;

if((c=getchar())>='0'&& c<='9') {

yylval = c-'0';

Return (DIGIT);

}

...

}

Здесь при свертке по первому правилу нетерминал CONST

Получает значение первой цифры, присвоенное в функции

Yylex переменной yylval; при каждой свертке по второму

Правилу явно вычисляется значение нового нетерминала

CONST.

Несколько иная ситуация в отношении использования псев-






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных