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