Algorithm 调车场算法能否用于解析包含逻辑、比较和算术运算符组合的表达式?

Algorithm 调车场算法能否用于解析包含逻辑、比较和算术运算符组合的表达式?,algorithm,parsing,expression,operator-precedence,shunting-yard,Algorithm,Parsing,Expression,Operator Precedence,Shunting Yard,根据调车场的特点,采用算法解析数学表达式。但是有什么理由不能将它与逻辑和算术表达式以及比较结合使用吗 作为一个例子,我们可以用它来解析: a+b<17 && a+b>3 || a==b a+b3 | | a==b 就我所见,您可以定义逻辑运算符的优先级最低,然后是比较运算符,然后是通常的算术运算符,优先级越来越高。还是我遗漏了什么?没什么,我只是问这在理论上是否有效。当然有效。在语法上,逻辑运算是二进制中缀运算符,算术运算符也是。解析是语法,所以没有区别。区别纯粹

根据调车场的特点,采用算法解析数学表达式。但是有什么理由不能将它与逻辑和算术表达式以及比较结合使用吗

作为一个例子,我们可以用它来解析:

a+b<17 && a+b>3 || a==b
a+b3 | | a==b

就我所见,您可以定义逻辑运算符的优先级最低,然后是比较运算符,然后是通常的算术运算符,优先级越来越高。还是我遗漏了什么?

没什么,我只是问这在理论上是否有效。当然有效。在语法上,逻辑运算是二进制中缀运算符,算术运算符也是。解析是语法,所以没有区别。区别纯粹在于语义,这意味着解析树的注释必须更改,或者代码必须分别处理RPN堆栈。您可能也可以使用它来解析多个语句,甚至简单的if-then-else块,除非您有循环、函数调用、GOTO等。您是对的。您所要做的就是添加到运算符和优先级表中。算法本身根本不需要改变。然而@o9000错误地断言它可以用来解析除中缀运算符和括号组成的表达式之外的任何东西。