У меня есть фрагмент кода, который преобразует инфиксное выражение в дерево выражений в памяти. Это прекрасно работает. Есть только одна маленькая неприятность. Я просто подключаюсь, разрабатываю, как правильно задействовать унарные операторы (правильные ассоциативные).
Со следующим инфиксным выражением:
+1 + +2 - -3 - -4
Я бы ожидал, что RPN:
1+2++3-4--
Тем не менее, ни один из онлайн-преобразователей инфикс-пост, который я могу найти, не обрабатывает этот пример так, как я ожидал. Есть ли у кого-нибудь четкое объяснение обработки правильных ассоциативных операторов, особенно бинарных, которые можно принять за унарные?
Редактировать/уточнить: я хотел бы знать, как обращаться с унарными операторами при переводе с инфикса на постфикс. То есть: распознавание одного и того же символа «-», например, как унарного вместо бинарного оператора и, следовательно, другого приоритета. Я бы подумал об использовании конечного автомата, возможно, с двумя состояниями, но...?
1+2++3--4--
- person Andrei   schedule 09.08.2010