maid-lang 1.0.8

Maid Programming Language
Documentation
use crate::{
    lexing::{position::Position, token::Token},
    nodes::ast_node::AstNode,
};

#[derive(Debug, Clone)]
pub struct ForNode {
    pub var_name_token: Token,
    pub start_value_node: Box<AstNode>,
    pub end_value_node: Box<AstNode>,
    pub step_value_node: Option<Box<AstNode>>,
    pub body_node: Box<AstNode>,
    pub pos_start: Option<Position>,
    pub pos_end: Option<Position>,
}

impl ForNode {
    pub fn new(
        var_name_token: Token,
        start_value_node: Box<AstNode>,
        end_value_node: Box<AstNode>,
        step_value_node: Option<Box<AstNode>>,
        body_node: Box<AstNode>,
    ) -> Self {
        Self {
            var_name_token: var_name_token.to_owned(),
            start_value_node,
            end_value_node,
            step_value_node,
            body_node,
            pos_start: var_name_token.pos_start,
            pos_end: var_name_token.pos_end,
        }
    }
}