openqasm 0.1.2

Parser and translator for OpenQASM 2.0
Documentation
use openqasm as oq;
use oq::GenericError;

fn example(path: &str, cache: &mut oq::SourceCache) -> Result<(), oq::Errors> {
    let mut parser = oq::Parser::new(cache);
    parser.parse_file(path);
    let program = parser.done().to_errors()?;
    program.type_check().to_errors()?;
    Ok(())
}

fn main() {
    let mut cache = oq::SourceCache::new();

    println!("Processing: good.qasm:");
    if let Err(errors) = example(
        concat!(env!("CARGO_MANIFEST_DIR"), "/examples/good.qasm"),
        &mut cache,
    ) {
        errors.print(&mut cache).unwrap();
    }

    println!("Processing: bad.qasm:");
    if let Err(errors) = example(
        concat!(env!("CARGO_MANIFEST_DIR"), "/examples/bad.qasm"),
        &mut cache,
    ) {
        errors.print(&mut cache).unwrap();
    }
}