elemental/parser/literal_parselet.rs
1//! A parselet for numeric literals.
2
3use crate::parselet_utils::*;
4
5pub struct LiteralParselet;
6
7impl PrefixParselet for LiteralParselet {
8 fn parse(&self, _parser: &Parser, _tokenizer: &mut Tokenizer, token: Token) -> Expression {
9 // Note: it's ok to use `Result::unwrap()` here because we checked that
10 // the token's value parses to valid data during tokenization.
11 match token.get_class() {
12 TokenClass::Int => Expression::Int (str::parse::<i64>(&token.get_value()).unwrap()),
13 TokenClass::Float => Expression::Float (str::parse::<f64>(&token.get_value()).unwrap()),
14 _ => unreachable!(),
15 }
16 }
17}