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