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: rust let input = b"(echo \"Hello world!\")(exit)"; let mut stream = CommandStream::new( &input[..], concrete::SyntaxBuilder, ); 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.