Я знаю, что это очень старая тема, но я только что нашел ее сегодня и хотел сказать, что я верю, что ответ на первоначальный вопрос - ДА. Я уверен, что все выражения RPN могут быть представлены так, что все операторы появляются слева, а все операнды появляются справа, если в дополнение к обычным арифметическим операциям нам разрешено включать в представление три дополнительных «навигационных» оператора.
Любое арифметическое выражение может быть представлено в виде двоичного дерева с переменными и константами в конечных узлах, двоичными арифметическими операциями в ветвях дерева и унарными операциями, такими как отрицание, обратный или квадратный корень вдоль любой ветви. Три дополнительных операции, которые я предлагаю, представляют построение левой ветви, построение правой ветви или достижение конечного узла в двоичном дереве. Теперь, если мы поместим все операнды слева от входной строки в соответствии с положением их соответствующих листьев в дереве, мы можем предоставить оставшуюся часть входной строки операциями, рассказывающими, как восстановить соответствующее двоичное дерево в памяти и вставить операнды и математические операции в нем в правильных точках. Наконец, для вычисления результата применяется алгоритм обхода дерева в глубину.
Я не знаю, имеет ли это какое-либо практическое применение. Это, вероятно, слишком неэффективно, как способ кодирования и декодирования выражений. Но как академическое упражнение, я уверен, что это выполнимо.