#smt-lib #solver #smt #smt-solver

bin+lib smt2parser

Generic parser library for the SMT-LIB-2 format

11 releases (6 breaking)

0.6.1 Sep 8, 2021
0.6.0 Jul 9, 2021
0.5.2 Jul 8, 2021
0.1.0 Jan 28, 2021

#10 in #smt-lib

Download history 1553/week @ 2024-02-03 1535/week @ 2024-02-10 2017/week @ 2024-02-17 1701/week @ 2024-02-24 1451/week @ 2024-03-02 1607/week @ 2024-03-09 1642/week @ 2024-03-16 1484/week @ 2024-03-23 1404/week @ 2024-03-30 1401/week @ 2024-04-06 1295/week @ 2024-04-13 1519/week @ 2024-04-20 1476/week @ 2024-04-27 1463/week @ 2024-05-04 1725/week @ 2024-05-11 1705/week @ 2024-05-18

6,681 downloads per month
Used in 5 crates (4 directly)

MIT/Apache

190KB
5K SLoC

smt2parser

smt2parser on crates.io Documentation License License

This crate provides a generic parser for SMT2 commands, as specified by the SMT-LIB-2 standard.

Commands are parsed and immediately visited by a user-provided implementation of the trait visitors::Smt2Visitor.

To obtain concrete syntax values, use concrete::SyntaxBuilder as a visitor:

let input = b"(echo \"Hello world!\")(exit)";
let stream = CommandStream::new(
    &input[..],
    concrete::SyntaxBuilder,
    Some("optional/path/to/file".to_string()),
);
let commands = stream.collect::<Result<Vec<_>, _>>().unwrap();
assert!(matches!(commands[..], [
    concrete::Command::Echo {..},
    concrete::Command::Exit,
]));
assert_eq!(commands[0].to_string(), "(echo \"Hello world!\")");

Contributing

See the CONTRIBUTING file for how to help out.

License

This project is available under the terms of either the Apache 2.0 license or the MIT license.

Dependencies

~6.5MB
~100K SLoC