Skip to main content

sqlexpr_rust/
lib.rs

1//! SQL Expression Parser Library
2//!
3//! This library provides a parser for SQL boolean expressions following the
4//! grammar defined in SqlExprParser-EBNF-Final.ebnf
5//!
6//! The parser enforces type safety at the grammar level: all top-level expressions
7//! must evaluate to boolean values, while arithmetic and value expressions can only
8//! appear as operands to relational operators.
9
10pub mod ast;
11pub mod lexer;
12pub mod parser;
13pub mod evaluator;
14
15// Re-export main types for convenient access
16pub use ast::{
17    BooleanExpr, RelationalExpr, ValueExpr, ValueLiteral,
18    EqualityOp, ComparisonOp,
19};
20pub use parser::{parse, ParseError};
21pub use evaluator::{evaluate, RuntimeValue, EvalError};
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26
27    #[test]
28    fn test_basic_parse() {
29        let result = parse("x > 5");
30        assert!(result.is_ok());
31    }
32
33    #[test]
34    fn test_complex_expression() {
35        let result = parse("(a + b) > 10 AND name LIKE '%test%'");
36        assert!(result.is_ok());
37    }
38}