diff --git a/params.toml b/params.toml index ba8508e..f360d24 100644 --- a/params.toml +++ b/params.toml @@ -2,7 +2,7 @@ gen_decl = 0.7 gen_subroutine = 0.0 gen_typedef = 0.0 - end_generation = 0.3 + end_generation = 0.1 [statements] [statements.gen_assign] diff --git a/src/ast.rs b/src/ast.rs index bac3b71..5f45bc8 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -12,6 +12,13 @@ pub trait Statement: AstNode {} pub enum Quantifier { Const, Var, + Unset, +} + +impl Default for Quantifier { + fn default() -> Self { + Quantifier::Unset + } } impl ToString for Quantifier { @@ -19,6 +26,7 @@ impl ToString for Quantifier { match *self { Quantifier::Const => "const", Quantifier::Var => "var", + Quantifier::Unset => panic!("Found unset quantifier"), }.to_string() } } @@ -28,6 +36,13 @@ pub enum BaseType { Int, Real, Never, + Unset, +} + +impl Default for BaseType { + fn default() -> Self { + BaseType::Unset + } } impl ToString for BaseType { @@ -37,6 +52,7 @@ impl ToString for BaseType { BaseType::Int => "integer", BaseType::Real => "real", BaseType::Never => panic!("Attempting to get string of never type"), + BaseType::Unset => panic!("Found unset basetype"), }.to_string() } } @@ -47,7 +63,7 @@ pub struct GlobalBlock { } impl GlobalBlock { - pub fn push_node(&mut self, node: Box) { + pub fn push(&mut self, node: Box) { self.statements.push(node); } } @@ -71,7 +87,7 @@ pub struct Block { } impl Block { - pub fn push_node(&mut self, node: Box) { + pub fn push(&mut self, node: Box) { self.statements.push(node); } } @@ -94,6 +110,7 @@ impl AstNode for Block {} impl Statement for Block {} +#[derive(Debug, Clone)] pub enum Literal { Int(i32), Real(f32), @@ -119,7 +136,7 @@ impl Expr for Literal { } } -#[derive(Builder)] +#[derive(Default, Builder)] pub struct Declaration { variable: Variable, assn: T, @@ -146,7 +163,8 @@ impl AstNode for Declaration {} impl Statement for Declaration {} -#[derive(Clone, Builder)] +#[derive(Clone, Default, Builder)] +#[builder(setter(into))] pub struct Variable { type_: BaseType, quantifer: Quantifier, @@ -167,6 +185,7 @@ impl Expr for Variable { } } +#[derive(Debug, Clone)] pub enum BinaryOperator { Add(L, R),