Skip to content

Commit 47bb533

Browse files
authored
Merge pull request diffblue#3161 from diffblue/smt2-parser-Array-sort
smt2_parser: parse Array sort
2 parents 1055399 + 0cf070b commit 47bb533

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/solvers/smt2/smt2_parser.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,32 @@ typet smt2_parsert::sort()
975975
return nil_typet();
976976
}
977977
}
978+
else if(buffer == "Array")
979+
{
980+
// this gets two sorts as arguments, domain and range
981+
auto domain = sort();
982+
auto range = sort();
983+
984+
// eat the ')'
985+
if(next_token() != CLOSE)
986+
{
987+
error() << "expected ')' at end of Array sort" << eom;
988+
return nil_typet();
989+
}
990+
991+
// we can turn arrays that map an unsigned bitvector type
992+
// to something else into our 'array_typet'
993+
if(domain.id() == ID_unsignedbv)
994+
{
995+
const auto size = to_unsignedbv_type(domain).largest_expr();
996+
return array_typet(range, size);
997+
}
998+
else
999+
{
1000+
error() << "unsupported array sort" << eom;
1001+
return nil_typet();
1002+
}
1003+
}
9781004
else
9791005
{
9801006
error() << "unexpected sort: `" << buffer << '\'' << eom;

0 commit comments

Comments
 (0)