フォームのステートメントを解析する必要があります
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 + ")")}
「==」の 2 番目の部分は正常に機能し、 me が返されます(== var1 var2)
が、最初の部分は解析されません。「!=」の代わりに何を解析しようとしても、「!=」も「!=」も「!=」も認識されません。
もちろん、パーサーに渡す前に「!=」を置き換えることもできますが、もっとエレガントな方法はありますか?