mirror of
https://github.com/Z3Prover/z3
synced 2025-04-13 20:38:43 +00:00
string escaping
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
c99b805c14
commit
520b24aab4
|
@ -629,9 +629,7 @@ void seq_decl_plugin::get_sort_names(svector<builtin_name> & sort_names, symbol
|
|||
}
|
||||
|
||||
app* seq_decl_plugin::mk_string(symbol const& s) {
|
||||
zstring canonStr(s.bare_str());
|
||||
symbol canonSym(canonStr.encode());
|
||||
parameter param(canonSym);
|
||||
parameter param(s);
|
||||
func_decl* f = m_manager->mk_const_decl(m_stringc_sym, m_string,
|
||||
func_decl_info(m_family_id, OP_STRING_CONST, 1, ¶m));
|
||||
return m_manager->mk_const(f);
|
||||
|
|
|
@ -1188,7 +1188,8 @@ namespace smt2 {
|
|||
|
||||
void parse_string_const() {
|
||||
SASSERT(curr() == scanner::STRING_TOKEN);
|
||||
expr_stack().push_back(sutil().str.mk_string(symbol(m_scanner.get_string())));
|
||||
zstring zs(m_scanner.get_string());
|
||||
expr_stack().push_back(sutil().str.mk_string(zs));
|
||||
TRACE("smt2parser", tout << "new string: " << mk_pp(expr_stack().back(), m()) << "\n";);
|
||||
next();
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ std::string zstring::encode() const {
|
|||
#define _flush() if (offset > 0) { buffer[offset] = 0; strm << buffer; offset = 0; }
|
||||
for (unsigned i = 0; i < m_buffer.size(); ++i) {
|
||||
unsigned ch = m_buffer[i];
|
||||
if (ch < 32 || ch >= 128) {
|
||||
if (ch < 32 || ch >= 128 || ch == '\\') {
|
||||
_flush();
|
||||
strm << "\\u{" << std::hex << ch << std::dec << "}";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue