whereexpr 0.1.6

A fast, expressive rule-based filtering engine for Rust that evaluates boolean expressions over any data structure
Documentation
mod tokenizer;
mod tokens_validator;
mod redundancy_optimizations;
mod token;
mod parser;
#[cfg(test)]
mod tests;

use self::token::Token;
use self::token::TokenKind;
use self::token::TokenSpan;
use crate::condition_list::ConditionList;

pub(crate) fn parse(input: &str, conditions: &ConditionList) -> Result<crate::expression::EvaluationNode, crate::Error> {
    let mut tokens = tokenizer::tokenize(input)?;
    tokens_validator::validate(&mut tokens, input, conditions)?;
    redundancy_optimizations::reduce_parentheses(&mut tokens);
    let evaluation_node = parser::parse(&tokens);
    Ok(evaluation_node)
}