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