@@ -1920,19 +1920,23 @@ namespace smt {
1920
1920
u.str.is_string(range2, range2val);
1921
1921
return zstring("[") + range1val + zstring("-") + range2val + zstring("]");
1922
1922
} else if (u.re.is_loop(a_regex)) {
1923
- expr * body;
1924
- unsigned lo, hi;
1925
- // There are two variants of loop: a 2-argument version and a 3-argument version.
1926
- if (u.re.is_loop(a_regex, body, lo, hi)) {
1927
- rational rLo(lo);
1928
- rational rHi(hi);
1929
- zstring bodyStr = get_std_regex_str(body);
1930
- return zstring("(") + bodyStr + zstring("{") + zstring(rLo.to_string().c_str()) + zstring(",") + zstring(rHi.to_string().c_str()) + zstring("})");
1931
- } else if (u.re.is_loop(a_regex, body, lo)) {
1932
- rational rLo(lo);
1933
- zstring bodyStr = get_std_regex_str(body);
1934
- return zstring("(") + bodyStr + zstring("{") + zstring(rLo.to_string().c_str()) + zstring("+") + zstring("})");
1935
- }
1923
+ expr * body;
1924
+ unsigned lo, hi;
1925
+ // There are two variants of loop: a 2-argument version and a 3-argument version.
1926
+ if (u.re.is_loop(a_regex, body, lo, hi)) {
1927
+ rational rLo(lo);
1928
+ rational rHi(hi);
1929
+ zstring bodyStr = get_std_regex_str(body);
1930
+ return zstring("(") + bodyStr + zstring("{") + zstring(rLo.to_string().c_str()) + zstring(",") + zstring(rHi.to_string().c_str()) + zstring("})");
1931
+ } else if (u.re.is_loop(a_regex, body, lo)) {
1932
+ rational rLo(lo);
1933
+ zstring bodyStr = get_std_regex_str(body);
1934
+ return zstring("(") + bodyStr + zstring("{") + zstring(rLo.to_string().c_str()) + zstring("+") + zstring("})");
1935
+ }
1936
+ else {
1937
+ TRACE("str", tout << "BUG: unrecognized regex term " << mk_pp(regex, get_manager()) << std::endl;);
1938
+ UNREACHABLE(); return zstring("");
1939
+ }
1936
1940
} else if (u.re.is_full_seq(a_regex)) {
1937
1941
return zstring("(.*)");
1938
1942
} else if (u.re.is_full_char(a_regex)) {
@@ -1941,6 +1945,7 @@ namespace smt {
1941
1945
TRACE("str", tout << "BUG: unrecognized regex term " << mk_pp(regex, get_manager()) << std::endl;);
1942
1946
UNREACHABLE(); return zstring("");
1943
1947
}
1948
+
1944
1949
}
1945
1950
1946
1951
void theory_str::instantiate_axiom_RegexIn(enode * e) {
0 commit comments