Операционная система UNIX. Руководство программиста

       

Доступ к значениям завершенных правил


Действие может ссылаться на значения, возвращенные в результате обработки предыдущих правил. Происходит это обычным образом - посредством знака $, за которым следует число.

sent : adj noun verb adj noun { просмотр предложения ... } ; adj : THE { $$ = THE; } | YOUNG { $$ = YOUNG; } . . . ; noun : DOG { $$ = DOG; } | CRONE { if ($0 == YOUNG) { (void) printf ("что???\n"); } $$ = CRONE; } ; . . .

В этом случае число должно быть нулевым или отрицательным. В действии, следующем за словом CRONE, выполняется проверка, что предыдущая лексема - не YOUNG. Очевидно, такая проверка возможна только в случае, когда о предыдущей лексеме есть информация. Иногда с помощью данного механизма, который, правда, к структурным не отнесешь, обходят многие проблемы, в особенности, когда требуется исключить из в основном регулярной структуры всего несколько комбинаций.



Содержание раздела