1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#[macro_use] extern crate lalrpop_util; #[cfg(feature = "lazy_static")] #[macro_use] extern crate lazy_static; lalrpop_mod!( #[allow(clippy::all)] grammar ); #[macro_use] mod macros; pub mod ast; pub mod builtins; pub mod error; pub mod function; pub mod runtime; pub mod scope; pub mod time; pub mod util; #[cfg(feature = "playground")] pub mod playground; #[cfg(feature = "wasm")] pub mod wasm; pub use ast::{Expr, Ident}; pub use error::{Error, Result}; pub use runtime::{Evaluate, Value}; pub use scope::Scope; use miniscript::{descriptor, policy}; pub type Policy = policy::concrete::Policy<descriptor::DescriptorPublicKey>; pub type Miniscript = miniscript::Miniscript<descriptor::DescriptorPublicKey, miniscript::Segwitv0>; pub type Descriptor = descriptor::Descriptor<descriptor::DescriptorPublicKey>; pub fn parse(s: &str) -> Result<Expr> { let parser = grammar::ProgramParser::new(); Ok(parser.parse(s)?) } pub fn eval(expr: Expr) -> Result<Value> { expr.eval(&Scope::root()) } pub fn run(s: &str) -> Result<Policy> { eval(parse(s)?)?.into_policy() }