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}