rl_lang/parser/statements/
while_statement.rs1use crate::{
10 ast::statements::{Statement, StatementKind},
11 lexer::tokentypes::TokenType,
12 parser::parser_logic::Parser,
13 utils::{errors::Error, span::Span},
14};
15
16impl Parser {
17 pub fn parse_while(&mut self, start: Span) -> Result<Statement, Error> {
25 while self.match_type(&[TokenType::Newline]) {}
26 let condition = self.parse_expression()?;
27 while self.match_type(&[TokenType::Newline]) {}
28 let body = self.parse_block()?;
29 let span = start.join(self.previous_span());
30 Ok(Statement::new(
31 StatementKind::While { condition, body },
32 span,
33 ))
34 }
35}