ТОР 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. Несколько иная ситуация в отношении использования псев- Не нашли, что искали? Воспользуйтесь поиском:
|