1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
use crate::nodes::{ Expression, FieldExpression, IndexExpression, }; #[derive(Clone, Debug, PartialEq, Eq)] pub enum Variable { Identifier(String), Field(Box<FieldExpression>), Index(Box<IndexExpression>), } impl Variable { pub fn new<S: Into<String>>(name: S) -> Self { Self::Identifier(name.into()) } } #[derive(Clone, Debug, PartialEq, Eq)] pub struct AssignStatement { variables: Vec<Variable>, values: Vec<Expression>, } impl AssignStatement { pub fn new(variables: Vec<Variable>, values: Vec<Expression>) -> Self { Self { variables, values, } } #[inline] pub fn get_variables(&self) -> &Vec<Variable> { &self.variables } #[inline] pub fn get_values(&self) -> &Vec<Expression> { &self.values } #[inline] pub fn mutate_variables(&mut self) -> &mut Vec<Variable> { &mut self.variables } #[inline] pub fn mutate_values(&mut self) -> &mut Vec<Expression> { &mut self.values } }