#![feature(result_option_inspect)]
#![allow(non_snake_case)]

mod ast;
mod lexer;
mod parser;

const TEST: &str = include_str!("../assets/why.idl");

fn main() {
    let res = parser::parse(TEST);
    match res {
        Ok(ast) => {
            println!("{:?}", ast);
        }
        Err(e) => println!("{}", e),
    }
}

#[macro_export]
macro_rules! unwrap_match {
    ($x:expr, $m:pat => $a:expr) => {
        match $x {
            $m => $a,
            _ => unreachable!(),
        }
    };
}