turtle-build 0.3.8

Ninja-compatible build system for high-level programming languages
mod error;
mod parsers;
mod stream;

pub use self::error::ParseError;
use self::{
    parsers::{dynamic_module, module},
    stream::stream,
};
use crate::ast::{DynamicModule, Module};
use combine::Parser;

pub fn parse(source: &str) -> Result<Module, ParseError> {
    Ok(module().parse(stream(source)).map(|(module, _)| module)?)
}

pub fn parse_dynamic(source: &str) -> Result<DynamicModule, ParseError> {
    Ok(dynamic_module()
        .parse(stream(source))
        .map(|(module, _)| module)?)
}