sqlexpr-congo-rust 1.0.0

Parser for SqlExprParser - Generated by CongoCC
Documentation
//! SqlExprParser - Generated by CongoCC Parser Generator
//!
//! This parser was automatically generated from: SqlExprParser.ccc
//! Do not edit this file directly. Regenerate from the grammar instead.
//!
//! # Features
//!
//! - **Arena-based allocation**: All AST nodes and tokens are stored in a central arena
//! - **Type-safe indices**: `NodeId` and `TokenId` provide safe references without lifetimes
//! - **Result-based errors**: All parsing operations return `Result<T, ParseError>`
//! - **Location tracking**: Errors include line/column information for better diagnostics
//!
//! # Example
//!
//! ```ignore
//! use parser::*;
//!
//! fn main() -> Result<(), ParseError> {
//!     let input = "your input here".to_string();
//!     let mut parser = Parser::new(input)?;
//!     // parse() returns the root NodeId of the AST
//!     let root = parser.parse()?;
//!     // Access AST through the arena, with original input for pretty printing
//!     println!("{}", parser.arena().pretty_print(root, 0, parser.input()));
//!     Ok(())
//! }
//! ```

#![deny(unsafe_code)]
#![warn(missing_docs)]
#![allow(dead_code)]
#![allow(unused_variables)]

mod error;
mod tokens;
mod arena;
mod lexer;
mod parser;
mod evaluator;
mod visitor;

// Re-export public API
pub use error::{ParseError, ParseResult};
pub use tokens::{Token, TokenType, LexicalState, TokenSource};
pub use arena::{Arena, NodeId, TokenId, AstNode};
pub use lexer::Lexer;
pub use parser::Parser;
pub use visitor::VisitControl;

// Re-export AST node types and operator enums
pub use arena::JmsSelectorNode;
pub use arena::OrExpressionNode;
pub use arena::AndExpressionNode;
pub use arena::EqualityExpressionNode;
pub use arena::ComparisonExpressionNode;
pub use arena::AddExpressionNode;
pub use arena::MultExprNode;
pub use arena::UnaryExprNode;
pub use arena::PrimaryExprNode;
pub use arena::LiteralNode;
pub use arena::StringLiteralNode;
pub use arena::VariableNode;
pub use arena::AddOp;
pub use arena::MultExprOp;
pub use arena::EqualityOp;
pub use arena::ComparisonOp;
pub use arena::UnaryOp;
pub use evaluator::{evaluate, RuntimeValue, EvalError};