mod compiler;
mod syntactic;
mod syntactic_tokens;
mod semantic;
mod semantic_tokens;
mod bytecode;
mod bytecode_tokens;

pub use compiler::*;
pub use syntactic::*;
pub use syntactic_tokens::*;
pub use semantic::*;
pub use semantic_tokens::*;
pub use bytecode::*;
pub use bytecode_tokens::*;


#[macro_export]
macro_rules! indent {
    (0, $($tokens:tt)*) => {{
        println!($($tokens)*);
    }};
    ($indent:expr, $($tokens:tt)*) => {{
        for _ in 0..$indent { print!("  "); }
        println!($($tokens)*);
    }};
}