Текущий архив: 2010.02.21;
Скачать: CL | DM;
Вниз
Помогите, пожалуйста с префиксной формой... Найти похожие ветки
← →
POOP (2009-12-19 22:22) [0]У меня задание вычислить выражение в префиксной форме... В список операций входит унарный минус... Вопрос в том, как отличить унарный минус от обычного минуса?
← →
Hamster © (2009-12-19 22:25) [1]Либо обозначить как-то по-другому, либо "-x" = "0 - x".
← →
имя (2009-12-19 22:34) [2]Удалено модератором
← →
Юрий Зотов © (2009-12-19 22:54) [3]Насколько помню, если при считывании знака операции на стеке лежит только один операнд (а не два), то это унарная операция.
AB+-
Изначально стек пустой.
1. Читаем A, кладем на стек.
2. Читаем B, кладем на стек.
3. Читаем +, берем со стека A и B, вычисляем S=A+B, кладем на стек.
4. Читаем -, берем со стека S, выполняем -S, кладем на стек.
5. Выражение кончилось, результат - на стеке.
При выполнении п.4 на стеке лежал только один операнд - значит, это унарный минус.
← →
Юрий Зотов © (2009-12-19 23:16) [4]Это для постфиксной формы, конечно. Для префиксной - аналогично: если перед выполнением операции имеем только один операнд, то это унарная операция.
← →
oxffff © (2009-12-19 23:36) [5]
> POOP (19.12.09 22:22)
> У меня задание вычислить выражение в префиксной форме...
> В список операций входит унарный минус... Вопрос в том,
> как отличить унарный минус от обычного минуса?
Какой у тебя разбор?
Нисходящий или восходящий?
Если нисходящий, то смотришь какой у тебя был предыдущий токен.
Если это оператор,левая скобка, знак присвоения,запятая, то это унарный минус.
← →
oxffff © (2009-12-19 23:37) [6]
> восходящий
Если восходящий, то там не таких проблем.
При конфликтах перенос/свертка назначаешь приоритеты терминалам, которые наследуются продукциями.
← →
Anatoly Podgoretsky © (2009-12-20 00:52) [7]> POOP (19.12.2009 22:22:00) [0]
а чем они отличаются, надеюсь ты не про операцию вычитания говоришь?
Страницы: 1 вся ветка
Текущий архив: 2010.02.21;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c