magc 0.8.0

The Mag Language Compiler
Documentation
use crate::parser::{Parser, ParserResult, PrefixParselet};

use crate::types::{Expression, ExpressionKind, Token, TokenKind};

/// Parse a literal expression like `"Mike"`, `27`, `3.141`, `true`, or `false`.
pub struct LiteralParselet;

impl PrefixParselet for LiteralParselet {
    fn parse(&self, _parser: &mut Parser, token: Token) -> ParserResult {
        let kind = match token.kind {
            TokenKind::Literal(literal) => ExpressionKind::Literal(literal),
            _ => unreachable!(),
        };

        Ok(Expression {
            kind,

            start_pos: token.start_pos,
            end_pos: token.end_pos,
        })
    }
}