diff --git a/src/ast/mod.rs b/src/ast/mod.rs new file mode 100644 index 0000000..1df0230 --- /dev/null +++ b/src/ast/mod.rs @@ -0,0 +1,61 @@ +mod expr; + +use expr::{ + Expr, + Literal, + Variable, + BinaryOperator, +}; + +pub trait GazType { + fn get_base(&self) -> BaseType; +} + +#[derive(Copy, Clone)] +pub enum Quantifier { + Const, + Var, + Unset, +} + +impl Default for Quantifier { + fn default() -> Self { + Quantifier::Unset + } +} + +impl ToString for Quantifier { + fn to_string(&self) -> String { + match *self { + Quantifier::Const => "const", + Quantifier::Var => "var", + Quantifier::Unset => panic!("Found unset quantifier"), + }.to_string() + } +} + +#[derive(Copy, Clone)] +pub enum BaseType { + Int, + Real, + Never, + Unset, +} + +impl Default for BaseType { + fn default() -> Self { + BaseType::Unset + } +} + +impl ToString for BaseType { + fn to_string(&self) -> String { + // TODO: Use typedefs when possible. Might fit better on a high level node + match *self { + BaseType::Int => "integer", + BaseType::Real => "real", + BaseType::Never => panic!("Attempting to get string of never type"), + BaseType::Unset => panic!("Found unset basetype"), + }.to_string() + } +} diff --git a/src/main.rs b/src/main.rs index 692f803..33d709f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,11 +5,11 @@ use clap::Parser; extern crate derive_builder; mod ast; -mod ast_builder; +//mod ast_builder; mod params; use params::Params; -use ast_builder::AstBuilder; +//use ast_builder::AstBuilder; #[derive(Parser)] #[command(author, version, about, long_about = None)] @@ -20,9 +20,9 @@ struct Args { fn main() { let args = Args::parse(); let params = Params::parse(&args.config); - let mut builder = AstBuilder::from(params); + //let mut builder = AstBuilder::from(params); - builder.generate(); + //builder.generate(); - println!("{}", builder.to_string()); + //println!("{}", builder.to_string()); }