Skip to main content

php_rs_parser/
lib.rs

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}