1use ast::Module;
2use lex::Lexer;
3use lifetime_analysis::LifetimeAnalyser;
4use parse::Parser;
5use symbol::Scope;
6use symbol::ScopeType;
7
8pub mod ast;
9pub mod char;
10pub mod error;
11pub mod lex;
12pub mod lifetime_analysis;
13pub mod operator;
14pub mod parse;
15pub mod parse_expr;
16pub mod parse_literal;
17pub mod parse_module;
18pub mod parse_operator;
19pub mod parse_stmt;
20pub mod source;
21pub mod symbol;
22pub mod token;
23
24pub fn parse_module_source_code(src: &[u8]) -> Module {
25 let module_scope = Scope::new(ScopeType::Module);
26 let mut parser = Parser::new(Lexer::new(src), module_scope);
27 let ast = parser.parse_module().unwrap();
28 LifetimeAnalyser {}.analyse_lifetimes(&ast);
29 ast
30}