ВУЗ:
Составители:
94
В результате вычислений значение выражения оказывается
единственным элементом стека.
Такой алгоритм, выполняющий операции над стеком, лежит
практически в основе любого компилятора. Обычно блок синтаксического
анализа преобразует программу в постфиксную форму, после чего генератор
кода строит объектную программу, просматривая выражения
вышеописанным методом.
Очевидно, что вычисление постфиксной записи выражения не
представляет трудности, преобразование
же инфиксной записи в
постфиксную заметно сложнее. Предположим, что продукция языка имеет
вид
A
→
B и C
где A, B и C являются нетерминалами, а "и" – терминал. Будем считать,
что знаки операций являются терминалами. Тогда эта продукция означает,
что нетерминал A является инфиксной записью, в которой участвуют
операнды B и C вместе с оператором "и". Следовательно, постфиксная форма
выражения образуется из операндов B, C, за
которыми следует оператор "и".
Таким образом, для данной продукции постфиксная запись имеет вид
Постфиксная запись для B
Постфиксная запись для C
и
Если терминальные символы выводятся в выходной файл в таком
порядке, то все фразы языка будут представлены в постфиксной форме.
Преобразование выражения из инфиксной записи в постфиксную
Части выражения, заключенные
в скобки на самом нижнем уровне
скобочных вложений для данного выражения, должны быть сначала
преобразованы в постфиксную форму, с тем, чтобы их можно было
рассматривать как один операнд. При таком подходе преобразование всего
94 В результате вычислений значение выражения оказывается единственным элементом стека. Такой алгоритм, выполняющий операции над стеком, лежит практически в основе любого компилятора. Обычно блок синтаксического анализа преобразует программу в постфиксную форму, после чего генератор кода строит объектную программу, просматривая выражения вышеописанным методом. Очевидно, что вычисление постфиксной записи выражения не представляет трудности, преобразование же инфиксной записи в постфиксную заметно сложнее. Предположим, что продукция языка имеет вид A→BиC где A, B и C являются нетерминалами, а "и" – терминал. Будем считать, что знаки операций являются терминалами. Тогда эта продукция означает, что нетерминал A является инфиксной записью, в которой участвуют операнды B и C вместе с оператором "и". Следовательно, постфиксная форма выражения образуется из операндов B, C, за которыми следует оператор "и". Таким образом, для данной продукции постфиксная запись имеет вид Постфиксная запись для B Постфиксная запись для C и Если терминальные символы выводятся в выходной файл в таком порядке, то все фразы языка будут представлены в постфиксной форме. Преобразование выражения из инфиксной записи в постфиксную Части выражения, заключенные в скобки на самом нижнем уровне скобочных вложений для данного выражения, должны быть сначала преобразованы в постфиксную форму, с тем, чтобы их можно было рассматривать как один операнд. При таком подходе преобразование всего
Страницы
- « первая
- ‹ предыдущая
- …
- 92
- 93
- 94
- 95
- 96
- …
- следующая ›
- последняя »