From 73ef20c4aa3ef6699f7a7203a911eb4c4dda756a Mon Sep 17 00:00:00 2001 From: YannAhlgrim Date: Thu, 14 May 2026 18:49:56 +0200 Subject: [PATCH] init ast --- src/ast/mod.rs | 38 ++++++++++++++++++++++++++++++++++++++ src/main.rs | 1 + 2 files changed, 39 insertions(+) create mode 100644 src/ast/mod.rs diff --git a/src/ast/mod.rs b/src/ast/mod.rs new file mode 100644 index 0000000..2196ca2 --- /dev/null +++ b/src/ast/mod.rs @@ -0,0 +1,38 @@ +trait NodeTrait { + fn token_literal(&self) -> String; +} + +trait StatementTrait: NodeTrait { + fn statement_node(&self); +} + +trait ExpressionTrait: NodeTrait { + fn expression_node(&self); +} + +struct Statement { + // +} +impl NodeTrait for Statement { + fn token_literal(&self) -> String { + todo!() + } +} + +impl StatementTrait for Statement { + fn statement_node(&self) {} +} + +struct Program { + statements: Vec, +} + +impl NodeTrait for Program { + fn token_literal(&self) -> String { + if self.statements.is_empty() { + self.statements[0].token_literal() + } else { + String::new() + } + } +} diff --git a/src/main.rs b/src/main.rs index db5320b..0e0430b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +mod ast; mod lexer; mod repl; mod token;