rest-sql 0.3.0

RSQL/FIQL filter parser and validator for REST APIs — parse, validate, compile to native DB queries
Documentation
mod grammar;
mod lexer;
pub mod span;
pub mod token;

use crate::ast::Ast;
use crate::error::ParseError;

/// Parse an RSQL/FIQL filter string into an unvalidated AST.
///
/// Two-pass pipeline:
///   1. `lexer::tokenize`       — semantic scan → `Vec<Spanned>` (literals typed at lex time)
///   2. `grammar::parse_tokens` — recursive descent on the token stream → `Ast`
///
/// On failure, returns `ParseError::At` with line, column, source snippet, and
/// a caret underline — ready to display directly to API consumers.
pub fn parse(source: &str) -> Result<Ast, ParseError> {
    let tokens = lexer::tokenize(source)?;
    grammar::parse_tokens(&tokens, source)
}