use ast::Module;
use lex::Lexer;
use lifetime_analysis::LifetimeAnalyser;
use parse::Parser;
use symbol::Scope;
use symbol::ScopeType;
pub mod ast;
pub mod char;
pub mod error;
pub mod lex;
pub mod lifetime_analysis;
pub mod operator;
pub mod parse;
pub mod parse_expr;
pub mod parse_literal;
pub mod parse_module;
pub mod parse_operator;
pub mod parse_stmt;
pub mod source;
pub mod symbol;
pub mod token;
pub fn parse_module_source_code(src: &[u8]) -> Module {
let module_scope = Scope::new(ScopeType::Module);
let mut parser = Parser::new(Lexer::new(src), module_scope);
let ast = parser.parse_module().unwrap();
LifetimeAnalyser {}.analyse_lifetimes(&ast);
ast
}