proof_of_sql_parser/
lib.rs

1#![doc = include_str!("../README.md")]
2#![no_std]
3#![cfg_attr(test, expect(clippy::missing_panics_doc))]
4extern crate alloc;
5
6/// Module for handling an intermediate timestamp type received from the lexer.
7pub mod posql_time;
8#[macro_use]
9extern crate lalrpop_util;
10
11pub mod intermediate_ast;
12
13#[cfg(test)]
14mod intermediate_ast_tests;
15
16/// Shortcuts to construct intermediate AST nodes.
17pub mod utility;
18
19/// TODO: add docs
20pub(crate) mod select_statement;
21pub use select_statement::SelectStatement;
22
23/// Error definitions for proof-of-sql-parser
24pub mod error;
25pub use error::ParseError;
26pub(crate) use error::ParseResult;
27
28/// TODO: add docs
29pub(crate) mod identifier;
30pub use identifier::Identifier;
31
32pub mod resource_id;
33pub use resource_id::ResourceId;
34
35pub mod sqlparser;
36
37// lalrpop-generated code is not clippy-compliant
38lalrpop_mod!(#[expect(clippy::all, missing_docs, clippy::pedantic, clippy::missing_panics_doc, clippy::allow_attributes, reason = "lalrpop-generated code can not be expected to be clippy-compliant or use expect")] pub sql);
39
40/// Implement [`Deserialize`](serde::Deserialize) through [`FromStr`](core::str::FromStr) to avoid invalid identifiers.
41#[macro_export]
42macro_rules! impl_serde_from_str {
43    ($type:ty) => {
44        impl serde::Serialize for $type {
45            fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
46            where
47                S: serde::Serializer,
48            {
49                serializer.serialize_str(&self.to_string())
50            }
51        }
52        impl<'d> serde::Deserialize<'d> for $type {
53            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
54            where
55                D: serde::Deserializer<'d>,
56            {
57                extern crate alloc;
58                let string = alloc::string::String::deserialize(deserializer)?;
59                <$type>::from_str(&string).map_err(serde::de::Error::custom)
60            }
61        }
62    };
63}