我需要解析表单的语句
var1!=var2
var1==var2
等等。我有以下构造:
lazy val Line : Parser[Any] = (Expr ~ "!=" ~ Expr)^^ {e => SMT( "(not (= " + e._1._1 + " " + e._2 + "))")} | (Expr ~ "==" ~ Expr)^^ {e => SMT( "(" + (e._1._2) + " " + e._1._1 + " " + e._2 + ")")}
"==" 的第二部分工作得很好,返回 me (== var1 var2)
,但第一部分只是不解析。无论我尝试解析什么而不是“!=”,都不会识别“!=”或“!=”或“!=”。
当然我可以在将它交给解析器之前替换“!=”,但是有没有更优雅的方法?