//! SBrain, or Semantic Brain, is a set of extensions to the famous language by Urban Müller
//! designed to make it more amenable to genetic programming. Additions include a stack, a general-
//! purpose register, and useful bitwise operations.
//!
//! This crate provides an implementation of the SBrain specification designed to be used for
//! genetic programming. See the `specification` pseudomodule for the complete specification.
//!
//! Here's a quick example:
//!
//! ```
//! # use sbrain::*;
//! let program = source_to_tape(",[.,]");
//! let mut input = make_input_vec(b"Hello, world!");
//! let mut output = make_output_vec();
//! SBrainVM::new(Some(&mut input), Some(&mut output), &program)
//! .expect("Could not build machine")
//! .run(Some(1000)).expect("I/O failed");
//!
//! let output = output.into_inner();
//! assert_eq!(&output, b"Hello, world!")
//! ```
pub use *;
pub use source_to_tape;
pub use ;
use io;
/// The type of a data cell
pub type MData = u8;
/// The type of a pointer to a cell.
pub type MAddr = u16;
/// Converts the given source code to a SBrain executable and runs it, taking input from stdin and doing output on stdout.
///
/// # Panics
/// Panics if there is an I/O error with standard in or standard out.