diff options
| author | Mel <einebeere@gmail.com> | 2021-10-21 23:46:01 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2021-10-21 23:46:01 +0200 |
| commit | cff714c07e5e2c0f11c121504500a554d60c08cc (patch) | |
| tree | 6c9e98696530b2661343942948b9f1a50a8665e7 /src/parse/ast/value.rs | |
| parent | a4980b8dbf1394c2b302f1de7c72d2264426b86e (diff) | |
| download | rabbithole-cff714c07e5e2c0f11c121504500a554d60c08cc.tar.zst rabbithole-cff714c07e5e2c0f11c121504500a554d60c08cc.zip | |
Implement program walking.
Diffstat (limited to 'src/parse/ast/value.rs')
| -rw-r--r-- | src/parse/ast/value.rs | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/src/parse/ast/value.rs b/src/parse/ast/value.rs deleted file mode 100644 index 263cb58..0000000 --- a/src/parse/ast/value.rs +++ /dev/null @@ -1,106 +0,0 @@ -use crate::lex::token::{Token, TokenVariant::*}; - -use super::{expression::Expression, statement::Statement}; - -#[derive(Debug)] -pub enum BinaryOperator { - Plus, - Minus, - Star, - Slash, - Eq, - Neq, - Gt, - Gte, - Lt, - Lte, - Assign, - ConstAssign, - Dot, -} - -impl BinaryOperator { - pub fn from_token(token: Token) -> Self { - match token.variant { - OpPlus => Self::Plus, - OpMinus => Self::Minus, - OpStar => Self::Star, - OpSlash => Self::Slash, - OpEq => Self::Eq, - OpNeq => Self::Neq, - OpLt => Self::Lt, - OpGt => Self::Gt, - OpLte => Self::Lte, - OpGte => Self::Gte, - Assign => Self::Assign, - ConstAssign => Self::ConstAssign, - Dot => Self::Dot, - _ => panic!("Can't create binary operator from '{:?}'.", token.variant) - } - } -} - -#[derive(Debug)] -pub enum UnaryOperator { - Plus, - Minus, - Not, -} - -impl UnaryOperator { - pub fn from_token(token: Token) -> Self { - match token.variant { - OpPlus => Self::Plus, - OpMinus => Self::Minus, - OpNot => Self::Not, - _ => panic!("Can't create unary operator from '{:?}'.", token.variant) - } - } -} - -#[derive(Debug)] -pub enum Literal { - Int(u32), - Float(f32), - Str(String), -} - -impl Literal { - pub fn from_token(token: Token) -> Self { - match token.variant { - Int(int) => Self::Int(int), - Float(float) => Self::Float(float), - Str(string) => Self::Str(string), - _ => panic!("Can't create literal from '{:?}'.", token.variant) - } - } -} - -pub type Identifier = String; - -// If the contraint is None the type will have to be inferred -// during analysis. -#[derive(Debug)] -pub struct TypedIdentifier { - pub identifier: Identifier, - pub type_constraint: Option<Identifier>, -} - -#[derive(Debug)] -pub struct FnHeader { - pub has_self_receiver: bool, - pub parameters: Vec<TypedIdentifier>, - pub return_type: Option<Identifier>, -} - -#[derive(Debug)] -pub struct Block { - pub statements: Vec<Statement>, - pub tail_expression: Option<Expression>, -} - -#[derive(Debug)] -pub struct ConditionalBlock { - pub condition: Expression, - pub block: Block, -} |
