pub fn parse_operator(input: &str) -> IResult<&str, Operator>Expand description
Parse comparison operators for magic rules
Supports both symbolic and text representations of operators:
=or==for equality!=or<>for inequality<for less-than>for greater-than<=for less-than-or-equal>=for greater-than-or-equal&for bitwise AND^for bitwise XOR~for bitwise NOTxfor any value (always matches)
§Examples
use libmagic_rs::parser::grammar::parse_operator;
use libmagic_rs::parser::ast::Operator;
assert_eq!(parse_operator("="), Ok(("", Operator::Equal)));
assert_eq!(parse_operator("=="), Ok(("", Operator::Equal)));
assert_eq!(parse_operator("!="), Ok(("", Operator::NotEqual)));
assert_eq!(parse_operator("<>"), Ok(("", Operator::NotEqual)));
assert_eq!(parse_operator("<"), Ok(("", Operator::LessThan)));
assert_eq!(parse_operator(">"), Ok(("", Operator::GreaterThan)));
assert_eq!(parse_operator("<="), Ok(("", Operator::LessEqual)));
assert_eq!(parse_operator(">="), Ok(("", Operator::GreaterEqual)));
assert_eq!(parse_operator("&"), Ok(("", Operator::BitwiseAnd)));
assert_eq!(parse_operator("^"), Ok(("", Operator::BitwiseXor)));
assert_eq!(parse_operator("~"), Ok(("", Operator::BitwiseNot)));
assert_eq!(parse_operator("x"), Ok(("", Operator::AnyValue)));§Errors
Returns a nom parsing error if:
- Input does not start with a recognized operator symbol
- Input is empty or contains no valid operator
- Operator syntax is incomplete (e.g., just
!without=)