devalang_core/core/parser/handler/identifier/
sleep.rs

1use crate::core::{
2    lexer::token::{ Token, TokenKind },
3    parser::{ statement::{ Statement, StatementKind }, driver::Parser },
4    shared::value::Value,
5    store::global::GlobalStore,
6};
7
8pub fn parse_sleep_token(
9    parser: &mut Parser,
10    current_token: Token,
11    _global_store: &mut GlobalStore
12) -> Statement {
13    parser.advance(); // consume "sleep"
14
15    let duration = if let Some(token) = parser.peek_clone() {
16        if token.kind == TokenKind::Number {
17            parser.advance();
18            token.lexeme.parse().unwrap_or(0.0)
19        } else {
20            return Statement::error(token, "Expected number after 'sleep'".to_string());
21        }
22    } else {
23        return Statement::error(current_token, "Expected number after 'sleep'".to_string());
24    };
25
26    return Statement {
27        kind: StatementKind::Sleep,
28        value: Value::Number(duration),
29        indent: current_token.indent,
30        line: current_token.line,
31        column: current_token.column,
32    };
33}