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

UptoLike

98
else smbtp=pop(opstk);
С учетом приведенных соглашений для функции precedence, а
также исправлений для строки 12 рассмотренный алгоритм может быть
использован для преобразования любой строки, записанной в инфиксной
форме, в постфиксную. Подытожим правила приоритетности скобок:
precedence("(",op) == FALSE для любой операции op
precedence(op,"(") == FALSE для любой операции op,
отличной от ")"
precedence(op,")") == TRUE для любой операции op, отличной
от "("
precedence(")",op) = "неопределенно" для
любой операции
op, (попытка сравнения двух указанных операций означает ошибку)
Проиллюстрируем этот алгоритм несколькими примерами:
Пример1:
А+В*С
Приводится содержимое symb, постфиксной строки и opstk после
просмотра каждого символа. Вершина opstk находится справа.
Строка symb Постфиксная строка opstk
1 A A
2 + A +
3 B AB +
4 * AB +*
5 C ABC +*
6 ABC* +
7 ABC*+
Строки 1, 3 и 5 соответствуют просмотру операнда таким образом, что
символ (symb) немедленно помещается в постфиксную строку. В строке 2
была обнаружена операция, а стек оказался пустым, поэтому операция
помещается в стек. В строке 4 приоритет нового символа (*) больше, чем
                                                                          98
else smbtp=pop(opstk);
         С учетом приведенных соглашений для функции precedence, а
также исправлений для строки 12 рассмотренный алгоритм может быть
использован для преобразования любой строки, записанной в инфиксной
форме, в постфиксную. Подытожим правила приоритетности скобок:
         precedence("(",op) == FALSE для любой операции op
         precedence(op,"(")         ==   FALSE для любой операции op,
отличной от ")"
         precedence(op,")") == TRUE для любой операции op, отличной
от "("
         precedence(")",op) = "неопределенно" для любой операции
op, (попытка сравнения двух указанных операций означает ошибку)
         Проиллюстрируем этот алгоритм несколькими примерами:
Пример1:
         А+В*С
         Приводится содержимое symb, постфиксной строки и opstk после
просмотра каждого символа. Вершина opstk находится справа.
                 Строка symb    Постфиксная строка        opstk
                   1      A     A
                   2      +     A                     +
                   3      B     AB                    +
                   4      *     AB                    +*
                   5      C     ABC                   +*
                   6            ABC*                  +
                   7            ABC*+


         Строки 1, 3 и 5 соответствуют просмотру операнда таким образом, что
символ (symb) немедленно помещается в постфиксную строку. В строке 2
была обнаружена операция, а стек оказался пустым, поэтому операция
помещается в стек. В строке 4 приоритет нового символа (*) больше, чем