如何检查给定表达式是中缀表达式、后缀表达式还是前缀表达式?

How can I check whether the given expression is an infix expression, postfix expression or prefix expression?

我需要算法来检查给定表达式是中缀、后缀还是前缀表达式。 我已经通过检查字符串的第一个或最后两个术语尝试了一种方法,例如

+AB if there is an operator in the very first index of string then its a prefix

AB+ if there is an operator in the very last index of string then its a postfix

else it is an infix.

但是感觉不合适所以请建议我一个更好的算法。

  1. 如果它以有效的中缀运算符开头,它就是中缀,除非您打算允许一元运算符。
  2. 如果它以有效的后缀运算符结尾,它就是后缀。
  3. 否则为中缀或无效。

请注意,(3) 包括您在括号中表达式的注释中提到的情况。前缀或后缀中没有括号。这就是它们存在的原因。 (3) 还包括单项的退化情况,例如1,但在那种情况下,您如何解析它并不重要。

您只能通过完全解析来检测无效表达式。

如果您打算在中缀表示法中允许一元运算符,我只能建议您尝试所有三种解析,并在成功时停止。无论如何,这很可能是您应该遵循的策略。

检查字符串中的第一个元素。 1-如果第一个元素是运算符,那么它肯定是前缀表达式 2- else,检查第二个元素,如果是operator,那么肯定是infix 3- 否则,肯定是 postfix