Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Дисциплины:
2017-11-17 | 386 |
5.00
из
|
Заказать работу |
|
|
Пусть имеется условие вида:
Это условие в языках программирования записывается как условное выражение вида:
y=if x=<0 then a+b else c*d;
В отличие от простых выражений, где порядок выполнения действий определяется старшинством операций или скобками и в процессе выполнения программы этот порядок не меняется, в условных выражениях он изменяется в зависимости от значения условия (в нашем примере x <= 0).
Таким образом, понятие условного выражения должно быть также введено в ОПЗ представления исходной программы. Для этого вводятся так называемые динамические деревья.
Рассмотрим ряд понятий и особенностей для динамических деревьев:
- узлы и ветви деревьев могут помечаться метками;
- пустой узел - это такой узел, в котором отсутствует операция. Из пустого узла может исходить любое количество ветвей. Пустой узел вводится для объединения нескольких последовательных действий или разветвления некоторого вычислительного процесса;
- условный оператор перехода по значению 'ложь'. Оператор имеет следующее представление:
<условие> <метка> УПЛ
- оператор безусловного перехода:
<метка> БП
С учетом введенных понятий ОПЗ выражения
y+(IF a>b THEN x+y ELSE x+2)
принимает следующий вид:
yab>M1 УПЛ x1+M2 БП М1: x2+M2:+
Для обобщения алгоритма Дейкстры на условные выражения требуется модифицировать таблицу приоритетов, исходя из следующих соображений. Нетрудно заметить, что IF играет роль открывающей скобки, а THEN и ELSE - запятых. Теперь с учетом данного обстоятельства модифицированная таблица приоритетов примет следующий вид (табл. 2.4).
Таблица 2.4
Входной элемент | Приоритет |
IF ([ АЭМ Ф | |
,) ] THEN ELSE | |
V | |
& | |
Отношения | |
+ - | |
* / | |
возведение в степень |
|
Обработка символов операций будет дополнена правилами обработки ключевых слов условных выражений следующим образом:
- символ IF из входной строки заносится в стек;
- символ THEN выталкивает в выходную строку все операции из стека до ближайшего IF. В стеке к символу IF добавляется рабочая метка Мi и после этого в выходную строку записывается часть Мi УПЛ;
- ELSE выталкивает из стека все символы до ближайшего IF Мi. IF Mi превращается в IF Mi+1 и в выходную строку выталкивается часть Мi+1 БП Мi:
- Символ «)» указывает на конец условного выражения и выталкивает из стека все символы до ближайшего символа «(», при этом сам IF уничтожается, а в выходную строку помещается метка Мi+1:.
Например, для приведенного выражения процесс перевода в ОПЗ имеет вид:
Выходная строка | y | a | b | > | M1 УПЛ | x | + | M2 БП M1: | x | + | M2: | - | ||||||||
С Т Е К | - | ( | IF | > | IF M1 | + | IF M2 | + | ||||||||||||
- | ( | IF | ( | IF M1 | ( | IF M2 | ||||||||||||||
- | - | ( | - | ( | - | |||||||||||||||
- | - | |||||||||||||||||||
Входная строка | y | - | ( | IF | a | > | b | THEN | x | + | ELSE | x | + | ) | g |
Примечание. Описанная выше обработка условных выражений связана с правильной организацией передачи управления внутри объектного кода, что и составляет внутреннюю семантику обработки условных выражений в ОПЗ.
Перевод оператора присваивания в ОПЗ
Формат оператора присваивания имеет вид:
<переменная>:= <выражение>
а его ОПЗ представляется следующим образом:
<переменная> <выражение>:=
Для включения в ОПЗ оператора присваивания необходимо решить вопрос о месте этого оператора в таблице приоритетов. При выборе приоритета будем руководствоваться следующими соображениями:
- приоритет оператора присваивания должен быть выше, чем у любой арифметической или логической операции, чтобы знаки не могли вытолкнуть оператор присваивания из стека;
|
- приоритет должен быть меньше, чем у знака ';'.
С учетом этого, таблица приоритетов операций принимает следующий вид (табл. 2.5).
Таблица 2.5
Входной элемент | Приоритет |
IF ([ АЭМ Ф | |
,;) ] THEN ELSE | |
:= | |
V | |
& | |
Отношения | |
+ - | |
* / | |
возведение в степень |
|
|
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!