ast: rename Type to Primitive

Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
2023-07-30 01:51:13 +05:30
parent 589fa73d7c
commit bcc3b29fc5

View File

@@ -1,16 +1,7 @@
/// A very naive AST definition using recursive enums /// A very naive AST definition using recursive enums
/// See the parser for implementation /// See the parser for implementation
use std::rc::Rc;
/// Primitives use std::rc::Rc;
///
/// TODO: add arrays and pointers maybe
#[derive(Debug)]
pub enum Type {
Int,
Float,
Char,
}
pub type Parent = Vec<Entity>; pub type Parent = Vec<Entity>;
@@ -54,9 +45,9 @@ pub enum ClassChildren {
#[derive(Debug)] #[derive(Debug)]
pub struct Fn { pub struct Fn {
pub name: Rc<str>, pub name: Rc<str>,
pub return_typ: Option<Type>, pub return_typ: Option<Primitive>,
pub params: Vec<Rc<str>>, pub params: Vec<(Rc<str>, Primitive)>,
pub block: Vec<Statement>, pub children: Vec<Statement>,
} }
#[derive(Debug)] #[derive(Debug)]
@@ -69,7 +60,7 @@ pub enum Statement {
#[derive(Debug)] #[derive(Debug)]
pub struct Let { pub struct Let {
pub name: Rc<str>, pub name: Rc<str>,
pub typ: Type, pub typ: Primitive,
pub expr: Option<Expr>, pub expr: Option<Expr>,
} }
@@ -86,3 +77,13 @@ pub enum Expr {
Break, Break,
Continue, Continue,
} }
/// Primitives
///
/// TODO: add arrays and pointers maybe
#[derive(Debug)]
pub enum Primitive {
Int,
Float,
Char,
}