Skip to main content

parse_operator

Function parse_operator 

Source
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 NOT
  • x for 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 =)