Конвертер польской записи

Преобразуйте выражения между инфиксной, префиксной польской и постфиксной обратной польской записью с мгновенным и понятным результатом.

Преобразовать запись выражения
Введите выражение и выберите исходную и целевую формы записи.

О преобразовании польской записи

Польская запись — способ представления математических и логических выражений без привычного размещения операторов между значениями. В обычной инфиксной записи оператор стоит между операндами, например A + B. В префиксной он стоит перед ними: + A B, а в постфиксной — после: A B +. Префиксную форму часто называют польской записью, а постфиксную — обратной польской записью, или RPN. Поскольку порядок оператора и операндов однозначен, таким выражениям обычно не нужны скобки. Конвертер выполняет четыре распространённых преобразования: инфиксная в префиксную, инфиксная в постфиксную, префиксная в инфиксную и постфиксная в инфиксную. Для инфиксного ввода распознаются идентификаторы, десятичные числа, скобки и операторы сложения, вычитания, умножения, деления и возведения в степень. Применяется стандартный приоритет: сначала степень, затем умножение и деление, затем сложение и вычитание. Скобки явно меняют порядок. Степень считается правоассоциативной, поэтому a ^ b ^ c означает a ^ (b ^ c). Преобразования из инфиксной записи используют алгоритм сортировочной станции для упорядочивания токенов по приоритету. Стек временно хранит операторы, а значения сразу поступают в вывод. Затем из полученной постфиксной последовательности строится префиксный результат. Для перехода из префиксной и постфиксной записи в инфиксную используется стек частичных выражений. При встрече оператора из него извлекаются два соответствующих операнда, объединяются, заключаются в скобки и возвращаются в стек. Последний элемент — полное инфиксное выражение. В префиксном и постфиксном вводе важны пробелы: они отделяют каждый операнд и оператор. Пишите * + A B C, а не *+ABC. В инфиксных выражениях пробелы необязательны, поскольку скобки и символы операторов разделяют токены. Конвертер сохраняет имена переменных и числовые значения, добавляя пробелы и скобки для удобства проверки. Преобразование записи полезно при изучении деревьев выражений, синтаксического анализа компиляторов, стековых машин, калькуляторов и структур данных. Постфиксные выражения можно вычислять слева направо с помощью простого стека, а префиксные — аналогично справа налево. Перевод привычной инфиксной формулы делает приоритет операторов явным и помогает проверять упражнения по разбору выражений.

Примеры польской записи

Примеры показывают равнозначные выражения в разных формах записи.

ВводВыводПреобразование
(A + B) * C - D- * + A B C DИнфиксная в префиксную
A + B * CA B C * +Инфиксная в постфиксную
* + A B - C D((A + B) * (C - D))Префиксная в инфиксную
A B + C D - *((A + B) * (C - D))Постфиксная в инфиксную

Как пользоваться конвертером записи

  1. Выберите одно из четырёх преобразований, указав исходную и нужную формы записи.
  2. Введите выражение, разделяя все токены пробелами при префиксном или постфиксном вводе.
  3. Нажмите «Преобразовать», чтобы разобрать выражение и получить равнозначную запись.
  4. Проверьте порядок операторов или нажмите «Сбросить», чтобы очистить выражение и начать заново.

Вопросы о конвертере польской записи

Что такое польская запись?

Она ставит каждый оператор перед его операндами: A + B превращается в + A B. Если число операндов каждого оператора известно, скобки не нужны.

Что такое обратная польская запись?

Она ставит оператор после операндов: A + B превращается в A B +. Её также называют постфиксной записью и обычно вычисляют с помощью стека.

Нужны ли пробелы в префиксных и постфиксных выражениях?

Да, конвертер требует пробелы между токенами, чтобы многосимвольные значения различались однозначно. Например, пишите + total 25, а не +total25.

Как учитывается приоритет операторов?

В инфиксной записи наивысший приоритет у степени, затем идут умножение и деление, затем сложение и вычитание. Скобки меняют обычный порядок.

Можно ли сочетать числа и имена переменных?

Да, операндами могут быть десятичные числа или идентификаторы из букв, цифр и подчёркиваний. Конвертер переставляет токены, не вычисляя их числовые значения.