1pub mod diagnostics;
2pub(crate) mod expr;
3pub(crate) mod interpolation;
4pub(crate) mod parser;
5pub(crate) mod precedence;
6pub(crate) mod stmt;
7
8use diagnostics::ParseError;
9use php_ast::Program;
10
11pub struct ParseResult<'arena, 'src> {
12 pub program: Program<'arena, 'src>,
13 pub errors: Vec<ParseError>,
14}
15
16pub fn parse<'arena, 'src>(
17 arena: &'arena bumpalo::Bump,
18 source: &'src str,
19) -> ParseResult<'arena, 'src> {
20 let mut parser = parser::Parser::new(arena, source);
21 let program = parser.parse_program();
22 ParseResult {
23 program,
24 errors: parser.into_errors(),
25 }
26}