jSIMLIB检查器打印出本质上是lisp代码的s表达式代码
(set-option :print-success false)
(set-logic QF_LIA)
(declare-fun RETURN () Int)
(declare-fun refs_1_SYMINT () Int)
(declare-fun flags_2_SYMINT () Int)
(assert+ ( and ( or ( and (/= flags_2_SYMINT 0) (and (= RETURN flags_2_SYMINT)) ) ( and (/= refs_1_SYMINT 0) (and (= flags_2_SYMINT 0)) (and (= RETURN refs_1_SYMINT)) ) ( and (and (= refs_1_SYMINT 0)) (and (= flags_2_SYMINT 0)) (and (= RETURN 100)) ) ) ( not ( or ( and (/= flags_2_SYMINT 0) (and (= RETURN flags_2_SYMINT)) ) ( and (/= refs_1_SYMINT 0) (and (= flags_2_SYMINT 0)) (and (= RETURN refs_1_SYMINT)) ) ( and (and (= refs_1_SYMINT 0)) (and (= flags_2_SYMINT 0)) (and (= RETURN 10)) ) ) ) ) )
(check)
(exit)我如何格式化代码,最好是使用emacs或TextMate?例如:
(set-option :print-success false)
(set-logic QF_LIA)
(declare-fun RETURN () Int)
(declare-fun refs_1_SYMINT () Int)
(declare-fun flags_2_SYMINT () Int)
(assert
(and
(and
(and
(distinct flags_2_SYMINT 0)
(= RETURN flags_2_SYMINT))
(= refs_1_SYMINT refs1_1_SYMINT)
(= flags_2_SYMINT flags1_2_SYMINT))
(not
(and
(distinct flags_2_SYMINT 0)
(= RETURN flags_2_SYMINT)))))
(check-sat)发布于 2012-10-21 02:40:53
在GNU Emacs中,您可以使用indent-pp-sexp。
将s表达式前的光标设置为pretty-print并键入c-u m-x indent-pp-sexp。
发布于 2012-10-21 00:26:50
pp函数可以很好地打印出来,但可能不完全匹配您想要的格式。
下面是你的问题中的一行:
(pp '(assert+ ( and ( or ( and (/= flags_2_SYMINT 0) (and (= RETURN flags_2_SYMINT)) ) ( and (/= refs_1_SYMINT 0) (and (= flags_2_SYMINT 0)) (and (= RETURN refs_1_SYMINT)) ) ( and (and (= refs_1_SYMINT 0)) (and (= flags_2_SYMINT 0)) (and (= RETURN 100)) ) ) ( not ( or ( and (/= flags_2_SYMINT 0) (and (= RETURN flags_2_SYMINT)) ) ( and (/= refs_1_SYMINT 0) (and (= flags_2_SYMINT 0)) (and (= RETURN refs_1_SYMINT)) ) ( and (and (= refs_1_SYMINT 0)) (and (= flags_2_SYMINT 0)) (and (= RETURN 10)) ) ) ) ) ))输出为:
(assert+
(and
(or
(and
(/= flags_2_SYMINT 0)
(and
(= RETURN flags_2_SYMINT)))
(and
(/= refs_1_SYMINT 0)
(and
(= flags_2_SYMINT 0))
(and
(= RETURN refs_1_SYMINT)))
(and
(and
(= refs_1_SYMINT 0))
(and
(= flags_2_SYMINT 0))
(and
(= RETURN 100))))
(not
(or
(and
(/= flags_2_SYMINT 0)
(and
(= RETURN flags_2_SYMINT)))
(and
(/= refs_1_SYMINT 0)
(and
(= flags_2_SYMINT 0))
(and
(= RETURN refs_1_SYMINT)))
(and
(and
(= refs_1_SYMINT 0))
(and
(= flags_2_SYMINT 0))
(and
(= RETURN 10)))))))https://stackoverflow.com/questions/12990052
复制相似问题