Add all of the code gen, want to show it off

This commit is contained in:
2025-03-27 18:49:17 +02:00
parent f338f07e7d
commit 06d8c1b0f3
33 changed files with 1199 additions and 95 deletions

View File

@@ -1,6 +1,6 @@
use anyhow::Result;
use crate::{common::loc::LocBox, parser::Delimiter, tokeniser::Token};
use crate::{common::loc::LocBox, error, logger::log, parser::Delimiter, tokeniser::Token};
use super::{ast::{typ::Type, TokenType}, expr::parse_expr, utils, Keyword, Punctuation};
@@ -25,15 +25,15 @@ pub fn parse_type(tokens: &mut Vec<Token>) -> Result<LocBox<Type>> {
}
let itm_typ = parse_type(tokens)?;
if let Some(_) = utils::check_consume(tokens, TokenType::Punct(Punctuation::Semi)) {
let count = parse_expr(tokens, 0, false)?.unwrap();
typ = Type::ArrayRepeat {
inner: Box::new(itm_typ.inner().clone()),
count
}
let count = parse_expr(tokens, 0, false)?.unwrap();
typ = Type::SizedArray {
inner: Box::new(itm_typ.inner().clone()),
count
};
} else {
typ = Type::Array {
inner: Box::new(itm_typ.inner().clone()),
}
typ = Type::UnsizedArray {
inner: Box::new(itm_typ.inner().clone()),
};
}
_ = utils::check_consume_or_err(tokens, TokenType::Delim(Delimiter::SquareR), "")?;
} else {