use crate::ast::*; pub fn parse(arg: &str) -> Value { let token = arg.trim(); parse_number(token) .or(parse_bool(token)) .or(parse_symbol(token)) .unwrap() } fn parse_symbol(token: &str) -> Result { Ok(Value::Sym(token.to_string())) } fn parse_bool(token: &str) -> Result { token .parse::() .map(Value::Bool) .map_err(|e| e.to_string()) } fn parse_number(token: &str) -> Result { token .parse::() .map(Value::Num) .map_err(|e| e.to_string()) }