devalang_core/core/parser/handler/identifier/
sleep.rs1use 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(); 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}