Parse SQL into an AST
This crate provides an lexer and parser that can parse SQL into an Abstract Syntax Tree (AST). Currently primarily focused on MariaDB/Mysql.
Example code: ```rust use sqlparse::{SQLDialect, SQLArguments, ParseOptions, parsestatement};
let options = ParseOptions::new() .dialect(SQLDialect::MariaDB) .arguments(SQLArguments::QuestionMark) .warnunquotedidentifiers(true);
let mut issues = Vec::new();
let sql = "SELECT monkey
,
FROM t1
LEFT JOIN t2
ON t2
.id
= t1.two
WHERE t1
.id
= ?";
let ast = parse_statement(sql, &mut issues, &options);
println!("Issues: {:#?}", issues); println!("AST: {:#?}", ast); ```
Spanned
that yields a byte span within the code. This means that errors and warnings generated from the parsing can be precented to the user in a nice ways. Also users of the AST can generate more issues that can also similarly be presented nicely.#![forbid(unsafe_code)]
to guarantee no unsafe code.O(1)
shift reduce mechanism.