在此语法下:
^ + - * / < > = <= >= and or not我正在使用一个函数(shunting- works算法)将中缀转换为后缀,并且它起作用了!除了它不包括一元表示否定和一元+,这实际上没有做太多的事情。
一旦转换为后缀,一元+将是p,一元-将是m。例如:
3 + 3 -> 3 3 +
+3 + 3 -> 3 p 3 +
-(3-3) -> 3 3 - m因此,如果我正在读取一个中缀表达式,我如何在一元和二进制之间指定加号和减号?
发布于 2012-05-15 14:46:40
在我看来,下面的规则是适用的。
非运算符后面的第一个+或-是二元运算符。后续的匹配项(或表达式开头的匹配项)是一元。
所以,在你的(和几个额外的)例子中:
3 + 3 --> 3 binary+ 3
+ 3 + 3 --> unary+ 3 binary+ 3
- ( 3 - 3) --> unary- ( 3 binary- 3)
-9--4 --> unary- 9 binary- unary- 4https://stackoverflow.com/questions/10595338
复制相似问题