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

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