Skip to main content

php_rs_parser/
lib.rs

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}