1mod ast;
2mod parser;
3
4pub use crate::ast::*;
5pub use crate::parser::Parser;
6use pest::Parser as PestParser;
7
8#[derive(pest_derive::Parser)]
9#[grammar = "sql.pest"]
10pub struct SqlParser;
11
12pub fn parse_stmts(input: &str) -> Result<Vec<Stmt>, pest::error::Error<Rule>> {
14 let pairs = SqlParser::parse(Rule::stmts_end, input)?;
15 Ok(pairs.map(|p| Stmt::parse(p)).collect())
16}
17
18pub fn parse_stmt(input: &str) -> Result<Stmt, pest::error::Error<Rule>> {
19 let pairs = SqlParser::parse(Rule::stmt_end, input)?;
20 let pair = pairs.into_iter().next().unwrap();
21 Ok(Stmt::parse(pair))
22}