Как я могу проверить, является ли данное выражение инфиксным выражением, постфиксным выражением или префиксным выражением?

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

+AB, если в самом первом индексе строки есть оператор, то его префикс

AB+ если в самом последнем индексе строки есть оператор, то это постфикс

иначе это инфикс.

Но это не кажется уместным, поэтому предложите мне лучший алгоритм.

2 ответа

Решение
  1. Если он начинается с действительного инфиксного оператора, это инфиксный, если только вы не собираетесь разрешать унарные операторы.
  2. Если он заканчивается допустимым оператором postfix, это postfix.
  3. В противном случае он либо инфиксный, либо недействительный.

Обратите внимание, что (3) включает в себя случай, который вы упомянули в комментариях к выражению в скобках. В префиксе или постфиксе нет скобок. Вот почему они существуют. (3) также включает в себя вырожденный случай одного члена, например, 1, но в этом случае не имеет значения, как вы анализируете это.

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

Если вы собираетесь разрешить унарные операторы в инфиксной нотации, я могу только предложить вам попробовать все три анализа и остановиться, когда вы добьетесь успеха. Очень возможно, что это стратегия, которой вы должны следовать в любом случае.

проверить первые элементы в строке.1- если первый элемент является оператором, то это точно префиксное выражение 2- иначе проверить второй элемент, если это оператор, то это точно инфикс 3- иначе, это наверняка постфикс

Другие вопросы по тегам