From e39505931b05be321ee2b04c41a9739f00c19208 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Fri, 14 Feb 2025 09:34:48 +1300 Subject: Implement semantic parsing --- src/environment.rs | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) (limited to 'src/environment.rs') diff --git a/src/environment.rs b/src/environment.rs index d88e1b5..2bb3f5b 100644 --- a/src/environment.rs +++ b/src/environment.rs @@ -1,4 +1,5 @@ use crate::*; +use semantic::*; use std::collections::HashMap; @@ -32,32 +33,24 @@ pub struct Scope { } impl Scope { - pub fn get_integer(&self, name: &str, environment: &Environment) -> Result { - use IntegerDefinition as IntDef; - if let Some(definition) = self.definitions.get(name) { - if let Definition::Integer(integer) = definition { - match integer { - IntDef::Literal(value) => return Ok(*value), - IntDef::ConstantExpression(expr) => match expr.evaluate(environment) { - Ok(_) | Err(_) => todo!(), - }, - }; - } - } - return Err(()); + pub fn get_integer(&self, _name: &str, _environment: &Environment) -> Result { + todo!() + // use semantic::IntegerDefinition as IntDef; + + // if let Some(Definition { variant, ..}) = self.definitions.get(name) { + // if let IntegerDefinition::Integer(integer) = definition { + // match integer { + // IntDef::Literal(value) => return Ok(*value), + // IntDef::ConstantExpression(expr) => match expr.evaluate(environment) { + // Ok(_) | Err(_) => todo!(), + // }, + // }; + // } + // } + // return Err(()); } pub fn get_block(&self, _name: &str, _environment: &Environment) -> Result { todo!() } } - -pub enum Definition { - Integer(IntegerDefinition), - Block, -} - -pub enum IntegerDefinition { - Literal(usize), - ConstantExpression(ConstantExpression), -} -- cgit v1.2.3-70-g09d2