标签: algorithm parsing expression evaluation querying
我正在编写一个布尔反向波兰表示法解析器和评估器。当我想评估双重否定时,比如!! A,相应的RPN是!A!,根据shunting-yard algorithm。但是,当我尝试从Wikipedia运行评估算法时,它会失败,因为当第一个!如上所述,没有任何价值可以应用运营商。
但是,如果我将表达式写为!(!A),则转换为A !!在RPN,这是我需要的。
转换为RPN或评估版是否有问题?我可以通过每次否定强制括号来解决它,但这似乎不是一个优雅的解决方案......