anthem-rs/src/utils/variables_in_terms.rs

22 lines
677 B
Rust

pub(crate) fn term_contains_variable(term: &foliage::Term,
variable_declaration: &foliage::VariableDeclaration)
-> bool
{
use foliage::Term;
match term
{
Term::BinaryOperation(binary_operation) =>
term_contains_variable(&binary_operation.left, variable_declaration)
|| term_contains_variable(&binary_operation.right, variable_declaration),
Term::Boolean(_)
| Term::Function(_)
| Term::Integer(_)
| Term::SpecialInteger(_)
| Term::String(_) => false,
Term::UnaryOperation(unary_operation) =>
term_contains_variable(&unary_operation.argument, variable_declaration),
Term::Variable(variable) => *variable.declaration == *variable_declaration,
}
}