ripex 0.2.0

Multi-language structural parsing and fact extraction.
Documentation
pub mod declarations;
pub mod expressions;
pub mod recovery;
pub mod state;
pub mod statements;

pub use state::Parser;

use super::ast::{Program, Stmt};
use crate::span::Span;

pub fn parse_program(source: &str) -> (Program, Vec<crate::diagnostics::ParseError>) {
    let mut parser = Parser::new(source);
    let start = parser.token_start();
    let decls = parser.parse_compilation_unit();
    let program = Program {
        decls,
        span: Span::new(start, parser.prev_end()),
    };
    (program, parser.errors)
}

pub fn parse_script(source: &str) -> (Vec<Stmt>, Vec<crate::diagnostics::ParseError>) {
    let mut parser = Parser::new(source);
    let decls = parser.parse_compilation_unit();
    (decls, parser.errors)
}