ralix 0.2.0

A simple, type-safe, tree walking interpreter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::{Parser, ParserResult, Statement, Token, types::Type};
impl Parser<'_> {
    pub fn parse_type_alias_statement(&mut self) -> ParserResult<Statement> {
        self.expect_ident()?;

        let ident = self.parse_identifier()?;

        self.expect_token(Token::Assign)?;

        let ty = self.parse_type_definition()?;

        self.consume_peek_token(Token::SemiColon);

        self.symbol_table
            .define(ident.clone(), Type::AsValue(ty.clone().into()), true);
        Ok(Statement::Alias { ident, ty })
    }
}